Indeed Scraper
Indeed Scraper
Scrape Indeed job listings by keyword and location. Returns structured job card data extracted directly from Indeed's internal page state — no secondary page loads required.
What you get
Each record contains:
| Field | Description |
|---|---|
jobKey |
Indeed internal job ID |
jobUrl |
Direct link to the job posting |
title |
Job title |
company |
Hiring company name |
companyRating |
Company star rating on Indeed |
location |
City, state, or "Remote" |
salary |
Pay range if shown on the listing |
jobType |
Full-time, Part-time, Contract, etc. |
remoteWorkModel |
Remote / Hybrid / On-site label |
isSponsored |
Whether the listing is a sponsored ad |
postedAt |
Posting date or recency label |
query |
Search keyword used |
searchLocation |
Location filter used |
scrapedAt |
ISO timestamp of when the record was scraped |
Note: Full job description text is not included. Indeed's listing page does not expose description content in its page state — only the job card metadata above is available without loading each individual job page.
How it works
Indeed is a React SPA protected by Cloudflare. This actor uses a Playwright browser with a US residential proxy to load the search results page and read job data directly from window.mosaic — Indeed's internal React state object. This avoids brittle DOM selectors and provides clean, structured data on the first page load.
Pagination is handled automatically: the actor enqueues subsequent pages (?start=10, ?start=20, ...) until maxItems is reached or results run out.
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search keywords (e.g. software engineer, registered nurse) |
location |
string | Yes | Location (e.g. New York, NY, Remote, London) |
maxItems |
integer | Yes | Maximum number of job listings to return |
Example:
{
"query": "data analyst",
"location": "San Francisco, CA",
"maxItems": 50
}
Limits and best practices
- Keep
maxItemsat 15 or below for test runs to stay within free-tier limits. - Indeed shows approximately 15 listings per page; each page requires a fresh browser render.
- Sponsored listings are included and flagged with
isSponsored: true. - Results reflect Indeed's current live index — the same search run twice may return different ordering due to Indeed's personalization and freshness ranking.
Use cases
- Job market research — track salary ranges and demand for specific roles across cities
- Recruiting intelligence — monitor competitor hiring activity
- Hiring trend analysis — compare job volume across industries and locations over time
- Lead generation — identify companies actively hiring in a given domain