Internshala Scraper
Scrape Internshala internships and fresher jobs by keyword, city, category, stipend or work-from-home.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
searchQueries,listing,categories(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Inputs
| Field | What it does | Type |
|---|---|---|
searchQueries | One or more searches, exactly as you would type them into Internshala's search box: a skill ("python"), a role ("graphic design"), or a company name ("Infosys"). Each keyword is walked separately, so ["python", "data science"] runs two searches. Leave empty to take everything that matches the filters below. | array |
listing | Internshala runs two boards. Internships (7,007 live on 2026-08-08) are short placements with a monthly stipend. Jobs (8,663 live) are full-time fresher and early-career roles with an annual salary. "Both" walks the two in turn and tags every row with a "type" field. | string |
categories | Internshala's own categories, written the way the site writes them: "marketing", "computer science", "human resources", "content writing", "data science", "finance", "graphic design", "web development". Several categories are combined with OR. | array |
cities | Indian cities, for example "bangalore", "delhi", "mumbai", "pune", "hyderabad", "chennai", "kolkata", "gurgaon". Several cities are combined with OR. Leave empty for the whole country. | array |
workFromHome | Only remote postings. Measured on 2026-08-08: 2,154 of 7,007 internships and 1,456 of 8,663 jobs are work-from-home. | boolean |
partTime | Only part-time internships — 1,449 of 7,007 on 2026-08-08. Ignored on the jobs board. | boolean |
withJobOffer | Internshala's PPO filter: internships with a pre-placement offer. 1,223 of 7,007 on 2026-08-08. Those rows also carry the offer text, for example "Job offer upto ₹ 2.4LPA post internship". | boolean |
minStipend | Only internships paying at least this much per month. Internshala's own slider stops at 12,000, and anything above that is ignored by the site, so the value is clamped there. Every row also carries stipendMin, so you can filter harder afterwards. | integer |
maxDurationMonths | Only internships that last at most this many months. It is cumulative: 1 gave 610 results, 2 gave 1,319, 6 gave 6,975 on 2026-08-08. | integer |
minSalary | Only jobs paying at least this much per year. 600,000 cut the board from 8,663 to 2,281 on 2026-08-08. Ignored on the internships board. | integer |
experience | Internshala's own experience filter for the jobs board. The numbered options are cumulative caps ("1 year" returned 6,092 jobs, "2 years" 6,648); "more than 5 years" is a separate senior bucket and returned 146. | string |
fresherOnly | Only jobs open to candidates with no work experience — 4,179 of 8,663 on 2026-08-08. Ignored on the internships board. | boolean |
includeInternshipsInJobs | Internshala's "also show internships" toggle on the jobs board. It merges the two corpora into one walk — 14,447 rows on 2026-08-08 instead of 8,663. Ignored on the internships board. | boolean |
internationalOnly | Internshala's international board: internships based outside India. It is small — 85 live on 2026-08-08. | boolean |
forWomen | Internshala's women-only board: 3,379 internships on 2026-08-08. Combines with the category and city filters. | boolean |
earlyApplicant | Only internships with few applications so far — 1,924 of 7,007 on 2026-08-08. | boolean |
fastResponse | Internshala's fast-response badge: employers who review applications quickly. 4,061 of 7,007 on 2026-08-08. | boolean |
startingAfter | Only internships whose start date is on or after this day, written as YYYY-MM-DD. | string |
startUrls | Paste Internshala URLs instead of building a search. Works with a listing page (https://internshala.com/internships/computer-science-internship-in-bangalore/) and with a single posting (https://internshala.com/internship/detail/...). Listing URLs are walked page by page. | array |
includeDetails | Reads each posting's own page. That is where the apply-by date, the number of openings, the exact posted date (instead of "2 days ago"), the start date, the perks, the eligibility rules, the company's Internshala profile and website, the state, and the full description come from. Measured at 84 ms per posting at concurrency 10. Turn it off for a listing-only run: you keep title, company, city, stipend, duration, skills, the description snippet and an approximate posted date. | boolean |
detailConcurrency | How many posting pages to read at once when "Open each posting" is on. 10 is measured as comfortable; Internshala did not rate-limit at that level. | integer |
maxItems | Stop after this many postings. One search runs out at Internshala's own last page — the unfiltered internships board ends at page 176 (7,007 rows) and returns nothing beyond it, so use several keywords, cities or categories to go wider. | integer |
egressMode | Leave on automatic. Internshala answers the plain Apify container address on every request we measured, and that route is also the fastest (430 ms per page against 1,200 ms through a proxy). The other options exist only for debugging. | string |
What you get
A structured dataset — each result includes fields like:
titlecompanyNamelocationLabelstipendTextstipendTypedurationTextpostedAtapplyByopeningsisWorkFromHometypeurlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Job Market Scrapers
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
XING Jobs Scraper
Scrape XING jobs in Germany, Austria and Switzerland by keyword, city, remote or hybrid.
ZipRecruiter Scraper
Scrape ZipRecruiter jobs by keyword, city, remote, employment type, salary or posting age.
LinkedIn Company Employees Scraper
Scrape LinkedIn company employees without a login or cookies. Company URL or name in; employee name, headline, job title, location and profile URL out.
Indeed Jobs Scraper
Scrape Indeed jobs by keyword and location across 11 countries. Get title, company, salary, remote flag, posted date, and apply URL as structured data.
Glassdoor Company Reviews Scraper
Scrape Glassdoor company reviews and ratings by company name or URL. Get pros, cons, recommend rate and CEO approval as rows for analysis.
StepStone Jobs Scraper
Scrape StepStone jobs across Germany, Austria, UK, NL and Belgium by keyword and location. Get company, salary, posted date, remote flag and apply links.
Where this tool sits
- Categories
- Job Market Scrapers
Internshala Scraper — internships and fresher jobs in India
Pulls live postings from Internshala, India's biggest internship and entry-level job board. No login, no cookies, no browser.
Every row comes back with the role, the company, the city, the stipend or salary with a flag saying what kind of figure it is, the duration, the apply-by date, the number of openings, the exact posted date, a work-from-home flag, the required skills, the perks and the eligibility rules.
On 2026-08-08 the site had 7,007 live internships and 8,663 live jobs. Both boards are reachable, in full, page by page.
---
What you get per posting
| Field | Example | Where it comes from |
|---|---|---|
title | Front End Development | listing card |
companyName, companyUrl, companyLogo | SciAstra Education Private Limited | card + posting page |
locations, locationLabel, region | ["Pune","Mumbai","Virar"], Maharashtra | card + posting page |
isWorkFromHome, isHybrid, isPartTime | true / false | card + employmentType |
stipendText | ₹ 12,000 - 17,000 /month | card |
stipendMin, stipendMax, stipendCurrency, stipendPeriod | 12000, 17000, INR, MONTH | parsed |
stipendType | range, fixed, unpaid, lump-sum, performance-based | parsed |
stipendIsEstimate | always false — see below | — |
durationText, durationMonths | 6 Months, 6 | card |
experienceText, experienceYears | 1 year(s), 1 | jobs board |
skills | ["HTML","React","Node.js"] | card + posting page |
postedRelative, postedAt, postedAtIsExact | 2 days ago, 2026-08-06, true | posting page JSON-LD |
applyByText, applyBy | 5 Sep' 26, 2026-09-05 | posting page |
openings | 3 | posting page |
startDateText, startsImmediately | Immediately, true | posting page |
perks | ["Certificate","Letter of recommendation","Job offer"] | posting page |
eligibility | ["are available for duration of 6 months", …] | posting page |
hasJobOfferAfterInternship, jobOfferText | true, Job offer upto ₹ 2.4LPA post internship | card |
industry, employmentType | Engineering, INTERN, FULL_TIME | posting page JSON-LD |
aboutCompany, descriptionText | full text | posting page |
url, id, type, countryCode | internship / job, IN | — |
Three real rows, copied out of live runs:
Mobile App Testing | Shreyans Industries | Bangalore | ₹ 5,000 /month (fixed)
| 1 Month | posted 2026-08-06 | apply by 2026-09-05 | 5 openings
Meta Ads Executive | EMIAC Technologies | Jaipur | ₹ 2,00,000 - 2,40,000 /year (range)
| job, 1 year(s) experience | posted 2026-08-01 | apply by 2026-08-31 | 2 openings
Backend Development | Pledge India Foundation | Work from home | Unpaid (unpaid)
| 2 Weeks | posted 2026-08-07 | apply by 2026-09-06 | 20 openings
---
About the stipend — read this before you trust the number
Internshala mixes several kinds of pay, and a scraper that flattens them into one "stipend" column is lying to you. Every row therefore carries stipendType.
Measured on two real runs of this actor on 2026-08-08 — 1,000 internships and 300 jobs:
stipendType | Internships (n=1,000) | Jobs (n=300) |
|---|---|---|
range (e.g. ₹ 12,000 - 17,000 /month) | 867 (86.7%) | 283 (94.3%) |
fixed (e.g. ₹ 5,000 /month) | 114 (11.4%) | 17 (5.7%) |
unpaid | 16 (1.6%) | 0 |
lump-sum | 2 (0.2%) | 0 |
performance-based | 1 (0.1%) | 0 |
| missing / not stated | 0 | 0 |
An independent 1,050-internship / 530-job sample taken the same day landed within 0.5 points of every one of those figures, so this is the shape of the board, not a lucky page.
Two things follow from that:
1. Every posting states its own pay. There were no blanks in either sample. That is unusual for a job board and it is the main reason this data is worth having. 2. stipendIsEstimate is false on every row, and it always will be. Internshala publishes what the employer typed. It never invents a "salary estimate" the way some Western boards do, so there is no guessed figure hiding in this dataset. Filter on stipendType when you need only hard numbers: range and fixed together are 98.2% of internships and 100% of jobs.
Note that a range is a range. stipendMin and stipendMax differ on 87% of internship rows, so averaging stipendMin alone will understate the market.
---
Searching
You can drive it three ways, and mix them.
Keywords — searchQueries: ["python", "data science"]. Each one is walked separately.
Filters — category, city, work-from-home, part-time, minimum stipend, maximum duration, pre-placement offer, start date, women-only, international, early-applicant, fast-response. On the jobs board: minimum annual salary, experience band, fresher-only, and Internshala's "also show internships" toggle. They compose:
categories: ["computer science"], cities: ["bangalore","mumbai"],
workFromHome: true, maxDurationMonths: 3, minStipend: 5000
Pasted URLs — startUrls accepts any Internshala listing page (https://internshala.com/internships/work-from-home-computer-science-internships/) and any single posting (https://internshala.com/internship/detail/...). Listing URLs are walked page by page from wherever you pasted them.
Measured filter sizes on 2026-08-08, so you know what to expect:
| Filter | Result count |
|---|---|
| everything, internships | 7,007 |
| everything, jobs | 8,663 |
| work from home (internships) | 2,154 |
| work from home (jobs) | 1,456 |
| part time | 1,449 |
| with a job offer afterwards (PPO) | 1,223 |
| internships for women | 3,379 |
| international internships | 85 |
| fresher jobs | 4,179 |
| jobs paying ≥ ₹600,000/year | 2,281 |
keywords: python | 262 |
keywords: python + Bangalore | 163 |
---
Speed and limits
Real runs of this actor, all at the default 1,024 MB:
| Run | Rows | Wall time |
|---|---|---|
searchQueries: ["python"] | 5 | 5 s |
categories: ["computer science"] | 250 | 34 s |
listing: "jobs" | 300 | 47 s |
listing: "both" | 1,000 | 107 s |
cities: ["bangalore"], details off | 200 | 19 s |
- A listing page is one request and returns 40–50 postings. Measured 430 ms per page from the
plain Apify container address; 60 pages in a row took 29.6 s and produced 2,400 rows with zero failures and no rate limiting.
- With Open each posting on (the default), each posting costs one extra request, measured at
84 ms per posting at concurrency 10. That is where applyBy, openings, the exact postedAt, startDateText, perks, eligibility, region and the full description come from.
- A single search runs out at Internshala's own last page. The unfiltered internships board ends at
page 176 (7,007 rows) and returns an empty page after that — there is no hidden ceiling and no silent row clamp. To go wider, use several keywords, cities or categories.
Field coverage, measured
From the 1,000-internship run and the 300-job run, percentage of rows where the field is filled:
| Field | Internships | Jobs |
|---|---|---|
title, companyName, companyUrl, locationLabel, stipendText, stipendMin/Max, skills, descriptionText, url, openings, startDateText, postedAt | 100% | 100% |
durationText | 100% | 12% (jobs rarely have one) |
experienceText | 0% (internships have none) | 100% |
applyBy | 100% | 83% |
applyByText (Internshala's 5 Sep' 26 wording) | 100% | 0% — the jobs board does not print it |
postedAtIsExact | 83% | 83% |
region, industry, employmentType, aboutCompany | 83% | 83% |
eligibility | 83% | 78% |
perks | 78% | 51% |
companyWebsite | 52% | 50% |
jobOfferText (post-internship offer) | 16% | 0% — jobs have no PPO |
What this does not do
- No applicant counts, no employer contact details, no candidate data. Internshala hides those
behind a student login and this actor never logs in.
- Multi-city postings carry no JSON-LD. Internshala only emits structured data for
single-location postings, so 17% of rows (169 of 1,000 internships, 52 of 300 jobs — always the "in multiple locations" ones) come back with postedAtIsExact: false, and with region, industry, employmentType and isPartTime null. Everything else on those rows, including applyBy and openings, is read out of the HTML and is still there.
companyWebsiteis missing about half the time. It only exists when the employer filled it
in. It is emitted when it is there and left null when it is not — never guessed.
- No expired postings. Internshala takes a posting down once its apply-by date passes; a pasted
URL for a dead posting returns an uncharged diagnostic row, not a charge.
- India only (plus the 85 international internships Internshala itself lists).
- Posted dates without the detail pass are approximate. With Open each posting off, the
board only says "2 days ago", so postedAt is derived from that and postedAtIsExact is false on every row.
Price
$0.0005 to start a run, then $0.34 per 1,000 postings. A flat rate — no volume tiers to unlock, no plan gates, and the same number on your first run as on your millionth. The start fee is small enough that short runs stay cheap too, not just large ones.
Sample rows, diagnostic rows, failed requests and empty searches are all uncharged. One charge per genuine posting, and nothing else. A run that returns nothing costs you the start fee alone.
---
FAQ
Is there an Internshala API? Not a public one. Internshala paginates its own listings over XHR — internships_ajax and jobs_ajax — and that is what this actor reads. It is the same data the website shows you, in JSON, without rendering a browser.
Do I need an Internshala account or a login? No. Every request in this actor is anonymous.
Can I scrape Internshala internships by city? Yes. cities: ["bangalore","delhi"] combines cities with OR, and it composes with category, work-from-home and every other filter.
Can I get remote / work-from-home internships only? Yes — workFromHome: true. 2,154 of the 7,007 live internships were work-from-home on 2026-08-08.
Does it return the stipend? Yes, on every row, and it says what kind of figure it is. 87% of internships quote a range, 11% a fixed monthly amount, 1.5% are unpaid. Nothing is estimated.
How do I get the application deadline? applyBy (ISO date) and applyByText (Internshala's own 5 Sep' 26 wording). Both need Open each posting to be on, which it is by default.
How many results can I get from one run? As many as the search has. A 1,000-row run finished in 107 seconds. The whole internships board — 7,007 rows — is reachable in one run; maxItems is the only cap, and it goes to 20,000.
What does it cost? $0.0005 per run plus $0.34 per 1,000 postings, flat — no volume tiers, no plan gates and no minimum spend.
Does it work outside India? Yes. The actor runs from Apify's own network and Internshala serves the same board regardless. An Indian residential exit and a US datacenter address were compared side by side and returned the same 40 postings, in the same order, with the same 7,007 total.
What is the difference between the internships board and the jobs board? Internships are short placements with a monthly stipend and a duration. Jobs are full-time fresher/early-career roles with an annual salary and an experience requirement. Set listing: "both" to walk both; every row carries a type field.