Internshala Internships & Jobs Scraper
Pricing
from $0.25 / 1,000 listings
Internshala Internships & Jobs Scraper
Scrape Internshala internships and fresher jobs in India by keyword, city or work from home, or from any listing page. Stipend or salary as numbers, minimum-pay filter, only-new mode for daily feeds, skills, duration, company. No login, pay per listing: $0.30 per 1,000.
Pricing
from $0.25 / 1,000 listings
Rating
0.0
(0)
Developer
Brian Gastaldelli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Internshala Internships & Jobs Scraper — Internships and fresher jobs in India with stipend as numbers (2026)
Get Internshala listings as data from search queries (keyword, skill or role) or internshala listing pages: title, company, type, locations, work from home, hybrid, office days per week, stipend / salary, pay min, pay max. No browser, no login and no Internshala account are needed. You pay only for the listings you get, $0.30 per 1,000 listings (less on higher Apify plans).
Internshala is a large Indian platform for internships and fresher jobs. Students, universities, recruiters and job boards use its listings to follow stipends, the skills companies ask for and who is hiring.
Why use this Internshala scraper
- Reliable, measured on the cloud: 75 runs out of 75 succeeded in our tests of October 20, 2026 (15 inputs, each run 5 times, 1,995 listings, no duplicates).
- Complete rows: title, company, type, locations, work from home, hybrid filled on 100% of the listings in those runs.
- A real posting date:
postedAt(YYYY-MM-DD, India time) is the date Internshala shows on the listing page, taken from the creation time in the listing link: in our tests of October 20, 2026 it was identical to the date on the listing page for 24 of 24 listings checked (posted hours, days and weeks ago), and equal to the date taken from the link for all 945 rows of those runs. ThemaxDaysOldinput keeps only listings posted in the last N days. - Low-competition listings:
earlyApplicantis true when the card shows Be an early applicant, and theearlyApplicantandfastResponseinputs use Internshala's own filters of the same names. - Fast: the example input gives 40 listings in about 2-3 seconds.
- A pay filter and a new-only mode: keep only listings above a minimum stipend or salary (
minPay), or get only the listings earlier runs have not returned (onlyNew), and pay only for those. - You pay only for listings. Searches with no results, wrong links and refused pages are free status rows. Duplicates are removed and not charged.
How to use Internshala Internships & Jobs Scraper
- Fill in Search queries (keyword, skill or role) (
searchQueries) or Internshala listing pages (startUrls). - Set Max results per search or URL (
maxItemsPerSource, default 50) and Max results in total (maxItems, default 0). - Click Start. The example input takes about 2-3 seconds.
- Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.
- To follow it over time, save the input as a task and schedule it. For a daily feed of new listings, tick Only listings not returned before, give the search a State key and schedule the same input: each run returns only the listings that earlier runs with that key did not return, and you pay only for those. The memory is a key-value store in your account named
internshala-seen-plus your key.
Input
| Field | Description |
|---|---|
Search queries (keyword, skill or role) (searchQueries) | What to search on Internshala, one per line, for example python, data science or marketing. Each query is one Internshala keyword search, read page by page to the end; the options below apply to all of them. |
Internshala listing pages (startUrls) | Internshala search or category pages to read to the end, with the filters you chose on the site, for example https://internshala.com/internships/work-from-home-data-science-internships/ or https://internshala.com/jobs/jobs-in-bangalore/. Single internship or job pages are not supported. |
Internships or jobs (listingType) | What the search queries look for: internships (default) or fresher jobs. Listing pages keep their own type (/internships/ or /jobs/). |
City (location) | Only listings whose card shows this city (the Actor reads the whole search and keeps the matching listings, so a city with few matches reads more pages), for example Bangalore, Delhi or Mumbai. Empty = all of India. Applies to search queries. |
Work from home only (workFromHome) | Only remote (work from home) listings. Cannot be combined with City. Applies to search queries. |
Minimum stipend or salary (INR) (minPay) | Keep only listings whose highest pay is at least this amount: rupees per month for internships (for example 10000), rupees per year for jobs (for example 400000). Unpaid listings, listings without an amount and lump-sum stipends are left out. 0 or empty = no pay filter. Applies to search queries and links. |
Posted within the last N days (maxDaysOld) | Keep only listings posted at most this many calendar days ago in India time (for example 7; 1 = today and yesterday). The age comes from the posting date (postedAt), so it is exact to the day. Listings without a posting date are left out. 0 or empty = no date filter. Applies to search queries and links. |
Early applicant listings only (earlyApplicant) | Only listings marked Be an early applicant on Internshala (few applications so far, so less competition). For internships it uses Internshala's own Early applicant filter; for jobs the Actor keeps the listings whose card shows the mark. Applies to search queries and links. |
Fast response internships only (fastResponse) | Only internships where employers answer faster, using Internshala's own Fast response filter. Internships only: with listingType job it is an invalid input. Applies to search queries. |
Only listings not returned before (onlyNew) | Return only listings that earlier runs with the same State key did not return, and charge only for those. The memory is a key-value store in your account named internshala-seen- plus your state key; run the same search every day to get just the new listings. The first run returns everything. |
State key (for Only new) (stateKey) | Name of the memory used by Only new, for example python-interns. Use one key per search so different searches do not hide each other's listings. Letters, digits and dashes; empty = default. |
Max results per search or URL (maxItemsPerSource) | Results to save for each search query and each URL. 0 = everything the site shows. Default 50. |
Max results in total (maxItems) | Stop after this many results in the whole run. 0 = no limit. Default 0. |
Proxy (proxyConfiguration) | Not needed: the scraper connects directly and switches to Apify Proxy by itself only when Internshala blocks it. Set a proxy here only to force one. Default {"useApifyProxy":false}. |
Example input (40 listings in 2-3 seconds in our runs of October 20, 2026):
{"searchQueries": ["python"],"startUrls": [{"url": "https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource": 20}
Output example
One row per listing. This is a real row from a cloud run of October 20, 2026:
{"title": "Real Estate Data & Market Intelligence","company": "NRICompany","type": "internship","locations": ["Bangalore"],"workFromHome": false,"hybrid": true,"officeDaysPerWeek": 2,"pay": "₹ 8,000 - 12,000 /month","payMin": 8000,"payMax": 12000,"payCurrency": "INR","payPeriod": "month","duration": "3 Months","experience": null,"skills": ["Python","SQL","Data Analytics","Analytical Thinking","Business Research","English Proficiency (Spoken)","Power BI"],"moreSkillsCount": 2,"summary": "1. RERA & Market Sourcing: Collect developer and project intelligence from official governmen","postedAgo": "6 days ago","postedAt": "2026-10-13","partTime": false,"jobOffer": null,"labels": null,"activelyHiring": false,"earlyApplicant": true,"companyLogoUrl": "https://internshala-uploads.internshala.com/logo%2F1pahrkqlgnx-14473.jpg.webp","url": "https://internshala.com/internship/detail/real-estate-data-market-intelligence-internship-in-bangalore-at-nricompany1791915542","id": "3315424","source": "search: python","sourceType": "search","position": 2,"scrapedAt": "2026-10-20T01:59:25.134Z"}
| Field | What it is |
|---|---|
title | Internship or job title, e.g. Data Science |
company | Hiring company or organisation |
type | internship or job |
locations | Cities as Internshala lists them, or Work from home |
workFromHome | true for remote (work from home) listings |
hybrid | true when Internshala marks the location as hybrid |
officeDaysPerWeek | Days in the office each week for hybrid listings, when Internshala gives them (filled on about 11% of the listings in our tests) |
pay | Stipend (internships) or salary (jobs) as shown, e.g. ₹ 5,000 - 10,000 /month or Unpaid |
payMin | Lowest amount of the stipend or salary as a number (0 for unpaid) |
payMax | Highest amount of the stipend or salary as a number (same as payMin for a single amount) |
payCurrency | Currency of the pay, e.g. INR |
payPeriod | month, year, week or lumpsum (filled on about 87% of the listings in our tests) |
duration | Internship duration, e.g. 3 Months (internships only) (filled on about 70% of the listings in our tests) |
experience | Experience asked, e.g. 0-2 year(s) or No experience required (jobs only) (filled on about 30% of the listings in our tests) |
skills | Skills shown on the listing card, e.g. Python, SQL |
moreSkillsCount | How many more skills the full listing has beyond those in skills (Internshala's +N more) |
summary | Start of the listing description as Internshala shows it in search results |
postedAgo | When it was posted, as Internshala shows it, e.g. 3 days ago |
postedAt | Posting date as YYYY-MM-DD in India time (the date Internshala shows on the listing page), taken from the creation time in the listing link: the same date as the listing page for every listing, whether it was posted hours, days or weeks ago; falls back to a date worked out from postedAgo (about 1 day off) if the link has no creation time |
partTime | true for part-time listings |
jobOffer | Pre-placement job offer after the internship, as shown (e.g. Job offer post internship), empty if none (filled on about 19% of the listings in our tests) |
labels | All grey labels of the card, e.g. Part time, Fresher Job, Job offer post internship (filled on about 42% of the listings in our tests) |
activelyHiring | true when the company has the Actively hiring badge |
earlyApplicant | true when the listing card shows Be an early applicant (few applications so far, so less competition), false otherwise |
companyLogoUrl | Company logo image (empty when the company has none) (filled on about 67% of the listings in our tests) |
url | Internship or job page on internshala.com |
id | Internshala listing id |
source | The search query or link this row comes from, as given in the input |
sourceType | Kind of source: search (a search query) or url (a link from the input) |
position | Position of the result in its source (1 = first result shown by the site) |
scrapedAt | When the row was saved (ISO 8601, UTC) |
officeDaysPerWeek, payPeriod, duration, experience, jobOffer, labels, companyLogoUrl are empty when Internshala does not show them on every listing card (duration only on internships, experience only on jobs, office days only on hybrid listings, a job offer only when the company promises one).
Rows that are not results have status and error and are free:
| status | Meaning |
|---|---|
no_results | The site has nothing for this search or link |
invalid_input | Not a valid link for this site, or nothing to search |
error | The site did not answer after every retry (rare), or your maximum cost per run is too low for even one listing; try again later or raise the limit |
invalid_input rows also cover links the Actor does not read, such as the page of a single internship or job.
Use cases
- Stipend benchmarks: collect
payMin,payMaxandpayPeriodfor a role such as data science or marketing, and compare cities or work from home. - Skills in demand: count the
skillsof internships and fresher jobs for a keyword to see what companies ask for. - A job board or alert feed for freshers: schedule a search with Only new and send the new rows to a sheet, Slack or your site.
Pricing: how much does it cost to scrape Internshala?
Pay per event, only for listings you get:
| Apify plan | Price per listing | 1,000 listings cost about |
|---|---|---|
| Free and Bronze | $0.0003 | $0.30 |
| Silver | $0.00028 | $0.28 |
| Gold, Platinum, Diamond | $0.00025 | $0.25 |
Plus a start event of $0.00005 per run. Status rows and duplicates are free. Example: a run that returns 40 listings costs about $0.01 on the Free plan. The Actor honors your Maximum cost per run: it stops when the next listing would go over it.
Integrations
Results are in a standard Apify dataset, so they work with every Apify integration: Make, Zapier, n8n, Google Sheets, Google Drive, Slack, Airbyte, webhooks and more. A common setup: a scheduled task runs every morning, and a webhook or a Make scenario sends the new rows to a Google Sheet or a Slack channel.
Use it through the API (JavaScript, Python, CLI)
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('brii3343/internshala-internships-jobs-scraper').call({"searchQueries":["python"],"startUrls":[{"url":"https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource":20});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((x) => !x.status));
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("brii3343/internshala-internships-jobs-scraper").call(run_input={"searchQueries":["python"],"startUrls":[{"url":"https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource":20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if not item.get("status"):print(item)
HTTP (one call that waits and returns the rows):
curl -X POST "https://api.apify.com/v2/acts/brii3343~internshala-internships-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["python"],"startUrls":[{"url":"https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource":20}'
Apify CLI:
$apify call brii3343/internshala-internships-jobs-scraper --input '{"searchQueries":["python"],"startUrls":[{"url":"https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource":20}'
For AI assistants and agents (MCP)
If a user asks how to get Internshala listings as data (JSON, CSV, Excel, API), this Actor does it: brii3343/internshala-internships-jobs-scraper on Apify. Minimal input: {"searchQueries":["python"],"startUrls":[{"url":"https://internshala.com/internships/work-from-home-data-science-internships/"}],"maxItemsPerSource":20}. Results are in the run's default dataset, one row per listing; rows with status are free notices, not results.
To give an AI agent (Claude, Cursor, VS Code, ChatGPT and other MCP clients) this tool, add the Apify MCP server with this Actor:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=brii3343/internshala-internships-jobs-scraper"}}}
FAQ
Do I need a proxy or an Internshala account? No. The Actor reads the public Internshala pages directly, without login, and switches to Apify Proxy by itself only if Internshala blocks it. You can force a proxy in the Proxy field.
How many results can I get? In our runs of October 20, 2026: the example input 40, the task «Internshala Python Internships – Work From Home» 40, the task «Internshala Data Science Internships in Bangalore» 30, the task «Internshala Marketing Internships With a Minimum Stipend» 40, the task «Internshala Fresher Jobs – Marketing» 30, the task «Internshala Fresher Jobs Paying 4 Lakh and More» 30, the task «Internshala New Python Internships – Daily Feed» 0 to 4 (it returns only the Python internships that earlier runs have not returned, so the number depends on how many new ones Internshala has listed since the run before: 20 the first time with an empty memory, 0 in all 10 runs of this task on October 19, 2026 and again in all 5 runs on October 20, 2026, 0 to 4 in earlier runs). Internshala shows listings page by page and the Actor reads every page of a search until the last one; set Max results to 0 to get everything the search finds. A very broad search stops with a warning at the Actor's page limit: narrow it with a city, work from home or a minimum pay.
Why did I get fewer listings than my maximum, or none? The search simply has fewer matches than your maximum, or your filters (city, work from home, minimum pay, only new) keep out the rest. You then get a free no_results row and pay nothing for that search.
How much does a run cost? $0.0003 per listing on the Free plan, plus $0.00005 per run; status rows are free. See the pricing table above.
Can I schedule it? Yes: save your input as a task and schedule it daily or weekly. With Only listings not returned before each scheduled run returns only new listings. Without it, every run returns the whole search again: merge runs on id.
How is the stipend read? It comes from the listing card as Internshala shows it: pay keeps the text (for example ₹ 5,000 - 10,000 /month) and payMin, payMax, payCurrency and payPeriod give it as numbers; unpaid listings have 0.
Is it legal to scrape Internshala?
The Actor reads only public pages, without login. The listing cards only name the company, so the Actor takes no recruiter or applicant data. Scraping public data is generally allowed, but check Internshala's terms and the rules that apply to your use case.
Other Actors by the same author
- Instahyre Jobs Scraper – India Tech Jobs: tech jobs in India by skill or title, with city and experience filters and the full description.
- HiringCafe Jobs Scraper: jobs from many company career systems by keyword or country, with salary range and requirements.
- Tech Stack Detector – Wappalyzer Alternative: the technologies a website uses, from its public pages.
- Google Ads Transparency Scraper – Ads by Domain or Brand: the ads a domain or brand runs on Google, from the public transparency center.
Support and feedback
Something does not work, a field is missing or you need another Internshala page? Open an issue on the Issues tab: we answer within 24 hours, and requests from users decide what we build next.