Skip to main content
GET
cURL

Authorizations

X-Api-Key
string
header
required

Your Jobo API key. Create one in the dashboard under Developers → API Keys. Live keys start with jbe_live_ and sandbox keys with jbe_test_.

Query Parameters

q
string

Free-text search query. By default it matches broadly against the job title, company name, popular skills, and summary with typo tolerance. Wrap the value in double quotes (e.g. q="Quantitative Developer") for an exact, contiguous phrase match restricted to the job title only.

search_description
boolean
default:true

When true, search title, alternative titles, company, popular skills, and summary. When false, restrict matching to titles and curated alternative titles. A double-quoted query always matches an exact contiguous phrase in the literal title.

location
string

Location filter (city, region, or country)

sources
string

Comma-separated source identifiers (ATS slugs such as greenhouse). Sources lists every value.

work_model
string

Comma-separated work models (remote, hybrid, onsite)

employment_type
string

Comma-separated employment types (full-time, part-time, contract, internship, freelance, temporary)

experience_level
string

Comma-separated experience levels. Canonical values: intern, entry, mid, senior, lead, executive.

language
string

Comma-separated ISO 639-1 codes of the description language (e.g. en,de).

posted_after
string<date-time>

Only return jobs whose employer posting date is on or after this date

posted_before
string<date-time>

Only return jobs whose employer posting date is on or before this date

min_salary_usd
integer

Minimum annual salary in USD

Required range: x >= 0
max_salary_usd
integer

Maximum annual salary in USD

Required range: x >= 0
skills
string

Comma-separated skill names

industries
string

Comma-separated company-industry names. A job matches any supplied value.

company_categories
string

Comma-separated company business-model categories (b2b, b2c, b2b2c, saas, marketplace, service-provider). A job matches any supplied value.

job_categories
string

Comma-separated occupation categories (the job's occupation.category, e.g. Healthcare). A job matches any supplied value. Exact match, ignoring case. GET /api/occupations lists every value. Jobs without an occupation never match.

job_subcategories
string

Comma-separated occupation subcategories (the job's occupation.subcategory, e.g. Nursing). A job matches any supplied value. Exact match, ignoring case. GET /api/occupations lists every value. Four subcategory names contain a comma (e.g. Film, TV & Stage Production) and are split here, so they match nothing; filter those with POST /api/jobs/search.

occupation_ids
string

Comma-separated occupation ids (the job's occupation.id, e.g. esco:8d3e8aaa-791b-4c75-a465-f3f827028f50). A job matches any supplied value. Use ids, not names: names can improve between taxonomy releases, ids don't. GET /api/occupations lists every id. To exclude categories, subcategories or occupations, use POST /api/jobs/search.

discovered_after
string<date-time>

Only return jobs first indexed on or after this UTC timestamp

discovered_before
string<date-time>

Only return jobs first indexed on or before this UTC timestamp

sort
enum<string>
default:relevance

Result order. relevance (default) ranks by match quality, or by most recently updated without q; it shifts as jobs update, so paging can skip or repeat a job. discovered_asc and discovered_desc order by created_at (first indexed), which never changes: pair them with a discovered_after / discovered_before window for stable pages. See Pagination.

Available options:
relevance,
discovered_asc,
discovered_desc
page
integer
default:1

Page number (1-indexed)

Required range: x >= 1
page_size
integer
default:25

Number of results per page (max 100)

Required range: 1 <= x <= 100
description_format
enum<string>
default:markdown

Format of each job's description. markdown (default) returns it as stored. html renders it to HTML on the fly: raw HTML in the source is escaped and only http(s), mailto and relative URLs are kept.

Available options:
markdown,
html
include_fields
string

Comma-separated heavy fields to return: description, summary, qualifications, responsibilities, benefits. Core fields (id, title, company, locations, compensation, dates, …) always come back.

Omit it for the full job (the default), pass a subset to keep only those heavy fields, or pass an empty value (?include_fields=) for core fields only. Names are case-insensitive; unknown names are ignored. An excluded description is "", summary is null, qualifications has empty buckets, and responsibilities and benefits are [].

include_facets
string

Comma-separated facets to compute: work_model, experience_level, employment_type, sources, industries, skills, countries, company_categories, job_categories, job_subcategories, occupations. Omit it for work_model, experience_level, employment_type and sources; pass an empty value for none. Occupation facet buckets carry name and parent, so you can nest category › subcategory › occupation.

Response

Paginated list of matching jobs

jobs
object[]
required
total
integer<int64>
required
page
integer
required
page_size
integer
required
total_pages
integer
required
facets
object
required
warnings
object[] | null

Non-fatal problems with the request. Omitted when there is nothing to report. The same codes are sent, comma-separated, in the X-Jobo-Warnings response header, so a client can branch without parsing the body.

filters
object | null

How the server interpreted the filters that needed resolving. Present only when a companies filter was supplied.