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

Scrape public Indeed job listings by title and location, or from search and company URLs. Returns the title, company, salary, description, and apply link.
Search public Indeed jobs by title and location, or paste Indeed search, company, and job URLs, and get clean rows with the title, company, salary, job type, rating, full description, and apply link. No login, 60+ country sites, and $3.50 per 1,000 job listings.
| Field | Key | What it does |
|---|---|---|
| Position | position | Job title or keywords, for example web developer. |
| Location | location | City, postal code, or region. Blank searches the whole country. |
| Country | country | Indeed site for a title and location search, for example US, GB, DE. |
| Start URLs | startUrls | Search URLs, company jobs URLs, or single job URLs. |
| Max job listings per search | maxItemsPerSearch | Cap for the position search and for each start URL. Default 10. |
| Scrape company details | parseCompanyDetails | Adds companyInfo to each row. |
| Save only unique job listings | saveOnlyUniqueItems | Skips a job already saved earlier in the run. Default on. |
| Proxy configuration | proxyConfiguration | Datacenter by default. Residential if Indeed blocks the search. |
{
"position": "web developer",
"location": "San Francisco",
"country": "US",
"startUrls": [
{ "url": "https://www.indeed.com/cmp/Google/jobs" }
],
"maxItemsPerSearch": 10,
"parseCompanyDetails": false,
"saveOnlyUniqueItems": true,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
Filters that are part of a search URL (date posted, job type, experience, remote or hybrid, radius) are applied to that URL. The position search and each start URL run separately, and the cap applies to each.
One dataset row per job.
| Field | Description |
|---|---|
positionName, id, url | Job title, Indeed job key, and listing link. |
company, companyIndeedUrl | Employer name and its Indeed page. |
location | Job location as shown on Indeed. |
salary | Salary text exactly as Indeed prints it. |
jobType, jobSetting, experienceLevel | Employment type, workplace setting, and level when listed. |
rating, reviewsCount | Company rating and review count (0 if none). |
externalApplyLink | Employer apply link when available. |
postingDateParsed, scrapedAt | Posting and scrape timestamps. |
description, descriptionHTML | Full job text, plain and HTML. |
searchInput / urlInput | What produced the row: a position search or a start URL. |
companyInfo | Website, description, logo, and employee range, only when requested. |
{
"positionName": "Web Applications Developer",
"salary": "$122,667.11 - $159,467.24 a year",
"jobType": ["Full-time"],
"jobSetting": null,
"experienceLevel": ["Mid-level"],
"company": "Partnership HealthPlan of California",
"companyIndeedUrl": "https://www.indeed.com/cmp/Partnership-Healthplan-of-California",
"location": "Fairfield, CA 94534",
"rating": 3.2,
"reviewsCount": 91,
"url": "https://www.indeed.com/viewjob?jk=2d1bea3a3366c1d6",
"id": "2d1bea3a3366c1d6",
"postedAt": null,
"postingDateParsed": "2026-09-17T09:31:32.643Z",
"description": "Overview:\n\nTo design, develop, and test client server and web applications at PHC. ..."
}
(Trimmed: the apply link, scrapedAt, descriptionHTML, and the long description are shortened or removed.) postedAt is null; use postingDateParsed.
You pay $0.0035 per job listing, which is $3.50 per 1,000 listings. A search that finds nothing returns one notice row, which is billed as one result. Platform usage (compute and proxy) is billed on top.
Worked example: a 10-job search is 10 × $0.0035 = $0.035 in result fees plus a small compute charge of about $0.007, around $0.043 in total on the default datacenter proxy.
The actor reads only publicly visible job listings. You are responsible for using the data in line with Indeed's terms and applicable law.
No account. Datacenter proxy is the default and is built in.
A position, location, or URL that matches nothing saves no row and costs nothing. The run status says which inputs found nothing, and the OUTPUT record lists them under failedInputs with the reason.
Yes. Use a URL like https://www.indeed.com/cmp/Google/jobs in Start URLs.
The country menu covers the public Indeed sites such as the United States, United Kingdom, Canada, Germany, and India. A start URL uses the site in its own address.
Yes. Schedule runs in the console or start them and read the dataset through the API. If you are moving from another Indeed scraper with the same input names, the same input works here.
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.
positionstringOptionalPosition
Job title or keywords, the same words you would type into Indeed.
locationstringOptionalLocation
City, postal code, or region. Used with the position. Leave this blank to search the whole country.
countryenumOptionaldefault "US"Country
Indeed site for a title and location search. A start URL uses the country in its own address.
startUrlsarrayOptionalStart URLs
Indeed search URLs, company job URLs such as https://www.indeed.com/cmp/Google/jobs, or a single job URL. Each URL is scraped on its own, in addition to the position search.
maxItemsPerSearchintegerOptionaldefault 10Max job listings per search
Maximum listings to save for the position search and for each start URL. Each search has its own cap. Indeed shows at most about 600 to 750 jobs per search.
Company profile fields and duplicate listings.
parseCompanyDetailsbooleanOptionaldefault falseScrape company details
Add the company website, description, logo, employee range, and rating. This uses the same response as the job, so it does not add another request.
saveOnlyUniqueItemsbooleanOptionaldefault trueSave only unique job listings
Skip a job that was already saved by another search in this run.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default. Switch to residential if Indeed blocks the search. Proxy traffic is billed per GB.
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 |
|---|---|---|
| positionName | string | null | Job title. |
| company | string | null | Hiring company. |
| location | string | null | Location Indeed shows on the listing. |
| salary | string | null | Pay as Indeed displays it. |
| jobType | array | null | Full-time, part-time, contract, and similar. |
| jobSetting | array | null | Remote, hybrid, or in-person. The label follows the country site. |
| experienceLevel | array | null | Experience Indeed lists on the job. |
| rating | number | null | Company rating. 0 when Indeed has no reviews. |
| reviewsCount | number | null | Number of company reviews. |
| url | string | null | Public Indeed job page. |
| externalApplyLink | string | null | Employer apply URL. |
| companyIndeedUrl | string | null | Company profile on Indeed. |
| postedAt | string | null | Relative posting time, when Indeed provides one. |
| postingDateParsed | string | null | When the job appeared on Indeed. |
| description | string | null | Plain-text job description. |
| descriptionHTML | string | null | Job description as HTML. |
| id | string | null | Indeed job key. |
| scrapedAt | string | null | When this row was saved. |
| isExpired | boolean | null | Whether Indeed marks the job expired. |
| searchInput | object | null | Position, location, and country for a keyword search. |
| urlInput | string | null | Start URL that produced this job. |
| companyInfo | object | null | Company profile, included when company details are requested. |
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 |
|---|---|---|
| Job listing | One job listing, or the notice when a search finds nothing. | $0.0035 |
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/indeed-scraper').call({
"position": "web developer",
"location": "San Francisco",
"country": "US",
"startUrls": [
{
"url": "https://www.indeed.com/jobs?q=software+engineer&l=New+York"
}
],
"maxItemsPerSearch": 10,
"parseCompanyDetails": false,
"saveOnlyUniqueItems": 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/indeed-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/indeed-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.
Indeed jobs with company details.
Jobs from a company's Indeed jobs page.
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.