Indeed Jobs Scraper
Pricing
from $2.00 / 1,000 results
Indeed Jobs Scraper
Search Indeed by keyword + location and get structured job listings — title, company, salary range, rating, location, remote flag, posted date and (optionally) the full job description.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search Indeed by keyword and location and get clean, structured job listings — job title, company, salary range, company rating, location, remote flag, and posting date — with an option to pull the full job description for every result. No account, no login, no API key.
Why use this actor
- Keyword + location search, just like using Indeed itself (the "what" and "where" boxes).
- 17 country sites supported — United States, UK, Canada, Australia, India, Germany, France, and more.
- Real salary data — where Indeed shows an actual employer-provided pay range, you get the exact numbers (
salaryMin/salaryMax) plus whether it's a real posted salary or an estimate. - Full job descriptions on demand — flip one switch to get the complete description, benefits list, and salary text for each job.
- Company signals — rating, review count, and remote flag on every listing.
- Clean JSON output, ready for spreadsheets, databases, or your own pipelines.
- Nothing fails silently — if a search returns nothing, you get a clear reason, not an empty file.
How it works
- You enter a search keyword, a location, and pick the country site.
- The actor runs that search on Indeed and reads the job listings.
- Optionally, it opens each job to add the full description, benefits, and salary text.
- Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You don't manage any of the fetching, retries, or blocking — just describe the search you want.
Important: how many results you get per search
Indeed shows search results as pages, but for visitors who are not signed in, only the first page of a search is publicly available — trying to open page 2 sends you to a sign-in screen. This is Indeed's own limit, not the actor's.
What this means for you: each search returns the first page of results (about 24 jobs) for that exact query. The actor detects the sign-in wall and stops cleanly — it never crashes or loops.
How to get more jobs: run narrower searches instead of trying to page deeper. For example:
- Add a date filter (
fromage) like "last 3 days" to keep pulling fresh listings over time. - Use a tighter location plus a radius (e.g. a specific city + 25 miles).
- Use more specific keywords (e.g. "senior react developer" instead of "engineer").
- Split one broad search into several focused ones and combine the results.
The number of total matches Indeed reports for your search is included in every record as searchTotalJobCount, so you always know how big the full pool is.
Input
{"query": "software engineer","location": "New York","country": "us","fromage": 7,"radius": 25,"fetchDetail": true,"maxItems": 50,"maxConcurrency": 4,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | Description |
|---|---|---|
query | string | Search keywords — job title, skill, or company (the Indeed "what" box). |
location | string | City, state, postal code, or region (the Indeed "where" box). Leave empty to search the whole country. |
country | string | Which Indeed country site to search: us, uk, ca, au, in, ie, de, fr, es, it, nl, za, sg, nz, br, mx, ph. Default us. |
fromage | integer | Only return jobs posted within this many days (e.g. 1, 3, 7, 14). Optional. |
radius | integer | Distance around the location to include, e.g. 25. Optional. |
fetchDetail | boolean | If true, opens each job to add the full description, benefits, and salary text. Slower but richer. Default false. |
maxItems | integer | Overall cap on jobs returned. 0 = all available on the first results page. Default 50. |
maxConcurrency | integer | How many job pages to open in parallel when fetchDetail is on. Default 4. |
proxyConfiguration | object | Residential proxy strongly recommended. If you don't set a country here, it's matched automatically to the country you chose. |
Output
One record per job. Below is a real record captured from the search software engineer in New York (US) — with fetchDetail off:
{"_input": "software engineer @ New York (us)","_source": "S1-jobcards","_scrapedAt": "2026-07-10T11:53:50Z","recordType": "JOB","jobkey": "c886fc9e763b5619","jobUrl": "https://www.indeed.com/viewjob?jk=c886fc9e763b5619","positionName": "Java Lead Software Engineer","company": "JPMorganChase","location": "New York, NY 10001","isRemote": false,"salaryMin": 152000,"salaryMax": 215000,"salaryType": "YEARLY","salaryCurrency": "USD","salaryText": "$152,000 - $215,000 a year","salarySource": "EXTRACTION","companyRating": 3.9,"companyReviewCount": 20384,"postedAt": "30+ days ago","pubDate": 1777525200000,"isNew": false,"urgentlyHiring": false,"indeedApplyable": false,"companyIdEncrypted": "dfe1b23f5f99f0a7","companyOverviewLink": "/cmp/Jpmorganchase-2","searchQuery": "software engineer","searchLocation": "New York","searchCountry": "us","searchTotalJobCount": 2277}
When fetchDetail is true, each record also gets the full job content (real values from the same job):
{"_source": "S1-jobcards+S2-viewjob","detailCompanyName": "JPMorganChase","detailJobTitle": "Java Lead Software Engineer","descriptionText": "JOB DESCRIPTION\n\nWe have an opportunity to impact your career and provide an adventure where you can push the limits of what's possible.\n\nAs a Lead Software Engineer at JPMorganChase within the Trust and Sec... (full text continues)","descriptionHtml": "<div><b>JOB DESCRIPTION</b> ... </div>","detailBenefits": [{ "key": "HJUWZ", "label": "Tuition reimbursement" },{ "key": "EY33Q", "label": "Health insurance" }],"detailSalaryText": "$152,000 - $215,000 a year","datePublished": null}
Output fields
| Field | Type | Description |
|---|---|---|
_input | string | The search that produced this record (query @ location (country)). |
_source | string | Where the data came from — S1-jobcards (search) or S1-jobcards+S2-viewjob (search + full detail). |
_scrapedAt | string | UTC timestamp when the record was collected. |
recordType | string | Always JOB. |
jobkey | string | Indeed's unique job ID. |
jobUrl | string | Direct link to the job on Indeed. |
positionName | string | Job title. |
company | string | Employer name. |
location | string | Job location as shown. |
isRemote | boolean | Whether the job is flagged remote. |
salaryMin / salaryMax | number | Salary range numbers, when an actual range is provided. |
salaryType | string | Pay period, e.g. YEARLY, HOURLY. |
salaryCurrency | string | Currency, e.g. USD. |
salaryText | string | Salary as shown, e.g. $152,000 - $215,000 a year. |
salarySource | string | EXTRACTION = employer-provided real salary; ESTIMATION = Indeed estimate. |
companyRating | number | Company rating (out of 5), if available. |
companyReviewCount | number | Number of company reviews. |
postedAt | string | Human-readable posting age, e.g. 3 days ago. |
pubDate | number | Posting date (Unix milliseconds). |
isNew | boolean | Whether Indeed flags the job as new. |
urgentlyHiring | boolean | Whether Indeed flags urgent hiring. |
indeedApplyable | boolean | Whether the job supports Indeed's one-click apply. |
companyIdEncrypted | string | Indeed's internal company reference. |
companyOverviewLink | string | Path to the company page on Indeed. |
searchTotalJobCount | number | Total jobs Indeed reports for your search (the full pool size). |
descriptionText | string | Full job description as plain text. (only with fetchDetail) |
descriptionHtml | string | Full job description with original formatting. (only with fetchDetail) |
detailBenefits | array | Listed benefits. (only with fetchDetail) |
detailSalaryText | string | Salary text from the job page. (only with fetchDetail) |
datePublished | number | Publish date from the job page, when present. (only with fetchDetail) |
Every job also carries all of Indeed's original listing fields verbatim (company review link, job type tags, location details, and more) alongside the friendly fields above, so nothing is lost.
Searches that return nothing (or are stopped by the sign-in wall on page 1) produce a record with an _error field instead of job data — so a run never fails silently.
Notes
- Pick the country that matches your location — search
londonwithcountry: "uk",torontowithcountry: "ca", and so on. salarySourcematters —EXTRACTIONis a real employer salary;ESTIMATIONis an Indeed estimate. Filter on this if you only want confirmed pay.- Each search returns Indeed's first results page (about 24 jobs). Use
fromage,radius, and more specific keywords to cover more ground — see "how many results you get per search" above. - Residential proxy is recommended, especially for non-US country sites.