Export public internship and fresher-job listings from Internshala into a structured dataset for recruiting research, job-market mapping, and compensation analysis. This Internshala scraper returns listing identity, employer, location, skills, compensation, deadlines, and canonical listing links from public pages.
It is designed for teams that need a repeatable export rather than manual copying. Use a keyword or a public Internshala board URL, choose a small or large result cap, and receive one normalized row per unique listing. It also works as an Internshala jobs scraper for research into internship listings India teams need to monitor.
Who is it for
- Recruiting teams monitoring public internship and entry-level hiring activity.
- Talent-market researchers comparing employers, locations, skills, and compensation.
- Operations and analytics teams building a recurring public-listing dataset.
- Agents and developers that need Internshala listings in an API-ready format.
What you get
Each dataset item represents one public Internshala listing. Core fields include:
listingId,listingType,title,company, andcanonicalUrllocation,isWorkFromHome,isPartTime,activelyHiring, andearlyApplicantskills,durationText,durationMonths,experienceText, andstartDatecompensationText, normalized INR compensation fields, andisUnpaidapplyBy,postedAt,numberOfOpenings, andcompanyLogoUrl- Public description and company context when available
Input recipes
Start with a small export:
{
"listingType": "job",
"startUrls": [{ "url": "https://internshala.com/jobs/" }],
"maxResults": 10,
"includeDetails": true
}
For internship listings without optional detail enrichment:
{
"listingType": "internship",
"maxResults": 10,
"includeDetails": false
}
Input settings
| Input | What it controls |
|---|---|
query |
Optional public-board keyword query. |
listingType |
job or internship; used when generating a public board URL. |
startUrls |
One or more public Internshala jobs or internships URLs. |
maxResults |
Maximum number of unique listings to export (1–100). |
includeDetails |
Adds available public listing-detail fields. |
category |
Optional public-board category filter. |
location |
Optional public-board location filter. |
workFromHome |
Restricts generated searches to work-from-home listings. |
partTime |
Restricts generated searches to part-time listings. |
minCompensation |
Optional minimum displayed compensation filter. |
durationMonths |
Optional internship duration filter. |
incrementalMode |
Keeps stable identity and content-hash fields useful for change tracking. |
Output example
{
"listingId": "public-listing-id",
"listingType": "job",
"title": "Business Development Associate",
"company": "Example Company",
"location": "Bengaluru",
"skills": ["Sales", "Communication"],
"compensationText": "₹ 3,00,000 - 5,00,000 /year",
"compensationMinInr": 300000,
"compensationMaxInr": 500000,
"applyBy": "2026-09-15",
"canonicalUrl": "https://internshala.com/job/detail/...",
"detailFetched": true
}
Use cases
- Build a weekly internship and fresher-job market tracker.
- Identify employers hiring for a skill, city, or work-from-home role.
- Compare public compensation and duration patterns across listings.
- Feed public job opportunities into an internal recruiting or research workflow.
API usage
Run the Actor with the same JSON used in the input recipes. The default dataset contains the exported rows.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/internshala-jobs-scraper').call({
listingType: 'job',
maxResults: 10,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/internshala-jobs-scraper").call(run_input={
"listingType": "internship",
"maxResults": 10,
"includeDetails": False,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
cURL
curl "https://api.apify.com/v2/acts/fetch_cat~internshala-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"listingType":"job","maxResults":10,"includeDetails":true}'
MCP and agent use
Add Apify MCP to a supported client, scoped to this Actor:
claude mcp add --transport http apify https://mcp.apify.com/?tools=fetch_cat/internshala-jobs-scraper
Or use this JSON configuration:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=fetch_cat/internshala-jobs-scraper"
}
}
}
Example prompts:
- “Export 20 public Internshala internship listings with compensation and deadlines.”
- “Find public fresher-job listings on Internshala and return company, location, skills, and apply-by date.”
Tips for reliable exports
- Begin with 5–10 results to confirm your filters return the right public board.
- Use a public board URL in
startUrlswhen you need an exact page context. - Enable
includeDetailswhen description and company context matter to your analysis. - Use
listingId,canonicalUrl, andcontentHashto deduplicate or monitor changes across runs.
Support
Report a reproducible public URL, input, and run ID through the Actor’s Issues tab. Do not include account credentials or private applicant information.