Indeed Jobs Scraper
Pricing
from $2.00 / 1,000 jobs
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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
fullDescriptionsto 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
| Field | Type | Description |
|---|---|---|
queries | array (required) | Search strings, e.g. "software engineer", "registered nurse". |
location | string | City, state, ZIP, or Remote. Applied to every query. |
country | string | Two-letter Indeed country code (us, gb, de, …). |
maxItems | integer | Stop after this many jobs total. 0 = no limit. |
fullDescriptions | boolean | Fetch each job's complete description (slower, more requests). |
maxDaysOld | integer | Only jobs posted within N days. |
sort | string | relevance (default) or date. |
radius | integer | Miles from the location. |
maxPagesPerQuery | integer | Safety cap on pagination depth. |
proxyConfiguration | object | Required 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 installnpm 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