Skip to main content
Two endpoints, one subscription. Search reads one Indeed results page (US indeed.com). Job reads one posting. This does not submit applications. See the product page.

Jobs

GET /v1/search?engine=indeed · 1 request
Do not send limit or cursor. next_cursor is always null: the one page holds every card Indeed serves for the search. To reach more jobs, narrow the search with location, job_type, remote, or posted. Each hit includes position, id, title, company, location, workplace_type, remote, salary_text, salary, job_type, posted_age, posted_at, snippet, benefits, company_rating, company_reviews_count, company_url, easy_apply, urgently_hiring, sponsored, and url. A page holds every card Indeed served, usually about 45. sponsored: true marks a listing the employer paid to promote; it is still a real opening. salary is { min, max, median, currency, period, source } or null. period is year, month, week, day, or hour. source is employer when the posting states the pay, estimated when it is the board’s estimate, or null when the board does not say. salary_text stays as the board prints it.

Job

GET /v1/job?engine=indeed · 1 request
id is the 16-character hex job key from a search result. The body is job: title, company, location, workplace_type, remote, salary_text, salary, job_type, posted_at, valid_through, company_logo, company_url, benefits, direct_apply, url, highlights, and paragraphs. highlights groups the description’s bullet points into qualifications, responsibilities, and benefits by the heading above them. Bullets without a recognised heading are left out, so a posting with no headed lists returns empty arrays. paragraphs still has the full text. Auth, plans, rate limits, and error codes: Authentication.