Search jobs via structured request body
Structured search for multiple OR’d queries and locations, explicit include/exclude filters, date and salary ranges, field selection, and facets. The body is optional; an omitted body performs an unfiltered first-page search.
Authorizations
API key provided by Jobo
Body
Free-text search queries; multiple entries are OR'd. Each entry matches broadly by default (title, company name, popular skills, summary) with typo tolerance. Wrap an entry in double quotes (e.g. ""Quantitative Developer"") to make it an exact, contiguous phrase match restricted to the job title only — use this when a query is a job-title filter and broad matches are noise. Prefix an entry with - to exclude it. Maximum 10 positive terms per request; more returns a 400 (negative - exclusions don't count toward the limit).
Controls which fields the queries match against. When true (default), queries match title, curated alternative titles, company, popular skills, and summary — broad recall, best for keyword discovery (e.g. "python" finds a "Software Engineer" that lists Python as a skill). When false, queries match against job titles only — the job's own title plus a curated set of same-role alternative titles, so "Android Developer" also finds roles titled "Android Engineer" without pulling in jobs that merely mention the terms in their summary or skills (e.g. an "IT Support Engineer" that lists Android as a skill no longer matches). Use false when you pass exact job titles and want relevance over keyword recall. Double-quoted entries are stricter still: an exact, contiguous phrase match against the literal job title only (alternative titles excluded) — the escape hatch when even title synonyms are unwanted. In both modes results are relevance-ordered — jobs matching every word of a query always rank above partial matches, and partial matches only appear at the tail when a query has no full match inside the filtered window (e.g. a short posted_after range). Take results from the top; the tail of a large page is best-effort filler.
Location strings to filter by (geocoded automatically)
Restrict to specific ATS provider IDs (e.g. greenhouse, lever, workday).
Include/exclude skills filter
Include/exclude company display names, resolved case-insensitively.
Include/exclude company-industry filter (matched case-insensitively).
Filter by work model: remote, hybrid, onsite
remote, hybrid, onsite Filter by employment type: full-time, part-time, contract, internship, freelance, temporary
full-time, part-time, contract, internship, freelance, temporary Exact-match experience-level filter. Canonical values are intern, entry, mid, senior, lead, and executive.
intern, entry, mid, senior, lead, executive Annualized USD range-overlap filter. A job matches when its disclosed salary range intersects the requested range. Jobs without disclosed compensation are excluded.
Only return jobs whose employer posting date is on or after this date
Only return jobs whose employer posting date is on or before this date
Only return jobs first indexed on or after this UTC timestamp
Only return jobs first indexed on or before this UTC timestamp
x >= 11 <= x <= 100Facets to compute and return. Omit (or null) for the default subset (work_model, experience_level, employment_type, sources). Pass an empty array to skip facets entirely. industries and skills are high-cardinality and only computed when explicitly requested. Unknown names are ignored.
work_model, experience_level, employment_type, sources, industries, skills Heavy, non-core fields to include. Omit (or null) for the full job — every field, the default. Pass a subset to keep only those non-core fields alongside the always-present core fields. Pass an empty array for core fields only. Unknown names are ignored; excluded non-core fields come back empty.
description, summary, qualifications, responsibilities, benefits 
