Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Bulk-scrape Indeed job listings: title, company, salary, location, posting date, snippet, and optional full descriptions. Any country, any search, proxy-backed against Indeed's bot protection.

Pricing

from $2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Vince Gonzalez

Vince Gonzalez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Bulk-collect job listings from Indeed: title, company, salary, location, posting date, snippet, and optionally the full job description — for any search, in any Indeed country, at whatever volume you need. Proxy-backed so it works through Indeed's bot protection instead of dying at the first block.

Built for recruiters, job-market analysts, salary-benchmarking teams, ATS/aggregator builders, and anyone who needs Indeed data as structured rows rather than browser tabs.


What it does

  • Every field from the results page: job key, title, company, formatted location (plus split city/state), salary (when Indeed shows or extracts one), job types, posting age, company rating and review count, sponsored flag, and the snippet.
  • Full descriptions on demand. Turn on fullDescriptions to fetch each job's complete description text (one extra request per job).
  • Any country. Routes to the correct Indeed site (us, gb, ca, au, de, fr, nl, in, and more).
  • Paginates and dedupes. Walks the result pages per query, removes duplicate jobkeys, and stops cleanly at your limit or the end of results.
  • Built for Indeed's defenses. Indeed is Cloudflare-protected and blocks datacenter IPs immediately — the number-one reason Indeed scrapers fail. This actor retries blocked pages on fresh proxy sessions and ships defaulting to the residential proxy group.

Input

FieldTypeDescription
queriesarray (required)Search strings, e.g. "software engineer", "registered nurse".
locationstringCity, state, ZIP, or Remote. Applied to every query.
countrystringTwo-letter Indeed country code (us, gb, de, …).
maxItemsintegerStop after this many jobs total. 0 = no limit.
fullDescriptionsbooleanFetch each job's complete description (slower, more requests).
maxDaysOldintegerOnly jobs posted within N days.
sortstringrelevance (default) or date.
radiusintegerMiles from the location.
maxPagesPerQueryintegerSafety cap on pagination depth.
proxyConfigurationobjectRequired in practice — Apify Proxy RESIDENTIAL.

Example input

{
"queries": ["software engineer", "product manager"],
"location": "Remote",
"country": "us",
"maxItems": 200,
"fullDescriptions": false,
"sort": "date",
"proxyConfiguration": { "useApifyProxy": true, "groups": ["RESIDENTIAL"] }
}

Output

One row per job.

{
"jobkey": "a0a775f6dca60ef3",
"title": "Senior Software Developer",
"company": "TherapyNotes.com",
"location": "Philadelphia, PA",
"city": "Philadelphia",
"state": "PA",
"remote": false,
"salary": "$110,000 - $135,000 a year",
"jobTypes": ["Full-time"],
"postedRelative": "22 days ago",
"createDate": 1787000000000,
"companyRating": 3.6,
"companyReviewCount": 210,
"sponsored": true,
"urgentlyHiring": false,
"snippet": "Build and maintain ...",
"url": "https://www.indeed.com/viewjob?jk=a0a775f6dca60ef3",
"searchQuery": "software engineer",
"searchLocation": "Remote",
"description": null
}

description is populated only when fullDescriptions is on.

Pricing

Pay-per-event: charged per job returned. A run that is blocked and returns nothing costs nothing.

Notes & limits

  • Residential proxies are effectively required. Datacenter IPs get a 403/Cloudflare block almost immediately. This is a property of Indeed, and the reason the proxy default is residential.
  • Salary appears only when Indeed displays or extracts one — many listings have none.
  • Indeed values like company rating come from Indeed and are passed through unmodified.
  • This actor reads publicly listed job postings. Use the output in accordance with Indeed's Terms of Service and applicable law in your jurisdiction.

Running locally (developers)

npm install
npm test

src/test-local.js proves the extraction logic offline against a fixture, then attempts one live search — which is expected to 403 from a datacenter IP (exactly what residential proxies solve in production). Core logic lives in src/indeed.js with no dependency on the Apify SDK.


www.f-keys.com | © 2026 F-Keys Creative LLC