Indeed API endpoint
Searches Indeed job postings by keyword and location. `sort` enum: `relevance` (default), `date`.
/indeed/searchSearches Indeed job postings by keyword and location, with the same response shape for every page and filter.
Query parameters:
q (required): search keywords, e.g. software engineer.l: location (city, state, or zip), e.g. New York, NY. Use /indeed/locations/suggest to resolve a partial location string into a value Indeed itself recognizes.page: page number, 1-based, defaults to 1.sort: sort order. Allowed values: relevance (default), date.radius: search radius in miles, e.g. 25.fromage: only jobs posted within this many days, e.g. 7.Notable response behavior:
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 not always populated and are omitted on some page-1 responses. salary_text and salary_currency are populated on every response.jobs[].snippet on an unfiltered page-1 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.sort value returns a 400 invalid-params error rather than being silently dropped.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| job_key | 10 | |
| title | 10 | “Entry Level Software Engineer 0” and 8 other values |
| company | 10 | “Power3 Solutions” and 9 other values |
| location | 10 | “Annapolis Junction, MD” and 7 other values |
| city | 9 | “Annapolis Junction” and 6 other values |
| state | 8 | “MD” and 6 other values |
| salary_currency | 10 | USD in all 10 |
| salary_text | 10 | “$100,000 - $120,000 a year” and 8 other values |
| snippet | 10 | median 303 characters |
| posted_at | 10 | 2026-09-30 to 2026-10-13 |
| url | 10 | indeed.com |
| postal_code | 3 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search keywords | software engineer | |
| l | string | No | Location (city, state, or zip) | New York, NY | |
| page | integer | No | 1 | Page number, 1-based, defaults to 1 | 1 |
| sort | string | No | Sort order: relevance, date Allowed values: relevance, date. | ||
| radius | integer | No | Search radius in miles | 25 | |
| fromage | integer | No | Only jobs posted within this many days | 7 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/indeed/search?q=software+engineer&page=1&sort=relevance" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/indeed.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | indeed.SearchResponse | No | ||||
| data.jobs | array | No | ||||
| data.jobs[].city | string | No | New York | |||
| data.jobs[].company | string | No | dv01 | |||
| data.jobs[].company_rating | number | No | 3.6 | |||
| data.jobs[].company_review_count | integer | No | 20 | |||
| data.jobs[].indeed_applyable | boolean | No | true | |||
| data.jobs[].job_key | string | No | a055dc6ab3a91a3b | |||
| data.jobs[].job_types | array | No | ||||
| data.jobs[].location | string | No | New York, NY 10003 | |||
| data.jobs[].new_job | boolean | No | false | |||
| data.jobs[].postal_code | string | No | 10003 | |||
| data.jobs[].posted_at | string | No | 2026-06-29T16:52:09Z | |||
| data.jobs[].posted_relative | string | No | 13 days ago | |||
| data.jobs[].remote | boolean | No | false | |||
| data.jobs[].salary_currency | string | No | USD | |||
| data.jobs[].salary_max | number | No | 160000 | |||
| data.jobs[].salary_min | number | No | 140000 | |||
| data.jobs[].salary_period | string | No | yearly | |||
| data.jobs[].salary_text | string | No | $140,000 - $160,000 a year | |||
| data.jobs[].snippet | string | No | Interact with a diverse team... | |||
| data.jobs[].sponsored | boolean | No | true | |||
| data.jobs[].state | string | No | NY | |||
| data.jobs[].title | string | No | Senior Backend Engineer | |||
| data.jobs[].urgently_hiring | boolean | No | false | |||
| data.jobs[].url | string | No | https://www.indeed.com/viewjob?jk=a055dc6ab3a91a3b | |||
| data.location | string | No | New York, NY | |||
| data.page | integer | No | 1 | |||
| data.query | string | No | software engineer | |||
| data.total | integer | No | 3040 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/indeed/search?q=software+engineer&page=1&sort=relevance" \
-H "x-api-key: $CRAWLORA_API_KEY"