
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape internships and fresher jobs from Internshala by keyword, category, city or URL: title, company, stipend or salary, location, duration, start date, applicants, skills, perks and full description.
Scrape internships and fresher jobs from Internshala in seconds: title, company, stipend or salary, location, duration, start date, applicants, skills, perks, posted date and the full description. Search by keyword, category and city, filter by work from home, stipend or duration, or paste any Internshala results page. No login needed, and a thousand listings cost about 30 cents all in.
| Field | What it does |
|---|---|
query | Keywords, one search per keyword. Keyword search runs on its own. |
category, location | Category names (web-development, data-science, marketing, …) and cities (mumbai, delhi, bangalore, …). One search per combination. |
listingType | internship, job (all levels) or fresher-job. |
startUrls | Internshala results pages or single listing pages. |
maxResults | Total listings to save. 0 means every listing Internshala shows for the search. |
workFromHome, partTime, forWomen | Listing type filters. |
durationMonths | Internships up to 1, 2, 3, 4, 6, 12, 24 or 36 months. |
minStipend, minSalary | Minimum monthly stipend or yearly salary in INR. |
withJobOffer, fastResponse, earlyApplicant | Internship signals. |
includeDetails | Open each listing for the full description (default on). |
descriptionMaxLength, excludeEmptyFields | Shape the output. |
proxyConfiguration | Datacenter proxies by default. |
{
"query": ["web development"],
"listingType": "internship",
"maxResults": 20,
"workFromHome": true,
"minStipend": 5000
}
Each listing is one dataset row.
| Field | Description |
|---|---|
title, company, companyUrl, companyWebsite, companyLogo | The listing and who posted it |
listingType, location, workMode, isWorkFromHome, isPartTime | Type and where the work happens |
stipendText, salaryMin, salaryMax, salaryPeriod | Pay as shown and as numbers (INR) |
duration, durationMonths, startDate, applyBy, validThrough | Timing |
skills, perks, numberOfOpenings, applicantCount | Requirements and competition |
description, descriptionHtml, whoCanApply, otherRequirements, aboutCompany | Full text |
hasJobOffer, jobOfferText, activelyHiring, earlyApplicant | Signals |
descriptionMarkdown, extractedEmails | Every section as one Markdown document, and any email written in the listing text |
postedAt, publishedAge, canonicalUrl, scrapedAt, contentHash, contentQuality | Provenance and change detection |
Example (fictional listing):
{
"jobKey": "9000001",
"listingType": "internship",
"title": "Web Development - Internship",
"company": "Northwind Labs",
"location": "Work from home",
"workMode": "remote",
"isWorkFromHome": true,
"stipendText": "₹ 8,000 - 12,000 /month",
"salaryMin": 8000,
"salaryMax": 12000,
"salaryPeriod": "MONTH",
"duration": "3 Months",
"durationMonths": 3,
"startDate": "Immediately",
"numberOfOpenings": 2,
"applicantCount": 87,
"skills": ["HTML", "CSS", "JavaScript", "React"],
"perks": ["Certificate", "Letter of recommendation", "Flexible work hours"],
"hasJobOffer": true,
"postedAt": "2026-10-10",
"publishedAge": "Posted 4 days ago",
"applyBy": "9 Nov' 26",
"description": "Selected intern's day-to-day responsibilities include:\n1. Build responsive pages with React\n2. Fix bugs and review pull requests\n3. Work with the design team on new features",
"canonicalUrl": "https://internshala.com/internship/detail/example-listing-9000001",
"extractedEmails": [],
"sourceDomain": "internshala.com",
"contentQuality": "full",
"detailFetched": true
}
$0.25 per 1,000 listings: a quarter of a cent per listing saved, with no start fee. Platform usage is billed on top and is small: in our test runs 1,000 listings with full details used about $0.04 of datacenter proxy traffic and under $0.01 of compute.
| Job | Listings | Approximate total |
|---|---|---|
| Quick check | 20 | ≈ $0.007 |
| One search | 100 | ≈ $0.03 |
| Big pull | 1,000 | ≈ $0.30 |
| Every internship on the site | ~7,500 | ≈ $2.25 |
Set a maximum charge on the run and the scraper stops cleanly when it is reached, so you never pay for more than you allow.
Is it legal to scrape Internshala? The actor reads public listing pages that anyone can open without logging in. You are responsible for using the data in line with Internshala's terms and local law, and for not collecting personal data you have no right to use.
Do I need a login or cookies? No. Everything comes from public pages.
Do I need a proxy? Datacenter proxies are on by default because Internshala limits requests per IP. Switch to residential in the Proxy section if you ever see "blocked" in the run status.
How many results can I get? Every listing Internshala shows for the search. An unfiltered internship search holds several thousand, and the run stops cleanly when the list ends. Set maxResults to cap it.
What if a field is empty? Not every listing has every field (for example a stipend, a duration for jobs, or a company website). Empty fields are null, or removed when Exclude empty fields is on.
Can I schedule it or call it from code? Yes. Use schedules, webhooks or the API like any other actor.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queryarrayOptionalKeywords
Free-text keywords such as "web development" or "python". One search runs per keyword. Keyword search runs on its own: leave it empty to use Category and City instead.
categoryarrayOptionalCategories
Internshala category names or slugs, for example web-development, data-science, marketing, graphic-design, content-writing, human-resources, finance, sales, operations, android-app-development or machine-learning. A name Internshala does not know is searched as a keyword.
locationarrayOptionalCities
City names such as mumbai, delhi or bangalore. Combine with a category, or use alone for all listings in a city. Ignored when Work From Home is on.
listingTypeenumOptionaldefault "internship"Listing type
Internships, jobs, or only jobs aimed at freshers.
startUrlsarrayOptionalInternshala URLs
Optional. Paste any Internshala results page (for example a filtered search) or a single internship or job page. Pagination is followed for you.
maxResultsintegerOptionaldefault 20Max results
Maximum listings to save across all searches. 0 means no limit (every listing Internshala shows for the search).
workFromHomebooleanOptionaldefault falseWork from home only
Only remote listings.
partTimebooleanOptionaldefault falsePart-time only
Only part-time listings. Works with a category, a city or a keyword-free search.
durationMonthsarrayOptionalInternship duration (months)
Internships only. Keep listings that last at most this many months. One search runs per value. Leave empty for any duration.
minStipendintegerOptionaldefault 0Minimum stipend (INR per month)
Internships only. Keep listings whose top monthly stipend is at least this amount. Listings with no stated stipend are left out when this is set. 0 means no minimum.
minSalaryintegerOptionaldefault 0Minimum salary (INR per year)
Jobs only. Keep listings whose top yearly salary is at least this amount. Listings with no stated salary are left out when this is set. 0 means no minimum.
withJobOfferbooleanOptionaldefault falseWith job offer (PPO) only
Internships only. Only internships that promise a job offer afterwards.
fastResponsebooleanOptionaldefault falseFast response only
Internships only. Only employers that usually respond quickly.
earlyApplicantbooleanOptionaldefault falseEarly applicant only
Only listings where you would be among the first applicants.
forWomenbooleanOptionaldefault falseFor women only
Only listings from Internshala's internships and jobs for women.
includeDetailsbooleanOptionaldefault trueFetch full details
Open every listing page for the full description, skills, perks, who can apply, openings, applicants and company info. Turn off for a much faster run with search-card data only.
descriptionMaxLengthintegerOptionaldefault 0Description max length
Cut the description at this many characters. 0 keeps it whole.
excludeEmptyFieldsbooleanOptionaldefault falseExclude empty fields
Drop empty values from every row for smaller output.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default. Switch to residential if Internshala blocks requests. Proxy traffic is billed per GB, and compute is billed separately.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| jobKey | string | null | Internshala listing id |
| jobId | string | null | Stable hash id of the listing |
| listingType | string | null | internship or job |
| title | string | null | Listing title |
| company | string | null | Hiring company |
| companyLogo | string | null | Company logo URL |
| companyUrl | string | null | Company page on Internshala |
| companyWebsite | string | null | Company website |
| location | string | null | City or cities, or Work from home |
| isWorkFromHome | boolean | null | Remote listing |
| isPartTime | boolean | null | Part-time listing |
| workMode | string | null | remote, hybrid or in-office |
| inOfficeDaysPerWeek | integer | null | Office days per week for hybrid roles |
| category | string | null | Industry of the company |
| occupationalCategory | string | null | Role category |
| skills | array | null | Skills required |
| description | string | null | Full description as plain text |
| descriptionHtml | string | null | Full description as HTML |
| descriptionLength | integer | null | Description length in characters |
| whoCanApply | string | null | Eligibility criteria |
| otherRequirements | string | null | Other requirements |
| additionalInformation | string | null | Additional information such as stipend structure |
| perks | array | null | Perks |
| aboutCompany | string | null | Company overview |
| stipendText | string | null | Stipend or salary as shown on the page |
| salaryMin | integer | null | Minimum pay in INR |
| salaryMax | integer | null | Maximum pay in INR |
| salaryCurrency | string | null | Currency |
| salaryPeriod | string | null | MONTH or YEAR |
| employmentType | string | null | Employment type |
| duration | string | null | Internship duration |
| durationMonths | integer | null | Duration in months |
| experienceText | string | null | Experience required (jobs) |
| startDate | string | null | Start date |
| numberOfOpenings | integer | null | Number of openings |
| applicantCount | integer | null | Applicants so far |
| hasJobOffer | boolean | null | Internship promises a job offer |
| jobOfferText | string | null | Job offer text |
| activelyHiring | boolean | null | Employer is actively hiring |
| earlyApplicant | boolean | null | Early applicant listing |
| postedAt | string | null | Date posted (YYYY-MM-DD) |
| publishedAge | string | null | Posted age as shown, e.g. Posted 3 days ago |
| applyBy | string | null | Application deadline as shown |
| validThrough | string | null | Application deadline |
| canonicalUrl | string | null | Listing URL |
| applyUrl | string | null | URL to apply |
| sourceUrl | string | null | URL the data came from |
| searchQuery | string | null | Search that found the listing |
| searchUrl | string | null | Results page that listed it |
| scrapedAt | string | null | Scrape time |
| detailFetched | boolean | null | Whether the listing page was opened |
| descriptionMarkdown | string | null | All listing sections (description, who can apply, stipend, perks, skills, company) as Markdown |
| extractedEmails | array | Email addresses written in the listing text |
| sourceDomain | string | |
| sourceCountry | string | |
| fetchedAt | string | |
| contentQuality | string | full when the listing page was read, partial when only the search card was available |
| contentHash | string | SHA-256 of the main listing content, handy to detect changed listings |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One internship or job listing saved to the dataset. | $0.00025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/internshala-scraper').call({
"query": [
"web development"
],
"listingType": "internship",
"maxResults": 20,
"includeDetails": true,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/internshala-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/internshala-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Internshala jobs by category and city.
Work-from-home internships with a minimum stipend.
Entry-level jobs with a minimum salary.
Internships that can lead to a job offer.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.