Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Internshala Scraper icon

Internshala Scraper

Scrape Internshala internships and fresher jobs by keyword, city, category, stipend or work from home. Duration, apply-by date, openings. $0.34/1,000.

109 runs on Apify $0.00034 per posting ($0.34 / 1,000)
Run this in the cloudRun on Apify →

Job Market Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQueries, listing, categories (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00034 per posting = $0.34 per 1,000

You are charged forWhenPrice
Posting returnedCharged once per genuine Internshala posting: role, company, city, the stipend or salary with a type flag (range / fixed / unpaid / lump-sum / performance-based), duration, apply-by date, number of openings, exact posted date, work-from-home flag, skills, perks and eligibility. Sample rows, diagnostics and empty runs are never charged.$0.00034

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchQueriesOne 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
listingInternshala 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
categoriesInternshala'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
citiesIndian cities, for example "bangalore", "delhi", "mumbai", "pune", "hyderabad", "chennai", "kolkata", "gurgaon". Several cities are combined with OR. Leave empty for the whole country.array
workFromHomeOnly 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
partTimeOnly part-time internships, 1,449 of 7,007 on 2026-08-08. Ignored on the jobs board.boolean
withJobOfferInternshala'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
minStipendOnly 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
maxDurationMonthsOnly 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
minSalaryOnly 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
experienceInternshala'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
fresherOnlyOnly jobs open to candidates with no work experience, 4,179 of 8,663 on 2026-08-08. Ignored on the internships board.boolean
includeInternshipsInJobsInternshala'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
internationalOnlyInternshala's international board: internships based outside India. It is small, 85 live on 2026-08-08.boolean
forWomenInternshala's women-only board: 3,379 internships on 2026-08-08. Combines with the category and city filters.boolean
earlyApplicantOnly internships with few applications so far, 1,924 of 7,007 on 2026-08-08.boolean
fastResponseInternshala's fast-response badge: employers who review applications quickly. 4,061 of 7,007 on 2026-08-08.boolean
startingAfterOnly internships whose start date is on or after this day, written as YYYY-MM-DD.string
startUrlsPaste 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
includeDetailsReads 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
detailConcurrencyHow 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
maxItemsStop 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
egressModeLeave on automatic. The other options exist only for debugging a run that is being refused.string

What you get

A structured dataset — each result includes fields like:

titlecompanyNamelocationLabelstipendTextstipendTypestipendPerioddurationTextpostedAtapplyByopeningsisWorkFromHometypeurl

Export 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 iconJob Market Scrapers

XING Jobs Scraper

Scrape XING jobs in Germany, Austria and Switzerland. Company, employment type, career level, posted date, apply URL and salary. $0.51 per 1,000 jobs.

1 use cases

ZipRecruiter Scraper iconJob Market Scrapers

ZipRecruiter Scraper

Scrape ZipRecruiter jobs by keyword, city, remote or salary. Exact posted dates, apply URLs, pay marked published or estimated. $0.80 per 1,000.

Ready to run — no setup

LinkedIn Company Employees Scraper iconJob Market Scrapers

LinkedIn Company Employees Scraper

Find a company's employees on LinkedIn, no login. Give a company URL or name. Get name, headline, job title, location and profile URL. $1.80 per 1,000.

1 use cases

Indeed Jobs Scraper iconJob Market Scrapers

Indeed Jobs Scraper

Scrape Indeed jobs by keyword and location in 11 countries. Get company, salary, benefits, remote flag, employer rating and apply URL. $4.00 per 1,000.

16 use cases

Glassdoor Company Reviews Scraper iconJob Market Scrapers

Glassdoor Company Reviews Scraper

Scrape Glassdoor reviews: pros, cons, six sub-ratings, recommend rate and CEO approval. First page per company without login. $2.50 per 1,000.

20 use cases

StepStone Jobs Scraper iconJob Market Scrapers

StepStone Jobs Scraper

Scrape StepStone jobs in DE, AT, NL and BE by keyword and location. Get company, salary, posted date, remote flag and links. $3.00 per 1,000 jobs.

4 use cases

See all Job Market Scrapers →

Internshala Scraper: internships and fresher jobs in India, with stipend, duration and apply-by dates

Search Internshala by keyword, category, city or filter, and every posting comes back as a row: role, company, city, skills, stipend or salary, duration, posted and apply-by dates, openings and the full description. No Internshala account, nothing to install.

The awkward part first. Internshala ignores a filter value it does not recognise instead of refusing it. A misspelled category or city quietly gets you the unfiltered board, which you then pay for. Write categories and cities the way Internshala writes them, and check searchUrl on the first few rows before you run anything large.

InputKeywords, categories, cities and filters, or Internshala URLs
OutputOne row per internship or job posting
Ceiling20,000 postings per run, or Internshala's own last page, whichever comes first
Account neededNone, and nothing to install
Price$0.34 per 1,000 postings, flat on every plan

🏷️ What Internshala Scraper does

Internshala runs two boards and you pick which. Internships are short placements with a monthly stipend. Jobs are full-time fresher and early-career roles with an annual salary. Set What to scrape to both and each row is tagged with its type.

Which filters apply depends on the board. Stipend, duration, part-time, the pre-placement-offer filter, the women-only board, the international board, early applicant and fast response are all internships. Annual salary, experience level and fresher-only are jobs. Keywords, categories and cities work on either.

Every keyword is walked separately, so two keywords means two searches sharing one budget.

includeDetails is on by default, and it 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 profile and website and the full description come from. Turn it off for a listing-only sweep and you keep the title, company, city, stipend, duration, skills and a description snippet.

Two things to watch if you paste URLs. Changing What to scrape away from its default counts as a filter, so the run walks the board as well as reading your links. And a posting that is both pasted and found by a search comes back twice and is billed twice, because the two routes read its id from different places. Use one route or the other for the same posting.

📥 What you give it

{
  "searchQueries": ["python"],
  "listing": "internships",
  "cities": ["bangalore"],
  "workFromHome": true,
  "minStipend": 10000,
  "maxItems": 200
}
FieldDefaultWhat it is
searchQueriesbox starts at pythonSearches as you would type them into Internshala's box. A skill, a role or a company.
listinginternshipsAlso jobs, or both to walk each in turn.
categoriesnoneInternshala's own categories, spelled its way: computer science, graphic design, human resources. Several are combined with OR.
citieswhole countryIndian cities like bangalore, pune, hyderabad. Several are combined with OR.
startUrlsnoneInternshala listing pages or single postings, pasted from the site.
workFromHome, partTime, withJobOfferoffRemote only, part-time only, and internships that come with a job offer afterwards.
minStipendnoneMonthly stipend floor in rupees. Internshala's own slider stops at 12,000, so higher values are clamped there.
maxDurationMonthsnoneLongest internship to keep, in months.
minSalary, experience, fresherOnlynoneAnnual salary floor, experience cap and fresher-only, all on the jobs board.
includeInternshipsInJobsoffInternshala's "also show internships" toggle on the jobs board.
internationalOnly, forWomenoffThe international board, and the women-only board.
earlyApplicant, fastResponseoffFew applications so far, and employers who reply quickly.
startingAfternoneYYYY-MM-DD. Internships starting on or after that day.
includeDetailsonOpen each posting's own page for the full record.
detailConcurrency10Posting pages read at once, 1 to 16.
maxItems50Total postings for the run, up to 20,000.
egressModeautoLeave it alone. The other settings exist for debugging.
proxyConfigurationleave it aloneOptional. Only if you want the run to go out through a particular network of your own.

📤 What you get back

A real row from a run on 20 September 2026:

{
  "id": "3293620",
  "type": "internship",
  "title": "Machine Learning",
  "url": "https://internshala.com/internship/detail/machine-learning-internship-in-multiple-locations-at-innoknowvex1789836401",
  "companyName": "Innoknowvex",
  "companyUrl": "https://internshala.com/company/innoknowvex-1739944702",
  "companyWebsite": null,
  "companyLogo": "/static/images/search/placeholder_logo.svg",
  "locations": ["Chennai, Coimbatore, Madurai, Tirunelveli, Thanjavur, Tiruppur, Tiruchirappalli, Salem, Vellore"],
  "locationLabel": "Chennai, Coimbatore, Madurai, Tirunelveli, ...",
  "region": null,
  "countryCode": "IN",
  "isWorkFromHome": false,
  "isHybrid": false,
  "isPartTime": null,
  "stipendText": "₹ 11,000 - 23,000 /month",
  "stipendMin": 11000,
  "stipendMax": 23000,
  "stipendCurrency": "INR",
  "stipendPeriod": "MONTH",
  "stipendType": "range",
  "stipendIsEstimate": false,
  "durationText": "3 Months",
  "durationMonths": 3,
  "experienceText": null,
  "experienceYears": null,
  "skills": ["Data Analytics", "Machine Learning", "Natural Language Processing (NLP)", "Python", "R Programming", "..."],
  "postedRelative": "Today",
  "postedAt": "2026-09-20",
  "postedAtIsExact": false,
  "applyByText": "19 Oct' 26",
  "applyBy": "2026-10-19",
  "openings": 100,
  "startDateText": "Immediately",
  "startsImmediately": true,
  "isActivelyHiring": true,
  "isEarlyApplicant": true,
  "hasJobOfferAfterInternship": true,
  "jobOfferText": "Job offer upto ₹ 4.6LPA post internship",
  "industry": null,
  "employmentType": null,
  "perks": [],
  "eligibility": [],
  "aboutCompany": null,
  "descriptionText": "Selected intern's day-to-day responsibilites include: 1. Assist in collecting and cleaning datasets for ML projects...",
  "searchQuery": "python",
  "searchUrl": "https://internshala.com/internships_ajax/keywords-python/",
  "page": 1,
  "position": 1,
  "scrapedAt": "2026-09-20T07:04:31.833Z"
}

The locationLabel, skills and descriptionText above are cut short. A real row carries them in full.

FieldWhat it is
stipendMin / stipendMax / stipendPeriod / stipendTypeThe employer's own pay figure, parsed. stipendType says whether it is a range, fixed, unpaid, lump-sum, performance-based, negotiable or not-stated, so an unpaid posting cannot be mistaken for a missing number. Weekly and daily stipends are real and are marked as such.
postedAt / postedAtIsExactThe date, and whether it is Internshala's exact posted date or one worked back from "2 days ago". Check the flag before you filter on the date.
applyBy, openings, startDateTextFrom the posting's own page, so they need includeDetails on.
region, industry, aboutCompanyCome from the posting's structured data, which multi-city postings do not carry. Expect these null on roughly one row in six.
hasJobOfferAfterInternship / jobOfferTextWhether a pre-placement offer is attached, and Internshala's own wording for it.
searchQuery, searchUrl, page, positionWhich search produced the row, and the exact URL used. Check searchUrl if a filter looks like it was ignored.
detailNotePresent when the posting's own page could not be read. The row still arrives, and is still billed, with the listing-level fields only.

🧾 Reading the output

RowHow to spot itBilled
A postingIt has an id and no _sample or _diagnostic keyyes
The sample row_sample: true and charged: falseno
A diagnostic_diagnostic: true, charged: false and an errorCodeno

Posting rows carry no charged field. The flag is only on the sample and diagnostic rows, to mark them as not real results.

CodeWhat it means
NO_RESULTSThat search matched nothing.
BAD_URLA link that is not an Internshala listing or posting page.
DETAIL_FAILEDA pasted posting could not be read, usually because it has expired.
HTTP_ERRORInternshala answered with an error status.
NOT_JSONInternshala answered with something this run could not read.

▶️ How to run it

1. Open Internshala Scraper and click Try for free. 2. Type a skill or role into Keywords, and pick What to scrape. 3. Add a Category or City if you want, spelled the way Internshala spells it. 4. Set Maximum postings. Start around 25 to see what the rows look like. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$0.34 per 1,000 postings. Flat on every Apify plan, with no volume tiers.

One billed row per posting delivered. The sample row is not billed and diagnostic rows are not billed. A posting whose own page failed is still delivered and still billed, with a detailNote on it saying so.

💡 What people use it for

  • Hiring research in India: what stipends and salaries employers are actually advertising, by

category and city.

  • Building a company list from companyName and companyUrl across a category.
  • Watching one city or skill daily with a small maxItems, and diffing on id.
  • Pay benchmarking, because stipendMin, stipendMax and stipendPeriod are parsed rather than

left as text.

  • Finding postings with a pre-placement offer attached, which is its own filter.

🚧 What it does not do

  • India, plus a small international board. That board had 85 live postings when it was last

counted, so do not plan around it.

  • A filter Internshala does not recognise is ignored, not refused. You get the whole board and

you pay for it. Check searchUrl on the first rows.

  • No applicant counts. The early-applicant flag is the only signal of competition.
  • postedAt is often approximate. Read postedAtIsExact before filtering on dates.
  • Multi-city postings have no structured data, so region, industry and aboutCompany come

back null on roughly one row in six.

  • Pasting a URL and searching for the same posting bills it twice. The two routes read its id

differently, so the duplicate check does not catch it.

  • Changing What to scrape turns a URL-only run into a board walk. Leave it on its default if

you only want your pasted links.

  • One search runs out at Internshala's own last page. Use several keywords, cities or categories

to go wider rather than raising the cap.

🧭 Which jobs scraper do you need?

If you wantUse
Internships and fresher jobs in IndiaThis one
Experienced roles in India from NaukriNaukri Jobs Scraper
Hackathons, competitions and campus jobs from UnstopUnstop Scraper
Startup jobs from WellfoundWellfound Jobs Scraper
Jobs in Germany, Austria and SwitzerlandXING Jobs Scraper

❓ Questions people ask

What is the difference between the two boards? Internships are short placements paid by the month. Jobs are full-time fresher and early-career roles paid by the year. Pick one, or take both and read the type field.

Why did my category filter return everything? Internshala ignored it. Spell it the way the site does, then check searchUrl on the first row.

Can I get the apply-by date without opening every posting? No. That, the openings count and the exact posted date all live on the posting's own page, so leave Open each posting on.

Are unpaid internships included? Yes, and they are marked. stipendType reads unpaid rather than leaving the number blank.

Can I schedule it? Yes. id is stable for postings found by a search, so diffing one run against the next shows what is new.

Is this legal? These are public job postings. Company and contact details are personal data in some jurisdictions, so have a reason for collecting them. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the keyword or URL you used and the run ID. The errorCode on the diagnostic row usually names the problem on its own.