Job market and hiring-demand research
Use Indeed endpoints to turn job market and hiring-demand research into repeatable API requests with documented inputs and JSON responses.
Turn public Indeed job search into structured hiring data — keyword and location job search, one job's full detail by job key, and location autocomplete for building valid search queries. Credential-free.
Search Indeed job postings by keyword and location and get job detail and location autocomplete as structured JSON.
Endpoint families
3
Documented params
12
Examples
3
Live catalog snapshot
Active endpoints
3
Methods
GET
Required params
6
Schema refs
3
{
"platform": "Indeed",
"endpoint": "indeed-search",
"method": "GET",
"path": "/indeed/search",
"auth": "apiKey"
}Use cases
Search Indeed job postings by keyword and location and get job detail and location autocomplete as structured JSON.
Use Indeed endpoints to turn job market and hiring-demand research into repeatable API requests with documented inputs and JSON responses.
Use Indeed endpoints to turn job posting aggregation and monitoring into repeatable API requests with documented inputs and JSON responses.
Use Indeed endpoints to turn location-based job search tooling into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Indeed endpoint catalog — 3 endpoints, 12 documented request parameters, and 3 published response schemas — the same catalog Docs and Playground run against.
3 documented Indeed endpoints, grouped into 3 request families — Job, Locations and Search.
12 request parameters are documented across those Indeed endpoints, 6 of them required — the full input contract is public before you write any integration code.
3 of the 3 Indeed endpoints ship a recorded example response, and 3 carry a documented response schema — you can code against the real JSON before the first request.
Indeed endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
3 hosted MCP tools back the Indeed endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/indeed/job
/indeed/locations/suggest
/indeed/search
Endpoint catalog
/indeed/searchSearches Indeed job postings by keyword and location. Primary transport is Indeed's own credential-free GraphQL API; a page 1, unfiltered-by-date request uses it directly. Requesting page 2+ or the `fromage` filter (not yet expressible over the primary transport) uses the original web-page transport instead, with the same normalized response shape either way. `sort` enum: `relevance` (default), `date`.
Response notes
- A valid query with no matches returns `total: 0` and an empty `jobs` array (not an error). - `jobs[].company_rating` / `jobs[].company_review_count` / `jobs[].job_types` / `jobs[].posted_relative` / `jobs[].sponsored` / `jobs[].urgently_hiring` / `jobs[].new_job` / `jobs[].indeed_applyable` / `jobs[].salary_min` / `jobs[].salary_max` are only populated when the web-page transport served the response — they are not currently selected from the GraphQL API and so are omitted on a page-1 GraphQL response. `salary_text` and `salary_currency` are populated on both transports. - `jobs[].snippet` on a GraphQL-served response is the job description truncated to roughly 300 characters, not Indeed's own SERP-highlighted snippet. - `jobs[].url` is always the canonical `https://www.indeed.com/viewjob?jk=...` link, not an upstream apply-through redirect. - An invalid `sort` value returns a `400` invalid-params error rather than being silently dropped. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "software engineer", "location": "Austin, TX", "page": 1, "total": 3040, "jobs": [ { "job_key": "5e52165ce276aa5a", "title": "Staff HPC Applications Engineer", "company": "NextSilicon", "location": "Austin, TX", "city": "Austin", "state": "TX", "posted_at": "2026-08-03T05:00:00Z", "url": "https://www.indeed.com/viewjob?jk=5e52165ce276aa5a" } ] } } ```
MCP tool indeed_search
/indeed/jobReturns one Indeed job posting by its job key (the `job_key` field returned by search). Primary transport is Indeed's own credential-free GraphQL API; falls back to the original web-page transport if that fails.
Response notes
- A nonexistent, expired, or no-longer-available job key returns a `404`. - `remote` / `employment_type` / `benefits` / `direct_apply` are only populated when the web-page transport served the response — they are not currently selected from the GraphQL API and so are omitted on a GraphQL-served response. `description_text`, `description_html`, `salary_text`, `salary_currency`, and `company_url` are populated on both transports. - `url` is always the canonical `https://www.indeed.com/viewjob?jk=...` link, not an upstream apply-through redirect. Example response: ```json { "code": 200, "msg": "OK", "data": { "job_key": "5e52165ce276aa5a", "title": "Staff HPC Applications Engineer", "company": "NextSilicon", "company_url": "https://www.indeed.com/cmp/Nextsilicon", "location": "Austin, TX", "city": "Austin", "state": "TX", "country": "US", "posted_at": "2026-08-03T05:00:00Z", "description_text": "NextSilicon is reimagining high-performance computing...", "url": "https://www.indeed.com/viewjob?jk=5e52165ce276aa5a" } } ```
MCP tool indeed_job
/indeed/locations/suggestReturns Indeed's own location-search autocomplete suggestions for a partial location string -- the same suggestions the app's search bar offers -- for building a valid `l` value for search. Credential-free GraphQL only; there is no page-based fallback for this endpoint.
Response notes
- A query with no matches returns an empty `suggestions` array (not an error). - `suggestions[].name` is the exact string Indeed's own autocomplete formats (e.g. distinguishing two same-named cities in different counties/states) — pass it back verbatim as `/indeed/search`'s `l` parameter. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "Austin", "suggestions": [ {"name": "Austin, TX (Travis County)", "source": "PRECISELY"}, {"name": "Austin, MN", "source": "PRECISELY"}, {"name": "Austin, IN", "source": "PRECISELY"} ] } } ```
MCP tool indeed_locations_suggest
Related APIs
Business & Market Intelligence
Turn public GitHub ecosystem signals into structured data for developer-market research, open-source intelligence, recruiting, and AI-agent workflows.
Business & Market Intelligence
Collect public TrustMRR startup marketplace and leaderboard data as normalized JSON for startup research, SaaS discovery, and market intelligence workflows.
Business & Market Intelligence
Add website and competitive intelligence signals from SimilarWeb to research pipelines.
How to scrape Indeed
Crawlora's Indeed endpoints return job search, job detail, and location autocomplete as normalized JSON with one API key — no HTML parsing or account required.
Send a keyword and location to /indeed/search for normalized job postings.
Pass the job_key from a search result to /indeed/job for that posting's full detail.
Use /indeed/locations/suggest to turn a partial location string into a valid `l` value for /indeed/search.
Re-run searches on a schedule to track new postings and hiring-demand trends across keywords and locations.
FAQ
Send a keyword and location to Crawlora's /indeed/search endpoint and get normalized job postings as structured JSON.
No Indeed account or API key is required from the caller — only your Crawlora API key.
Pass the job_key returned by /indeed/search to /indeed/job for that posting's full detail.
Not anymore for new developers. Indeed retired its public Publisher API — the free job-search feed — in 2023, and the only remaining first-party access, Indeed Apply and Sponsored Jobs, requires a partner-approval sales process rather than self-serve registration. Crawlora's Indeed endpoints read public job-search and detail pages directly, with just one API key.