Search Indeed jobs
TL;DR
About
Say you're hunting for a data analyst job in Austin. Run query "data analyst", location "Austin, TX" and sortBy "date" each morning, compare the jobKey values with yesterday's list, and open only new ones with a salary. Each run returns one results page of job cards, with salary as raw text when Indeed shows one and postedAgo as a phrase like "3 days ago". Outside the US, set country to "fr", "de" or "uk" so the location belongs to that country's Indeed site. If outOfCountry comes back true, Indeed swapped your location for generic results and total means nothing. Two limits apply. Anonymous search only works for page 1, so narrow the query instead of paging. And Indeed can bounce datacenter traffic to a login page, so a hosted run needs an in-country residential proxy, while your own Chrome sends the search from your home connection. You get the viewjob link, not the job description.
Input
query requiredFree-text job search query, same as Indeed's search box (e.g. "data engineer"). Must be non-empty — an empty query redirects Indeed to its homepage instead of a results page.
page optional1-based page. Only page=1 is reliably supported anonymously — Indeed shows a sign-in wall for further pages, which the script surfaces as a thrown error.
Default: 1sortBy optionalSort order. Default: relevance (Indeed's own default).
Default: "relevance"country optionalIndeed country site to search, as its subdomain code (e.g. "us", "fr", "de", "uk", "ca"). Lowercased; "us" maps to www.indeed.com, others to "<country>.indeed.com".
Default: "us"location optionalFree-text location (e.g. "Paris", "Berlin"). Must match the chosen country site or Indeed marks the result outOfCountry and returns unrelated jobs.
Output
jobs requiredpage requiredtotal requiredMatching job count reported by Indeed for this query/location. Not meaningful when outOfCountry is true (Indeed falls back to a broad, location-agnostic count).
outOfCountry requiredTrue when Indeed treated the requested location as outside the chosen country site — total and jobs then reflect a fallback, not the requested location.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"jobs": [
{
"url": "https://example.com/item/123",
"title": "Example",
"jobKey": "…",
"remote": true,
"salary": "…",
"company": "…",
"jobTypes": [
"…"
],
"location": "…",
"postedAgo": "…",
"sponsored": true
}
],
"page": 1,
"total": 3,
"outOfCountry": true
}