Indeed Jobs Universal Scraper avatar

Indeed Jobs Universal Scraper

Pricing

from $2.72 / 1,000 results

Go to Apify Store
Indeed Jobs Universal Scraper

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

Scrapifier

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

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.

Apify Actor

๐ŸŽฏ 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?

FieldDescription
jobKeyIndeed's unique job id
titleJob title
company, employerKeyCompany name and Indeed employer id
companyRating, companyReviewCountNot returned for this listing type (always null). Company page / reviews URLs are still filled when Indeed links a profile.
location, city, stateJob location as displayed, plus parsed city and region
remote, remoteTypeRemote flag and Indeed's tag (Remote, Hybrid work)
salaryMin, salaryMax, salaryPeriodExtracted salary bounds and period (YEARLY, MONTHLY, HOURLY...)
salaryTextSalary as displayed, with currency ($105,000 - $145,000 a year)
jobTypes, scheduleFull-time, Part-time, Contract... and shifts (8 hour shift, Monday to Friday) when tagged
postedAt, postedRelativePosting date (YYYY-MM-DD) and as displayed (3 days ago)
isNew, sponsored, urgentlyHiring, indeedApply, expiredListing flags
descriptionFull plain-text job description (with fullDescription on)
benefits, skills, occupations, attributesBenefits, skills, occupation taxonomy, and every Indeed tag on the listing
url, applyUrlJob page on Indeed and the application URL (employer site or Indeed Apply)
companyUrl, companyReviewsUrl, companyLogo, companyWebsiteIndeed profile, reviews, logo and corporate site
companyIndustry, companyEmployees, companyRevenue, companyDescriptionCompany dossier for the hiring company
searchInputThe 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

  1. Type your Job title / keywords (data engineer, nurse) and a Location (New York, NY, Paris (75), London), and pick the Indeed country site.
  2. Optionally filter: Posted within (24 hours to 14 days), Job type, Remote jobs only, a Search radius, and sort by Most recent first.
  3. 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.
  4. 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.
  5. 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

FieldKeyTypeDefaultDescription
Job title / keywordskeywordstringdata engineer (prefill)What to search for, as typed on Indeed. Empty with a location = every job there.
LocationlocationstringNew York, NY (prefill)City, state, postcode or Remote, as accepted by Indeed. Empty = the whole country.
Indeed country sitecountryselectwwwOne 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 URLsstartUrlsarray of URLsnoneFull Indeed search result URLs, scraped with their own filters in addition to the keyword search.
Maximum jobsmaxJobsinteger100Total cap (0 = every unique job returned for the search).
Posted within (days)datePostedselect00 any time, 1, 3, 7 or 14 days (Indeed's own date filter).
Job typejobTypeselectanyfulltime, parttime, contract, temporary, internship, permanent, subcontract, apprenticeship, new_grad. Availability varies by country.
Remote jobs onlyremoteOnlybooleanfalseApply Indeed's Remote filter to the keyword search.
Search radiusradiusintegernoneDistance around the location, in Indeed's unit for that country (miles on indeed.com, km on most others).
Sort bysortselectrelevancerelevance or date (most recent first, best for monitoring).
Fetch full job descriptionsfullDescriptionbooleantrueInclude the full plain-text description. Off = omit it for smaller, faster records.
Flatten outputflattenbooleanfalseLists become comma-separated strings for CSV and Excel.
Report input statusemitInputStatusbooleantrueWrite an input_status report to the run's OUTPUT record.
Proxy configurationproxyConfigurationobjectApify Proxy onOptional; 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 by jobKey. Set maxJobs to 0 to collect every unique job returned for that search.
  • Full descriptions come with each listing in plain text. Turn fullDescription off 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 (companyRating and companyReviewCount are 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.

๐Ÿ’ฌ 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.