Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

from $3.70 / 1,000 results

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Pricing

from $3.70 / 1,000 results

Rating

0.0

(0)

Developer

Lowland Data

Lowland Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Indeed Jobs Scraper — job postings from 13 Indeed sites as clean JSON

Extract job postings from Indeed — titles, employers, locations, posting dates, salary when published, employment types and remote flags — as flat JSON rows for recruiting pipelines, market research and job boards. Search any role in any country Indeed runs, with a radius, a posted-since window and newest-first sorting.

Live health record: lowlanddata.com/status/indeed-scraper - 30-day success rate and daily canary results, failures included. Full input/output reference: tool page.

No personal data, ever. Employers appear as what they are — companies, with their public Indeed rating and review count. Recruiter contact persons, hiring-manager names and applicant anything are never extracted: there is no field for them and there never will be. One honest edge: the posting's own summary text is reproduced as the employer wrote it, so an ad that names a contact person in its own prose carries that text as published.

Quick start (30 seconds)

  1. Type a role into what (data engineer, nurse, warehouse).
  2. Pick a country and optionally a where (city, region or postal code).
  3. Click Start, then open the dataset's Overview tab or Export as CSV/Excel/JSON.

Optional: a search radius, posted within N days, remote only, and newest first. Everything works on a daily Schedule.

What you can build with it

  • A hiring radar. Schedule daily with postedWithinDays: 1 — every new posting for your role and city lands each morning, before it circulates.
  • Competitor hiring watch. Filter rows by companyName; a competitor opening five data roles is telling you their roadmap out loud.
  • Salary research. salaryMin/salaryMax/salaryPeriod wherever the employer publishes a band, plus the raw salaryText exactly as printed.
  • Job boards and newsletters. Clean rows with employer, location, remote flag and a tracking-free link — ready to republish as your niche board.

What you get

One JSON object per posting:

{
"jobId": "a9bd9c57774e3bc4",
"title": "Full Stack Engineer Python React (m/w/d)",
"url": "https://de.indeed.com/viewjob?jk=a9bd9c57774e3bc4",
"companyName": "Tech Punk GmbH",
"companyRating": 4.1,
"companyReviewCount": 128,
"location": "10969 Berlin",
"city": "Berlin",
"region": "BE",
"postCode": "10969",
"isRemote": false,
"datePosted": "2026-01-15T06:00:00.000Z",
"postedLabel": "vor 30+ Tagen",
"jobTypes": ["Vollzeit", "Festanstellung"],
"snippet": "Wir bieten Python und React",
"salaryText": "100.000 € pro Jahr",
"salaryMin": 100000,
"salaryMax": 100000,
"salaryCurrency": "EUR",
"salaryPeriod": "YEARLY",
"isSponsored": true
}

Links come back without Indeed's tracking parameters, so they stay stable and shareable.

How much does it cost?

Pay per job row plus a small start fee — no subscription. A daily 100-job radar costs cents per day. Free-plan users can try it capped at 5 jobs. Platform usage is billed by Apify; Indeed needs the unblocker to get through at all, so runs cost a little more than a plain HTML site.

Not technical? Let your AI assistant set it up

I want to use the Indeed Jobs Scraper (lowlanddata/indeed-scraper) on Apify.
What I want: [E.G. "all new nursing jobs within 25km of Manchester, posted this week"]
Guide me to:
1. Propose input values: what, country, where, radiusKm,
postedWithinDays, remoteOnly, sortByDate and maxItems.
2. Explain how to run it in the Apify Console and export CSV.
3. Suggest a daily Schedule setup for a morning hiring radar.

Input reference

FieldTypeDefaultNotes
whatstringsoftware engineerRole or keyword, as you would type it on Indeed.
wherestringCity, region or postal code; empty searches the whole country.
countrystringusOne of 13 Indeed sites: us, uk, ie, ca, de, at, ch, fr, be, nl, es, it, pl.
radiusKmintegerRadius around the location (1-100). Ignored without where.
postedWithinDaysintegerOnly postings from the last N days (1-30).
remoteOnlybooleanfalseOnly postings Indeed flags as remote.
sortByDatebooleanfalseNewest first instead of Indeed's relevance ranking.
maxItemsinteger200Stop after this many jobs.
proxyConfigurationobjectresidentialIndeed refuses repeated requests from one address — keep this as it is.

Scheduling and API use

curl -X POST "https://api.apify.com/v2/acts/lowlanddata~indeed-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"what": "data engineer", "where": "Berlin", "country": "de", "postedWithinDays": 7, "maxItems": 100}'

Use it with AI agents (MCP)

Run it directly from Claude, Cursor and other MCP clients: apify.com/lowlanddata/indeed-scraper/api/mcp.

Job postings are published to be found — employers pay to distribute them. This actor reads only public search pages, takes no applicant or recruiter personal data, and identifies employers only by their public business identity. Factual posting data is exactly what the postings exist to communicate. How you use it downstream is yours to assess.

FAQ

Why does it need Apify's unblocker? Indeed refuses a second request to the same URL from the same address, answers paging with a challenge page, and as of 11 September blocks plain residential addresses outright - eleven consecutive attempts, all refused, while the unblocker got through every time. Every page goes out on a fresh session through it. That is measured behaviour, not a guess.

Why do some rows have no salary? Most employers do not publish one. salaryText carries it verbatim when they do, and salaryMin/salaryMax only when Indeed managed to parse a band.

Why is postedLabel in German/French/Spanish? It is Indeed's own wording, kept as served. Use datePosted for anything you need to compute with — it is always ISO 8601 in UTC.

What is dateListed? When the posting entered Indeed's index, which can be much later than datePosted for a re-listed ad.

Sponsored rows? isSponsored flags paid placements so you can filter them out.

Troubleshooting

  • "challenge or interstitial page" — Indeed served a captcha instead of results. The actor treats that as a block and retries on a fresh route rather than reporting an empty success. Re-run in a few minutes if a whole run fails.
  • Fewer jobs than the result count suggests — Indeed's own count includes postings it will not page through. The run stops when pages stop yielding new rows.

If this saves you an afternoon, a rating on this page takes ten seconds and helps other buyers find the compliance-clean option.