Internshala Scraper: Applicants per Opening & Deadline Alerts
Pricing
from $0.29 / 1,000 job leads
Internshala Scraper: Applicants per Opening & Deadline Alerts
Scrape Internshala internships and fresher jobs with applicants per opening, stipend, deadline and employer hiring history. Find low-competition openings, then schedule runs to catch new posts, changed stipends, closing deadlines, applicant surges and closed openings.
Pricing
from $0.29 / 1,000 job leads
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
284
Total users
104
Monthly active users
3 days ago
Last modified
Categories
Share
🎓 Internshala Scraper: Applicants per Opening & Deadline Alerts
| INDIA JOBS SUITE • Public job-listing data for recurring hiring research. | |||
|
Blue and grey collar roles |
➤ You are here |
Tech jobs and hiring alerts |
Combined multi-source job inventory |
|
Apply where your odds are good, and never miss a closing deadline Collect public Internshala internships and fresher jobs with applicants per opening, an applicant pressure label, parsed stipends, deadlines and employer hiring history. Then schedule the same search to be alerted about new posts, stipend changes, closing deadlines, applicant surges and closed openings. |
| ÷ Real competition Applicants per opening, a pressure label from very low to extreme, and a 0 to 100 score. | 📅 Deadline radar Deadline date, days left and a closing-soon status on every detailed listing. | 🔔 Monitor mode Schedule a named monitor and get only what is new, changed, surging or closed. | ✓ Honest fields Missing values stay missing. No guessed or padded data. |
🔍 What does Internshala Scraper do?
Internshala Scraper collects public internship and fresher job listings from Internshala and turns them into a decision-ready dataset. Every row has the role, company, location, parsed stipend or salary range, duration or experience, skills and posting age. Switch on Fetch applicants and deadlines and each row also gets how many people applied, how many openings exist, the ratio between them, an applicant pressure label, the application deadline, the start date and the employer's hiring history.
A listing with 40 applicants and 40 openings is a far better bet than one with 40 applicants and 2 openings. Raw counts do not show that, so the ratio and the pressure label are computed for you. Filters can then keep only the roles worth applying to, for example remote data internships with at most 15 applicants per opening that close in the next week.
For recurring tracking, give the run a monitor name and schedule it. Each run remembers what it saw before and reports only new listings, changed stipends, deadlines that are about to pass, applicant surges and openings that disappeared.
🎯 Who is this for?
Students and fresh graduates. You can only apply carefully to a handful of roles. Sorting by applicants per opening and filtering on deadline shows which listings still have room and which are already crowded.
Placement cells and career platforms. Build a daily digest of low-competition, well-paid and closing-soon opportunities for your students or users, including employer history so you know who actually hires.
Recruiters, hiring researchers and market analysts. Track which companies post, how stipends and salaries move, which skills are in demand and how fast applicant counts grow, without opening listings one by one. Turn on the employer contact email add-on to reach the companies that are hiring right now.
🚀 How to collect Internshala listings
| STEP 1 Choose what to search Pick internships, jobs or both. Add keywords, cities, skills, stipend, duration and badge filters. | STEP 2 Add the competition filter Set Max applicants per opening or Closing within days. Applicant and deadline data is fetched automatically. | STEP 3 Run once or schedule it Download the dataset, or add a monitor name and schedule the run for alerts. |
To start in seconds, leave the default input and press Start: you get the 25 newest matching internships with stipend, skills and location. To see competition, turn on Fetch applicants and deadlines.
⚙️ Input
| Field | Type | Required | Description |
|---|---|---|---|
mode | enum | No | internships, jobs or both. With both, the result limit is shared between the two feeds. Public startUrls derive their mode from the URL. Default: internships. |
startUrls | array of URLs | No | Public Internshala internships, jobs or fresher-jobs listing pages. They replace automatic source construction; record-level filters still apply. |
keyword | string | No | Role or keyword matched against title, company, summary and skills. Also selects the matching Internshala keyword results. |
keywords | array of strings | No | More roles searched in the same run, for example Python, React, Marketing. Results are de-duplicated across keywords. |
locations | array of strings | No | Keep only listings whose location contains one of these cities. Work from home does not count as a city match. |
category | string | No | Internship category, for example Computer Science. Internships mode only; cannot be combined with startUrls. |
workFromHome | boolean | No | Keep only listings marked as work from home. Default: false. |
partTime | boolean | No | Keep only listings marked as part time. Default: false. |
datePosted | enum | No | Posted within all, 24h, 3d, 7d or 30d. Default: all. |
specialFilters | array | No | Keep only listings with every selected badge: actively_hiring, early_applicant, job_offer. |
skills | array of strings | No | Keep listings that list at least one of these skills, for example SQL or Figma. |
excludeKeywords | array of strings | No | Drop listings whose title, company, summary or skills contain any of these words. |
minStipend | integer | No | Minimum monthly internship stipend in INR. Unpaid or undisclosed stipends do not pass a positive minimum. |
minSalary | integer | No | Minimum annual job salary in INR. |
maxDurationMonths | integer | No | Maximum internship duration in months. 0 disables the filter. |
maxExperienceYears | integer | No | Maximum required experience in years for jobs. 0 disables the filter. |
includeDetails | boolean | No | Fetch applicants and deadlines: applicants per opening, pressure, deadline, openings, description, eligibility, perks, start date and employer history. Turns on by itself when you use a filter below that needs it. Default: false. |
maxApplicantsPerOpening | integer | No | Keep listings with at most this many applicants per opening. Early applicant listings always pass. 0 disables the filter. |
maxApplicants | integer | No | Keep listings with at most this many applicants so far. 0 disables the filter. |
minOpenings | integer | No | Keep listings with at least this many open positions, useful for bulk hiring. 0 disables the filter. |
closingWithinDays | integer | No | Keep listings whose deadline falls within this many days. In monitor mode it sets the closing-soon window (default 3 days). 0 disables the filter. |
monitorName | string | No | Name of a recurring monitor, for example data-internships-daily. Runs with the same name and search share memory. Leave empty for a normal run. |
onlyChanges | boolean | No | In monitor mode, return only new, changed, closing, surging or closed listings. Turn off to return every listing with its status. Default: true. |
surgePercent | integer | No | In monitor mode, flag a listing when its applicants grew by at least this percent since the previous run. Default: 50. |
enrichEmails | boolean | No | Find employer contact email: looks for a public contact email on each employer's own website and adds it to every listing of that employer. Optional add-on, billed only when an email is found, once per company per run. Default: false. |
maxResults | integer | No | Maximum listings returned. With several sources the limit is shared fairly between them. Default: 25. |
sortBy | enum | No | relevance (source order) or newest. Default: relevance. |
monitoringMode, monitoringStoreName, monitorScope | various | No | Older change detection that keeps working for existing schedules. New schedules should use monitorName. |
maxConcurrency | integer | No | Maximum parallel page requests. Default: 10. |
proxyConfiguration | object | Yes | Leave the default. The Actor picks the best connection by itself. |
Automatic source URLs use verified path-based Internshala patterns. URLs with query parameters, commas or fragments, detail pages and login pages are rejected as startUrls.
📊 Output
Each record contains only fields present on the public page or derived from them. The Actor does not fill missing values with "Unknown", "N/A" or generic placeholders.
This example is a real public listing with applicants and deadlines turned on:
{"id": "3316222","dedupeId": "internshala:internships:3316222","mode": "internships","title": "Artificial Intelligence (AI)","company": "Simpli Intern","url": "https://internshala.com/internship/detail/work-from-home-part-time-artificial-intelligence-ai-internship-at-simpli-intern1791881325","location": "Tamil Nadu","isWorkFromHome": true,"isPartTime": true,"workMode": "remote","skills": ["Python", "Artificial intelligence", "Effective Communication"],"stipendText": "₹ 20,000 - 35,000 /month","stipendMin": 20000,"stipendMax": 35000,"durationMonths": 3,"postedAgo": "1 week ago","postedDate": "2026-10-13","startsImmediately": true,"openings": 250,"applicantCount": 94,"applicantsPerOpening": 0.38,"applicantPressure": "very_low","competitionScore": 6,"avgApplicantsPerDay": 13.43,"applicationDeadlineDate": "2026-11-12","daysToDeadline": 21,"deadlineStatus": "open","employerHiringSince": "August 2026","employerOpportunitiesPosted": 18,"detailsFetched": true}
You can download the dataset in JSON, CSV, HTML or Excel format from Apify Console or via the API.
🗂️ Data fields
| Field | Type | Description |
|---|---|---|
id, dedupeId, mode | string | Internshala's listing ID, a stable internshala:<mode>:<id> key for deduplication, and internships or jobs. |
title, company, url | string | Published listing identity and the public listing URL. |
companyLogo, location, summary | string | Public card values when present. Placeholder logos are omitted. |
isWorkFromHome, isPartTime, workMode | boolean / string | Work-from-home and part-time markers, plus remote, hybrid or onsite. |
stipendText, stipendMin, stipendMax, isUnpaid | string / integer / boolean | Published monthly internship stipend and the parsed INR range. |
salaryText, salaryMin, salaryMax | string / integer | Published annual job salary and the parsed INR range, including LPA notation. |
durationMonths, experienceMin, experienceMax | integer | Published duration or required experience when parseable. |
skills, badges, isActivelyHiring | array / boolean | Public skills list and card badges. |
postedAgo, postedDate, scrapedAt | string | Relative posting age, exact posting date when available, and extraction time. |
description, eligibility, perks, aboutCompany, category, industry, employmentType | various | Public listing-page details. Present when applicants and deadlines are fetched. |
openings, startDate, startsImmediately | integer / string / boolean | Number of open positions and the start date. |
applicantCount, applicantCountIsLowerBound, isEarlyApplicant | integer / boolean | Applicants so far. Absent when the listing shows "Be an early applicant" (genuinely low competition). The lower-bound flag marks capped counts such as 1000+. |
applicantsPerOpening | number | Applicants divided by openings, rounded to 2 decimals. |
applicantPressure | string | very_low, low, moderate, high or extreme, from the applicants per opening ratio. |
competitionScore, avgApplicantsPerDay | number | A 0 to 100 competition score and the average applicants gained per day since posting. |
applicationDeadline, applicationDeadlineDate, daysToDeadline, deadlineStatus | string / integer | Deadline as published, as an ISO date, days left, and open, closing_soon or expired. |
employerHiringSince, employerOpportunitiesPosted, employerCandidatesHired | string / integer | Employer history shown on the listing page. Hired count appears on some listings only. |
employerEmail, employerEmailDomain | string | Employer email add-on only: a public contact email published on the company's own website, and its domain. Left out when none is published. |
employerEmailKind | string | Employer email add-on only: generic for a team address such as info@ or hr@, named for a person's address published by the company. |
employerEmailSourceUrl | string | Employer email add-on only: the page of the company's website where the email was found. |
emailEnrichmentStatus | string | Employer email add-on only: found, not_found (the company publishes no email we could confirm), skipped (not checked, for example a confidential employer or the run's spending limit) or failed (the company's website did not answer). |
changeType, alerts, changes, firstSeenAt | string / array / object | Monitor mode only: new, changed, unchanged, reopened or closed, the alert list (new, reopened, changed, closing_soon, applicant_surge, closed), what changed, and first-seen time. |
applicantCountPrevious, applicantCountDelta, applicantTrend, applicantsPerDay | integer / string / number | Monitor mode only: applicants at the last run, growth since, rising, flat or falling, and growth per day. |
daysTracked, closedAt, lastDeadline | integer / string | Monitor mode only: how long the listing has been tracked, when it was seen closing, and its last known deadline. |
The default key-value store also holds a run-summary record, a MARKET_PULSE record (median stipend or salary, remote share, top skills and cities, pressure mix), an EMPLOYER_ROLLUP record (top employers with openings and average applicants per opening) and, in monitor mode, an ALERT_SUMMARY record with the counts per alert type.
🔔 How monitor mode works
Set monitorName to any name, for example remote-data-internships, and schedule the run daily. The first run saves a baseline and returns the matching listings. Every later run with the same name and the same search compares against it and returns only what matters:
- New: listings that were not there before.
- Changed: title, location, stipend, salary, duration, openings or deadline changed.
- Closing soon: the deadline is within your window (3 days by default, or
closingWithinDays). - Applicant surge: applicants grew by at least
surgePercentsince the last run. - Closed: an opening that disappeared from the board on two consecutive full scans.
Different names and different searches never share state, so you can run several monitors side by side. Two monitor runs with the same name that overlap in time do not block each other. A partial run never overwrites the saved baseline. Turn off onlyChanges to get every listing with its status instead.
Applicant surge and closing-soon alerts need Fetch applicants and deadlines, so turn it on for monitors that should watch competition and deadlines (setting closingWithinDays turns it on automatically).
📧 Employer contact email (optional add-on)
Turn on Find employer contact email to get a public contact email for the companies behind your listings. For each employer, the Actor finds the company's own website and looks for a contact email it publishes there, such as info@, hr@ or careers@. When it finds one, every listing from that employer carries the same email.
- Only real, published addresses. Every email comes from a page on the company's own website, and
employerEmailSourceUrlshows which page. Nothing is guessed, built from a name or taken from a job board or directory. - Not every employer has one. Many companies, especially small ones, publish no email on their website. Those listings get
emailEnrichmentStatus: not_foundand no email field. - Privacy first. When an employer name looks like a private person, only a general company address such as info@ is returned, never a personal mailbox.
- Fair billing. You pay only when an email is found, once per company per run, however many of its listings you collect. Lookups that find nothing cost nothing extra.
- Off by default. Leave it off and the run is exactly the same as before, with the same fields and the same price.
It works with every search, filter and monitor. In monitor mode with onlyChanges on (the default), unchanged listings are not returned, so they are not looked up or billed again. An email never counts as a change on its own.
💰 Pricing
Pricing is pay per result with no subscription. Empty runs and runs that match no listings cost nothing. Fetching applicants and deadlines, and the competition fields it unlocks, are billed as small separate events per listing, so a plain collection run stays the cheapest option. Check the Store pricing panel before a large run, and use maxResults to cap spend. The optional employer contact email is billed separately, only when an email is found and once per company per run.
⭐ Enjoying Internshala Scraper?
| ⭐ ⭐ ⭐ ⭐ ⭐ A review helps students and hiring teams find a smarter way to read the Internshala market. Tell us which field or workflow you found most useful. |
| ★ Rate this Actor on Apify |
💡 Tips and advanced options
- Start with the default
maxResults: 25while you validate a new filter combination, then raise it. - To find low-competition roles, set
maxApplicantsPerOpeningto 10 or 15 and sort the dataset bycompetitionScore. - To catch deadlines, set
closingWithinDaysand schedule the run daily with amonitorName. - Use
keywords,skillsandexcludeKeywordstogether to define a precise role, for example Python or SQL but not sales. - Large detail runs are limited by compute, not by the website. If a run with hundreds of detail pages feels slow, raise the run memory to 1024 MB.
- Inspect the
run-summaryrecord when results look short. It reports pages read, filtered listings, warnings and monitor status.
❓ FAQ, disclaimer, and support
Does the Actor access private Internshala data?
No. It reads only public, logged-out listing pages. It does not log in, submit applications, or collect candidate or employer account data.
What does "Be an early applicant" mean in the data?
It means the listing shows no applicant count yet, which is the lowest competition signal available. The Actor sets isEarlyApplicant: true and leaves out applicantCount instead of recording a zero, and listings like this always pass applicant filters.
How should I read applicants per opening and the pressure label?
Lower is better for you. A ratio of 2.5 means about 2.5 people applied per open seat. The labels are very_low below 5, low below 15, moderate below 40, high below 100 and extreme above that. Some counts are capped by the website at 1000+, which is why applicantCountIsLowerBound exists. Fields that cannot be computed are left out.
Where do the employer emails come from?
Only from the company's own public website. The Actor confirms the website belongs to the employer before it reads it, and returns an address only when the company prints it there. employerEmailSourceUrl links to the exact page. It never guesses addresses, never builds them from names and never takes them from job boards or directories.
Why do some listings have no employer email?
Many companies do not publish a contact email on their website, and some websites do not answer. Those listings show emailEnrichmentStatus: not_found or failed and cost nothing extra. Listings from the same company always share the same result.
How is the employer email billed?
Once per company per run, and only when an email is found. If you collect 20 listings from one company, you pay for its email once. If your run reaches the spending limit you set, emails that no longer fit are left out rather than charged.
Why did a run return fewer listings than maxResults?
Filters are strict: all selected filters must match, and a listing missing a field that you filter on is excluded rather than guessed. Check run-summary to see how many listings each stage removed. Monitor runs with onlyChanges on also return only changed listings, so an empty result can simply mean nothing changed.
Use the Actor's Issues tab to report a reproducible input and run ID. Internshala is a trademark of Scholiverse Educare Private Limited. You are responsible for using public data in accordance with applicable laws and the website's terms.
🔗 Other actors
- Apna.co Jobs Scraper ↗ - collects public blue and grey collar job listings in India.
- Instahyre Jobs Scraper ↗ - collects public Indian tech jobs with hiring alerts.
- India Jobs Feed ↗ - one combined feed across several Indian job boards.
- CutShort Jobs Scraper ↗ - collects public Indian technology and startup jobs.
- MyCareersFuture Singapore Scraper ↗ - collects public Singapore job listings.
- Job Bank Scraper ↗ - collects public Canadian job listings.