Indeed Jobs Universal Scraper
Pricing
from $2.72 / 1,000 results
Indeed Jobs Universal Scraper
๐ผ Scrape Indeed jobs by keyword + location or URL, on any of 20 Indeed country sites. Get title, company + rating, location, remote flag, extracted salary, job types, posting date, FULL description, benefits and apply URL as clean structured data. No login, pay per result.
Pricing
from $2.72 / 1,000 results
Rating
0.0
(0)
Developer
Scrapifier
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Indeed Jobs Scraper
Scrape job listings from Indeed by keyword and location, or by pasting any Indeed search URL, and export them as JSON, CSV or Excel, or pull them straight from the API.
โก For every job you get the title, company (size, industry, logo, website), location, remote flag, the extracted salary (min, max, period and displayed text with currency), job types, posting date, the full job description in plain text, listed benefits, occupations, Indeed Apply / urgency flags, and the job, company and apply URLs. Works on 20 Indeed country sites. No login needed, 100 jobs per page until the search is exhausted. You pay per job.
๐ฏ Why scrape Indeed jobs?
- Job market research: measure demand, salaries and required skills for a role across cities or countries, straight from the world's largest job board.
- Lead generation: every company hiring a given profile in your region is a prospect. The company name, rating and Indeed page come with each job.
- Salary benchmarking: the extracted salary fields (min, max, period) make salary distributions a one-line aggregation.
- Job aggregation and alerts: sort by most recent, schedule the Actor hourly or daily, and feed new postings to your own board, newsletter or Slack.
- Recruiting intelligence: track which competitors are hiring, for what roles, with what salary ranges and urgency flags.
- AI and NLP datasets: full plain-text descriptions at scale for skills extraction, classification or matching models.
๐ What data does Indeed Jobs Scraper extract?
| Field | Description |
|---|---|
jobKey | Indeed's unique job id |
title | Job title |
company, employerKey | Company name and Indeed employer id |
companyRating, companyReviewCount | Not returned for this listing type (always null). Company page / reviews URLs are still filled when Indeed links a profile. |
location, city, state | Job location as displayed, plus parsed city and region |
remote, remoteType | Remote flag and Indeed's tag (Remote, Hybrid work) |
salaryMin, salaryMax, salaryPeriod | Extracted salary bounds and period (YEARLY, MONTHLY, HOURLY...) |
salaryText | Salary as displayed, with currency ($105,000 - $145,000 a year) |
jobTypes, schedule | Full-time, Part-time, Contract... and shifts (8 hour shift, Monday to Friday) when tagged |
postedAt, postedRelative | Posting date (YYYY-MM-DD) and as displayed (3 days ago) |
isNew, sponsored, urgentlyHiring, indeedApply, expired | Listing flags |
description | Full plain-text job description (with fullDescription on) |
benefits, skills, occupations, attributes | Benefits, skills, occupation taxonomy, and every Indeed tag on the listing |
url, applyUrl | Job page on Indeed and the application URL (employer site or Indeed Apply) |
companyUrl, companyReviewsUrl, companyLogo, companyWebsite | Indeed profile, reviews, logo and corporate site |
companyIndustry, companyEmployees, companyRevenue, companyDescription | Company dossier for the hiring company |
searchInput | The search or pasted URL that produced this job |
With flatten enabled, jobTypes and benefits become comma-separated strings so every CSV column stays flat.
๐ How to scrape Indeed jobs
- Type your Job title / keywords (
data engineer,nurse) and a Location (New York, NY,Paris (75),London), and pick the Indeed country site. - Optionally filter: Posted within (24 hours to 14 days), Job type, Remote jobs only, a Search radius, and sort by Most recent first.
- Or paste full Indeed search URLs (any country domain, any filters in the URL). Each URL is scraped with its own filters, on top of the keyword search.
- Set Maximum jobs (
0= every unique job returned for that search) and click Start. The Actor collects the results 100 per page and writes each listing with its full description. - Open the Storage tab to preview the jobs and export them as JSON, CSV, Excel or XML, or read them from the dataset API.
The same run can be started from the Apify API, the Python or JavaScript client, or put on a schedule for continuous monitoring.
๐ฅ Input parameters
| Field | Key | Type | Default | Description |
|---|---|---|---|---|
| Job title / keywords | keyword | string | data engineer (prefill) | What to search for, as typed on Indeed. Empty with a location = every job there. |
| Location | location | string | New York, NY (prefill) | City, state, postcode or Remote, as accepted by Indeed. Empty = the whole country. |
| Indeed country site | country | select | www | One of 20 domains: www (indeed.com), fr, uk, de, ca, au, in, es, it, nl, be, ch, ie, sg, ae, mx, br, pt, pl, at. Sets market, language and currency. |
| Indeed search URLs | startUrls | array of URLs | none | Full Indeed search result URLs, scraped with their own filters in addition to the keyword search. |
| Maximum jobs | maxJobs | integer | 100 | Total cap (0 = every unique job returned for the search). |
| Posted within (days) | datePosted | select | 0 | 0 any time, 1, 3, 7 or 14 days (Indeed's own date filter). |
| Job type | jobType | select | any | fulltime, parttime, contract, temporary, internship, permanent, subcontract, apprenticeship, new_grad. Availability varies by country. |
| Remote jobs only | remoteOnly | boolean | false | Apply Indeed's Remote filter to the keyword search. |
| Search radius | radius | integer | none | Distance around the location, in Indeed's unit for that country (miles on indeed.com, km on most others). |
| Sort by | sort | select | relevance | relevance or date (most recent first, best for monitoring). |
| Fetch full job descriptions | fullDescription | boolean | true | Include the full plain-text description. Off = omit it for smaller, faster records. |
| Flatten output | flatten | boolean | false | Lists become comma-separated strings for CSV and Excel. |
| Report input status | emitInputStatus | boolean | true | Write an input_status report to the run's OUTPUT record. |
| Proxy configuration | proxyConfiguration | object | Apify Proxy on | Optional; keep Apify Proxy on for cloud runs. |
Example input:
{"keyword": "data engineer","location": "New York, NY","maxJobs": 50,"datePosted": "7","sort": "date"}
To reproduce an exact Indeed search, build it on the site with all its filters and paste the results URL into startUrls: every parameter in the URL is kept, and pagination is handled for you.
๐ค Output example
Each job is one dataset item, exportable as JSON, CSV, Excel or via the API.
{"jobKey": "39829992fff11c16","title": "Data Engineer","company": "Vforce Infotech","companyRating": null,"companyReviewCount": null,"location": "Edison, NJ 08837","city": "Edison","state": "NJ","remote": null,"salaryMin": 60000,"salaryMax": 80000,"salaryPeriod": "YEARLY","salaryText": "$60,000 - $80,000 a year","jobTypes": ["Full-time", "Contract"],"postedAt": "2026-09-02","postedRelative": "Just posted","isNew": true,"sponsored": false,"urgentlyHiring": false,"indeedApply": true,"expired": false,"description": "Job Summary\n\nWe are seeking a dynamic and innovative Data Engineer to join our team and drive the development of robust data systems...","benefits": null,"url": "https://www.indeed.com/viewjob?jk=39829992fff11c16","applyUrl": "http://www.indeed.com/applystart?jk=39829992fff11c16&from=jobsearch","companyUrl": null,"companyReviewsUrl": null,"searchInput": "data engineer | New York, NY"}
The run's OUTPUT record also holds the statistics and, per search, an input_status entry with the number of jobs Indeed announced, the number collected and the status (ok, empty, error).
๐ก Ready-to-run examples
Fresh data-engineering jobs in New York (tested)
{ "keyword": "data engineer", "location": "New York, NY", "maxJobs": 50, "datePosted": "7", "sort": "date" }
Jobs in Paris from a pasted URL, without descriptions (tested)
{ "startUrls": [{ "url": "https://fr.indeed.com/jobs?q=data+engineer&l=Paris+%2875%29" }], "maxJobs": 100, "fullDescription": false }
Remote contract roles in the US
{ "keyword": "python developer", "location": "Remote", "country": "www", "jobType": "contract", "remoteOnly": true, "maxJobs": 100 }
Nursing jobs in London, flat CSV
{ "keyword": "nurse", "location": "London", "country": "uk", "datePosted": "14", "maxJobs": 200, "flatten": true }
Hourly job-alert feed: set sort to date, datePosted to "1", cap maxJobs, and schedule the Actor hourly. New jobKey values are new postings.
๐ฐ Pricing: how much does it cost to scrape Indeed?
From $4.00 per 1,000 jobs on the free plan, with automatic volume discounts down to $2.72 per 1,000 on higher Apify plans. You pay only for the results you receive, there is no subscription and no start fee. New Apify accounts get free monthly platform credits to try it.
Cost is driven purely by the number of jobs returned: cap it with maxJobs, and narrow the set with datePosted, jobType or remoteOnly before you pay for it.
โ๏ธ Performance, proxies and limits
- Speed: results come 100 jobs per page and are collected until the search is exhausted, with no login or cookies needed.
- Pagination: 100 jobs per page until there are no more results or you hit
maxJobs. Deduplicated byjobKey. SetmaxJobsto0to collect every unique job returned for that search. - Full descriptions come with each listing in plain text. Turn
fullDescriptionoff only if you want smaller records. - Filters: keyword, location, radius, country, date posted, job type, remote and sort are all applied, so you only keep matching jobs.
- Volume: the unique-job count can be below the number the website advertises (that total is inflated by sponsored and duplicate cards). The Actor stops when the results are exhausted, which is the full result set for that search.
- Proxy: optional. Keep Apify Proxy on for cloud runs; a residential proxy gives the most reliable runs.
- Company ratings are not part of this listing type (
companyRatingandcompanyReviewCountare null). Everything else the listing carries (description, salary, apply URL, company dossier, attributes) is included.
๐ Integrations and API
Run Indeed Jobs Scraper from the Apify API, the Python or JavaScript client, or on a schedule. Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook through Apify integrations. Every run's dataset is available as JSON, CSV, Excel or XML from the dataset API.
curl -X POST "https://api.apify.com/v2/acts/scrapifier~indeed-jobs-universal-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{ "keyword": "data engineer", "location": "New York, NY", "maxJobs": 25, "datePosted": "7" }'
โ FAQ
Is it legal to scrape Indeed?
The Actor only reads job listings that Indeed publishes to anyone without logging in. Listings can contain personal data (a recruiter's name in a description), so process them in line with GDPR and other privacy laws, respect Indeed's terms of use, and stay responsible for how you use the data. This is not legal advice.
Do I need an Indeed account, login or cookies?
No. Nothing to log in to, no cookies to paste, and the default proxy setting just works.
Can I export Indeed jobs to Excel or Google Sheets?
Yes. Every run's dataset downloads as CSV, XLSX, JSON or XML from the Storage tab, and the Google Sheets integration can push new jobs to a sheet automatically. Turn on flatten for flat columns.
Does it get the full job description?
Yes. fullDescription is on by default and the full plain-text description comes with each listing, so there is no extra request per job. Turn it off to omit the description for smaller records.
How many jobs can one search return?
Every unique job available for the search, 100 per page, until the results are exhausted. That can be fewer than the number the website prints at the top of the results. Set maxJobs to 0 to take the full set; split very broad queries by date, job type or location if you want them sliced.
Which countries does it cover?
20 Indeed domains: US, France, UK, Germany, Canada, Australia, India, Spain, Italy, Netherlands, Belgium, Switzerland, Ireland, Singapore, UAE, Mexico, Brazil, Portugal, Poland and Austria. Pick one in country, or paste URLs from any of them.
Are salaries always filled?
salaryMin, salaryMax and salaryText are filled whenever the employer states a salary or Indeed extracts one. In tests on US searches, over 90 percent of jobs carried a salary.
How do I monitor new postings?
Sort by date, set datePosted to "1", and schedule the Actor hourly or daily. Deduplicate on jobKey on your side, or just diff against the previous run.
๐ Related scrapers
- Indeed Company Reviews Scraper: employee reviews of the companies you find here, with ratings, pros and cons.
- Indeed Salaries Scraper: median pay per job title at any company.
- Glassdoor Jobs Scraper: job listings with Glassdoor company ratings and salary estimates.
- Glassdoor Salaries Scraper: salary ranges per job title and company.
- Glassdoor Company Overview Scraper: the full Glassdoor profile of any hiring company.
- Glassdoor Reviews Scraper: employee reviews of the companies you find here.
- Welcome to the Jungle Jobs Scraper: jobs and company profiles, France and Europe.
๐ฌ Support
Questions, bugs or a feature request? Open an issue in the Issues tab of this Actor, I answer quickly. If Indeed Jobs Scraper saves you time, a rating on the Store helps others find it.