Internshala Scraper โ Internships & Jobs, 24 Fields
Pricing
from $1.20 / 1,000 listing scrapeds
Internshala Scraper โ Internships & Jobs, 24 Fields
Scrape Internshala.com internships and fresher jobs: title, company, stipend/salary, duration, skills, location, work-from-home. Filter by keyword, category, city, stipend and duration. No login, no browser, pay per listing. Use it as an MCP server in Claude, ChatGPT & any AI agent.
Pricing
from $1.20 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
๐ Internshala Scraper: Internships, Fresher Jobs & Stipends
Overview
Internshala is India's dominant internship and early-career job platform โ the first stop for students and freshers looking for a paid internship, a work-from-home gig, or an entry-level job. This actor turns any Internshala search into structured data: title, company, stipend or salary, duration, required skills, location, and posting date, delivered as clean JSON rows.
Search by free-text keyword (digital marketing, python), category (computer-science, content-writing), city, or work-from-home โ filter by minimum stipend and maximum duration โ and get every matching listing without touching Internshala's HTML. No login, no captcha, no browser: the actor calls the same JSON endpoint Internshala's own search page uses internally, so results are exactly what a real visitor would see.
โ No login required | โ No browser / anti-bot friction | โ Pay per listing returned | โ MCP-ready for AI agents
Features
Keyword & category search. Query any role, skill, or Internshala profile category โ each keyword is searched separately and results are merged and deduplicated.
Three listing boards. Internships, regular jobs, and fresher jobs โ Internshala runs all three on the same search infrastructure, and this actor covers all three via the employmentType input.
Real filters, server-side. Location, work-from-home, part-time, minimum stipend/salary, and maximum internship duration are all applied by Internshala's own servers, not filtered after the fact from a partial scrape.
Stipend & salary parsed to numbers. Raw strings like โน 10,000 - 15,000 /month or Unpaid are parsed into compensation_min_inr, compensation_max_inr, compensation_unit, and is_unpaid so you can sort and filter compensation directly.
Deep pagination. Internshala's paginated result set is followed to the end within your maxResults budget, with duplicate-listing and stalled-page protection so a run never spins on a repeating page.
How it works
Internshala's own search page loads results through a plain JSON AJAX endpoint (/internships_ajax/, /jobs_ajax/, /fresher-jobs_ajax/) that returns an HTML fragment of listing cards plus pagination flags. This actor calls that same endpoint directly with a plain HTTP GET โ no browser, no session warm-up, no residential proxy required, because no anti-bot challenge was found anywhere in the search or pagination flow during testing.
Filters compose as URL path segments exactly the way Internshala's own front-end builds them (verified against the site's own search JavaScript): keywords-<term>, category-<slug>, location-<city>, work_from_home-true, part_time-true, stipend-<amount>, duration-<months>. Any combination can be requested at once, and the actor walks pages until Internshala reports is_last_page: true or your maxResults budget is reached, whichever comes first.
๐งพ Input configuration
{"searchKeywords": ["digital marketing"],"employmentType": "internship","location": "bangalore","workFromHome": false,"stipendMin": 5000,"durationMaxMonths": 3,"maxResults": 100}
| Field | Description |
|---|---|
searchKeywords | Array of free-text keywords. Leave empty to browse by category/location/filters only. |
employmentType | internship (default), job, or fresher_job โ which Internshala board to search. |
category | Internshala profile/category slug, e.g. computer-science, digital-marketing, content-writing. |
location | City name, e.g. bangalore, mumbai. Leave blank for all locations. |
workFromHome | Only return remote / work-from-home listings. |
partTime | Only return part-time listings. |
stipendMin | Minimum monthly stipend (internships) or annual salary (jobs) in INR. |
durationMaxMonths | Internships only โ cap on internship duration in months. |
maxResults | Maximum listings to return across all keywords. Hard cap 1000. |
includeDescription | Include the full description text (default: truncated to 400 characters). |
monitorMode | Deliver only listings not seen in a previous run โ see below. |
proxyConfiguration | Apify proxy config. Default Apify proxy works; no residential proxy needed. |
๐ค Output format
{"listing_id": "3226637","employment_type": "internship","title": "Digital Marketing","company": "Sanyukt Organisation","actively_hiring": true,"location": "Work from home","work_from_home": true,"compensation_text": "โน 9,000 - 10,000 /month","compensation_min_inr": 9000,"compensation_max_inr": 10000,"compensation_unit": "month","is_unpaid": false,"duration_text": "6 Months","duration_months": 6,"skills": ["Social Media Marketing", "Digital Marketing", "Email Marketing"],"description": "1. Manage and actively contribute to social media platforms...","apply_url": "https://internshala.com/internship/detail/work-from-home-digital-marketing-internship-at-sanyukt-organisation1784697392","posted_text": "1 week ago","posted_days_ago": 7,"scraped_at": "2026-07-31T18:12:02.910Z"}
Every record contains these fields:
| Field | Description |
|---|---|
๐ listing_id | Internshala internal listing ID |
๐ท๏ธ employment_type | internship, job, or fresher_job |
๐ title | Listing title |
๐ข company | Company name |
๐ผ๏ธ company_logo | Company logo image URL |
๐ฅ actively_hiring | Whether Internshala shows the "Actively hiring" badge |
๐ location | Location text (city name(s) or "Work from home") |
๐ work_from_home | True if the listing is remote |
๐ฐ compensation_text | Raw stipend/salary string from Internshala |
๐ต compensation_min_inr / compensation_max_inr | Parsed numeric stipend/salary |
๐ compensation_unit | month (internship stipend), year (job salary), or lump_sum |
๐ซ is_unpaid | True if explicitly marked Unpaid |
โณ duration_text / duration_months | Internship duration, raw and normalised (internships only) |
๐ experience_text / experience_min_years / experience_max_years | Experience requirement (jobs only) |
๐ ๏ธ skills | Required skills as an array |
๐ description | Listing description (truncated to 400 chars unless includeDescription: true) |
๐ apply_url | URL to the Internshala listing detail / apply page |
๐๏ธ posted_text / posted_days_ago | Raw and parsed posting recency |
A minority of remote/global listings on Internshala are quoted in USD rather than INR โ compensation_text always carries the raw string with its currency symbol, so check it when compensation_unit alone isn't enough.
One more row at the end of every run: every run also ends with a final _type: "info" record โ informational only, never billed โ with a nudge on scheduling and Store reviews.
๐ผ Common use cases
Internship & fresher-job market monitoring Track how many internships or fresher roles open in a category or city each week, and what stipend range they cluster around.
Stipend/salary benchmarking Pull every work-from-home digital marketing internship and compute the median and range of stipends offered.
Talent sourcing for campus/early-career hiring Feed listings into a sourcing tool to see what competitors are offering freshers in a given function.
Career-content & jobs-board feeds Power a niche "internships this week" digest or enrich an existing student jobs board with fresh listings and normalised stipend data.
๐ Getting started
- Open the actor and add one or more search keywords (
digital marketing,python), or leave blank and use category/location filters only. - Pick
employmentType: internships, jobs, or fresher jobs. - Optionally set category, city, work-from-home, part-time, minimum stipend, and max duration.
- Set max results.
- Click Start. Download as JSON, CSV, or Excel, or pull the dataset via API or MCP.
๐ Run on a schedule
Turn this from a one-off pull into a standing feed with Apify's built-in Schedules โ no code, no cron server of your own.
- Run the actor once with the input you want repeated, then click Save as a task โ this keeps your exact input attached for every future run.
- In the Apify Console, go to Schedules โ Create new.
- Name it, set your timezone, and pick a frequency โ a preset (hourly/daily/weekly) or a custom cron expression.
- Under Actors or tasks to run, add the task you saved in step 1.
- Save. From then on it runs unattended, billed the same pay-per-listing way as a manual run.
Monitor mode โ pay only for NEW listings
Set monitorMode: true and this actor remembers what it delivered last time (keyed on listing_id) โ on the next scheduled run, only genuinely new listings are pushed and charged.
{ "monitorMode": true }
Pairs directly with Run on a schedule above: save a task with monitorMode: true, attach it to a daily schedule, and you have a standing "what's new" feed with no duplicate charges. The summary row reports new_this_run and skipped_duplicates. First run establishes the baseline; every run after that is incremental.
FAQ
Does it log in to Internshala? No. The actor works from public search endpoints only. No account, no cookies, no captcha, no ban risk.
Why do some listings show Unpaid with no numeric stipend?
Internshala allows unpaid internships. is_unpaid is set to true and compensation_min_inr/compensation_max_inr are omitted rather than set to zero, so they don't skew any average you compute.
I set stipendMin but I still got some Unpaid listings โ is that a bug?
No โ this matches Internshala's own filter behaviour. Their minimum-stipend filter is inclusive of Unpaid listings, not a strict floor (verified directly against internshala.com). Filter is_unpaid / check compensation_min_inr in the output if you need a strict "paid only, above X" cut.
Can I search jobs and fresher jobs, not just internships?
Yes โ set employmentType to job or fresher_job. Field coverage differs slightly: job/fresher_job listings carry experience_text/experience_min_years/experience_max_years instead of duration_text/duration_months.
How do I get more than one page of results?
Set maxResults to whatever budget you want. The actor follows Internshala's paginated result set until the budget is reached or Internshala reports the last page.
Can I use it in an AI agent? Yes. It's exposed as an MCP tool. See below.
Use in Claude, ChatGPT & any MCP agent
https://mcp.apify.com/?tools=themineworks/internshala-jobs-scraper
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/internshala-jobs-scraper').call({searchKeywords: ['digital marketing'],workFromHome: true,maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
๐ ๏ธ Complete your hiring intelligence pipeline
Found the roles. Now enrich and act on them with the rest of the suite:
- Naukri Job Scraper: cross-check the same category against India's broader experienced-hire market.
- CutShort Jobs Scraper: tech-focused roles for candidates who outgrow entry-level internships.
- LinkedIn Company Scraper: profile the hiring company โ size, industry, HQ.
Questions or need a custom field set? Reach out through the Apify profile.