Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

Pay per event

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Pricing

Pay per event

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

An Indeed scraper that returns job postings with the salary already parsed into a minimum, a maximum and a period, plus the employer's rating and review count. No login, no API key, no browser, no unblocking service.

It works because it does not ask as a browser. Indeed answers a browser user-agent with HTTP 403 from every exit, and serves the full page to a crawler.

What you get

  • Salary as numbers, not a string. salary_min, salary_max, salary_period (yearly, monthly, hourly) and salary_currency, taken from Indeed's own extraction. Around 80% of rows in a typical search carry one
  • Employer rating and review count on the same row as the job, so you can filter a listing by what people who work there say about it
  • Job types, shifts and benefits as lists, parsed out of Indeed's taxonomy rather than guessed from the description
  • Sponsored versus organic as a boolean, so paid placements do not quietly skew a market analysis
  • 14 national Indeed sites with the exit pinned per country, so a Dutch search returns euros and a UK one pounds
  • Multiple search terms and locations in one run, fanned out and deduplicated on Indeed's own job key
  • posted_at as a real timestamp, not "7 days ago"
  • Charged per row, not per compute unit. A flat $0,002 start fee plus what you actually receive

Why this one is cheaper to run

Request indeed.com with an ordinary browser user-agent from any IP we have and you get HTTP 403. That is why the Indeed actors on the market either drive a headless browser or pay a third-party unblocking service, and why their prices run up to $5 per 1.000 rows.

Ask for the same URL as a crawler and Indeed returns the full 2 MB page, because it wants its listings in search results and AI answers. One plain HTTP request, no browser, no unblocker. That cost difference is the reason this actor is priced at $1,50 rather than $5.

The second thing worth knowing is where the data is. The rendered page shows 16 job cards. window.mosaic.providerData carries around 40, each with 116 fields including the parsed salary range and the company rating. Reading the DOM gets you a third of the jobs and a fraction of the fields.

Input

FieldTypeRequiredDefaultWhat it does
queriesarrayyes["data engineer"]Job titles or keywords. Give several
locationsarrayno["New York"]Every term is run against every location
marketselectnousWhich national Indeed site, and therefore the currency
posted_withinselectnoany24h, 3d, week, 2weeks
job_typeselectnoanyFull-time, part-time, contract, temporary, internship
remote_onlybooleannofalseRestrict to remote-tagged jobs
sortselectnorelevancerelevance or date
limitintegerno100Jobs to return across all searches, 1 to 2000
retriesintegerno4Retry attempts per search

Output

{
"position": 1,
"job_id": "70c2803e703ec745",
"title": "Data Engineer",
"company": "ComputerPeople Staffing",
"company_rating": 4.8,
"company_reviews_count": 4,
"location": "Buffalo, NY 14221",
"is_remote": false,
"url": "https://www.indeed.com/viewjob?jk=70c2803e703ec745",
"salary_min": 100000,
"salary_max": 135000,
"salary_period": "YEARLY",
"salary_currency": "USD",
"salary_text": "$100,000 - $135,000 a year",
"job_types": [
"Full-time"
],
"posted_at": "2026-08-24T05:00:00Z",
"posted_relative": "7 days ago",
"easy_apply": true,
"is_sponsored": false,
"snippet": "Design and maintain data pipelines ...",
"market": "us",
"query": "data engineer",
"search_location": "New York"
}

Use cases

Salary benchmarking. salary_min, salary_max and salary_period come out of Indeed's own extraction rather than a regex over prose, so a run across one title in ten cities gives you a comparable distribution rather than a pile of strings. Filter to is_sponsored: false first, because paid placements over-represent agencies.

Recruitment market mapping. Run your competitor set as queries and your operating region as locations. company_rating and company_reviews_count on the same row tell you which of them are hiring hard and which have a reputation problem, which is the pair that predicts who is about to lose people.

Feeding a job board. Job keys are stable, so a scheduled run with posted_within: 24h and sort: date deduplicates cleanly into an index. snippet is plain text with the markup stripped, ready for search or embedding.

Tracking hiring as a business signal. A company that posts twenty engineering roles in a month is doing something. Run their name as a query weekly, count rows, and you have an early indicator that no press release gives you.

How it compares

this actorborderline/indeed-scrapervalig/indeed-jobs-scraper
Per 1.000 jobs$1,50$5,00$0,10
Actor-start feenonenone$0,001
Salary parsed to min / max / periodyesnot statedno
Employer rating and review countyesnono
Sponsored-versus-organic flagyesnono
Markets14fewerfewer
Needs a browser or unblockernolikelylikely

Honest about the other side: valig/indeed-jobs-scraper has 3.602 monthly users and charges $0,10 per 1.000, which is fifteen times cheaper than this actor. If you want titles and links in bulk and nothing else, that is the better buy. This one is for when the salary and the employer matter.

Pricing

One event. job costs $0,0015 per job returned, which is $1,50 per 1.000. Jobs are deduplicated on Indeed's job key before billing, so the same posting appearing in two searches is charged once. A $0,002 start fee covers the run itself; everything else is charged per row you receive. No per-compute-unit charges.

Limits and gotchas

  • First result page only. Indeed serves &start=10 and beyond as an empty shell to crawler user-agents. One search returns roughly 15 to 40 jobs depending on the market. Add search terms and locations to go wider rather than expecting deep pagination; that is what the array inputs are for.
  • Search count is capped at 60 per run (terms multiplied by locations), because each pair is a separate page fetch.
  • Salary is present on roughly 8 in 10 US rows and fewer in markets where employers publish less. A missing salary is a real absence, not a parse failure.
  • company_rating is 0 for employers with no reviews, which is how Indeed represents it rather than a null.
  • Sponsored jobs appear in results and are flagged. Filter them out before computing market statistics.
  • Job keys are per market. The same role on indeed.com and nl.indeed.com has different keys, so cross-market deduplication needs a title-and-company match.

FAQ

Why does my Indeed scraper get 403? Because it asks as a browser. Indeed refuses browser user-agents from datacenter and residential IPs alike. This actor asks as a crawler and is served the full page.

Do I need a proxy or an unblocking service? No unblocker and no browser. Requests egress from the market's own country so salaries and locations match that market.

Can I get more than 40 jobs for one search? Not from a single search: Indeed only serves the first page this way. Give more search terms and more locations instead, which is usually what you wanted anyway since it targets the segments you care about.

Is the salary reliable? It is Indeed's own extraction, exposed as min, max, period and currency. Where the employer published a range, you get the range. Where they published nothing, the fields are empty rather than estimated.

Which countries are supported? Fourteen: US, UK, Netherlands, Germany, France, Spain, Italy, Canada, Australia, India, Ireland, Belgium, Poland and Sweden.