~/business/indeed-scraper

Indeed Scraper — Jobs, Employers, Reviews & Salaries

Scrape Indeed job listings with full descriptions and parsed salaries — and the employers behind them: company profiles, employee reviews, salary tables, and Q&A, joined on Indeed's own employer id. 62 country domains, no login required.

jobs TypeScriptCrawlee Global
proooxy/indeed-scraper — spec
categorybusiness / jobs
languageTypeScript
stackTypeScript, Crawlee
marketsGlobal
outputclean, RAG-ready JSON

key features

Both sides of Indeed in one run — jobs and the employers behind them

Joined on Indeed's own employer id, not on company name

Full job descriptions at the base rate, fetched in batches

Every filter verified against a control — non-working ones removed

62 country domains with currency, locale, and distance units handled

Scheduled monitoring — receive only postings new since your last run

use cases

  • Recruitment and talent intelligence across roles and markets
  • Salary benchmarking from parsed pay and employer salary tables
  • Competitor research — open headcount, ratings, and hiring velocity
  • Job boards and aggregators needing a clean, deduplicated feed
  • Lead generation — every posting is a company spending money to hire
  • Candidate matching scored against a skill list

input parameters

ParameterTypeRequiredDescription
scrapeModestringoptionalWhat to scrape — jobs, companies, or both
keywordsarrayoptionalJob titles or search terms
locationstringoptionalCity, state, or postcode to search in
countrystringoptionalIndeed country domain (62 supported)
startUrlsarrayoptionalIndeed search, job, company, or salary URLs
includeDescriptionbooleanoptionalInclude the full job description (HTML and text)
includeCompanyDetailsbooleanoptionalAlso return employer profiles, reviews, salaries, and Q&A
strictMatchbooleanoptionalDrop jobs whose title and description don't contain your keywords (Indeed pads results with loosely related and sponsored jobs)
resumeKeywordsarrayoptionalSkills from a CV; every job gets a 0-100 match score plus matched and missing skills. Not a search filter
onlyNewJobsbooleanoptionalReturn only postings not seen in previous runs
maxItemsnumberoptionalCap on jobs returned — the hard cap on run spend
proxyConfigurationobjectoptionalResidential proxy recommended

Output Example

 1{
 2  "recordType": "job",
 3  "source": {
 4    "jobKey": "f687cbdb754c430a",
 5    "canonicalUrl": "https://www.indeed.com/viewjob?jk=f687cbdb754c430a",
 6    "country": "US",
 7    "domain": "www.indeed.com",
 8    "scrapedAt": "2026-08-27T03:23:45.483Z"
 9  },
10  "title": "Registered Nurse (Multiple Openings)",
11  "normalizedTitle": "Registered Nurse",
12  "company": {
13    "name": "AdventHealth Central Texas",
14    "fccId": "11994ad5a40ae7aa",
15    "rating": 3.7,
16    "reviewCount": 4166
17  },
18  "location": {
19    "formatted": "Killeen, TX 76549",
20    "city": "Killeen",
21    "state": "TX",
22    "postalCode": "76549",
23    "country": "US",
24    "isRemote": false
25  },
26  "salary": { "min": 33.28, "max": 61.91, "currency": "USD", "period": "HOURLY", "isEstimate": true }
27}

Five record types share the dataset — jobs, companies, reviews, salaries, and Q&A — told apart by recordType. Jobs join to companies on company.fccId.

Pricing

Pay-per-event — you are billed for the records you keep:

EventPriceWhat it covers
Job$0.003One job with title, location, parsed salary, and description
Job detail (extra)$0.002Optional extra detail beyond the standard record
Search request$0.002One search or paging request
Company profile$0.006One employer profile with size, revenue, and ratings
Company review$0.004One employee review with category ratings
Salary record$0.003One salary table row by role and employer
Question & answer$0.003One community question with its top answers
Employer contact (extra)$0.01Business contact address from the employer’s own site

Tips

  • Scope the search yourself. A query you already narrowed to a city is never silently widened; broad queries are re-run as narrower slices only when you enable widening.
  • Use onlyNewJobs for monitoring. Skipped postings cost no requests and no charge, so a daily run over a stable query stays cheap.
  • maxItems is your spend cap. It is the hard ceiling on what a run can charge — set it before raising concurrency.
  • Turn on strictMatch when feeding a downstream model; padding and sponsored results are the main source of noise in Indeed data.

faq

Can I get jobs and company data in the same run?
Yes. Switch on includeCompanyDetails and every employer the search discovered comes back too, with whichever of profile, reviews, salaries, and Q&A you ask for. Jobs join to companies on Indeed's employer id rather than on company name.
How much of a search can it actually collect?
On a search Indeed reported as 2,676 postings, paging alone returned 737 unique jobs in 41 requests, and 1,388 in 369 requests with widening enabled. Every run logs what it collected against what Indeed claimed.
Does it return sponsored and loosely-related postings?
Only if you want them. Indeed pads every result page with them; strictMatch drops them, judged against the full description rather than the snippet.

related in ~/business

Run Indeed Scraper — Jobs, Employers, Reviews & Salaries, or get a custom build

Start extracting on Apify in minutes, or hire me to build a bespoke scraper and RAG pipeline for your exact source and schema.

run on Apify get custom data