API reference

Every endpoint and parameter, generated from our OpenAPI document. Import it into Postman, Insomnia or a code generator. Send your key as Authorization: Bearer YOUR_API_KEY; try requests in the playground.

Feeds

Polling feeds for keeping your own copy of the catalogue: new, modified and expired jobs.

New jobs

GET/v1/active-ats

Active jobs first collected within time_frame, newest posting first (or by id with cursor). Poll 1h every hour or 24h once a day in the same hour to receive every job once.

ParameterTypeDescription
time_frame1h · 24h · 7d · 6m
default 24h
1h: the last full UTC hour. 24h: the 24 hours up to the last full hour. 7d and 6m: rolling windows for backfills.
limitinteger
default 100
Jobs per page, 1–1000.
offsetintegerJobs to skip (offset pagination, ordered by date_posted descending).
cursorintegerCursor pagination: pass the last id of the previous page. Orders by id ascending and overrides offset. Use it for 6m backfills.
description_formattext · htmlAdds description_text or description_html. Omit it to leave descriptions out.
include_source_fieldsbooleanAdds source_fields: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found.
idlist of integerOnly these job ids, comma-separated.
titlestringSearch the job title. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
title_advancedstringBoolean search on the job title. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
descriptionstringSearch title, employer and description together. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
description_advancedstringBoolean search on title, employer and description. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
locationstringFull place names as City, Region, Country: Canada, Ontario, Canada, "Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada", California, United States. A single name matches a region or city of that name. Countries must be written out (United States, not US).
location_advancedstringBoolean search on the derived location text ("City Region Country"). Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
countrylist of CA · USCountry views to include, comma-separated: CA, US or both (default both). A posting with locations in both countries appears once in each view, with a different id.
organizationlist of stringExact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.".
exclude_organizationlist of stringEmployer names to exclude; same rules as organization.
organization_advancedstringBoolean search on the employer name. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
sourcelist of stringSource systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases.
exclude_sourcelist of stringSource systems to exclude.
date_posted_gtestringPosted at or after this time (ISO 8601, UTC when no zone is given).
date_posted_ltstringPosted before this time.
date_created_gtestringFirst collected at or after this time. Use it to replay a missed window exactly.
date_created_ltstringFirst collected before this time.
has_salarybooleantrue for jobs whose employer published pay, false for jobs without.
remotebooleantrue for jobs the employer marks remote, false to exclude them.
has_no_locationbooleantrue for jobs without a resolved location.

Responses: 200 Jobs · 400 Invalid request (unknown parameter, bad value or search syntax). · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`. · 504 The query exceeded the time limit; narrow it.

Count new jobs

GET/v1/active-ats-count

How many jobs match the filters in time_frame, without returning them. 1m counts jobs first collected in the last 31 days including those since expired; other windows count active jobs only.

ParameterTypeDescription
time_frame1h · 24h · 7d · 1m · 6m
default 1m
Window to count.
titlestringSearch the job title. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
title_advancedstringBoolean search on the job title. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
descriptionstringSearch title, employer and description together. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
description_advancedstringBoolean search on title, employer and description. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
locationstringFull place names as City, Region, Country: Canada, Ontario, Canada, "Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada", California, United States. A single name matches a region or city of that name. Countries must be written out (United States, not US).
location_advancedstringBoolean search on the derived location text ("City Region Country"). Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
countrylist of CA · USCountry views to include, comma-separated: CA, US or both (default both). A posting with locations in both countries appears once in each view, with a different id.
organizationlist of stringExact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.".
exclude_organizationlist of stringEmployer names to exclude; same rules as organization.
organization_advancedstringBoolean search on the employer name. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
sourcelist of stringSource systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases.
exclude_sourcelist of stringSource systems to exclude.
date_posted_gtestringPosted at or after this time (ISO 8601, UTC when no zone is given).
date_posted_ltstringPosted before this time.
date_created_gtestringFirst collected at or after this time. Use it to replay a missed window exactly.
date_created_ltstringFirst collected before this time.
has_salarybooleantrue for jobs whose employer published pay, false for jobs without.
remotebooleantrue for jobs the employer marks remote, false to exclude them.
has_no_locationbooleantrue for jobs without a resolved location.

Responses: 200 Count · 400 Invalid request (unknown parameter, bad value or search syntax). · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`. · 504 The query exceeded the time limit; narrow it.

Modified jobs

GET/v1/modified-ats

Active jobs whose published content changed in the 24 hours up to the last full UTC hour (or the date_modified_* window, at most 31 days). Ordered by date_modified descending.

ParameterTypeDescription
date_modified_gtestringChanged at or after this time.
date_modified_ltstringChanged before this time.
limitinteger
default 100
Jobs per page, 1–1000.
offsetintegerJobs to skip (offset pagination, ordered by date_posted descending).
cursorintegerCursor pagination: pass the last id of the previous page. Orders by id ascending and overrides offset. Use it for 6m backfills.
description_formattext · htmlAdds description_text or description_html. Omit it to leave descriptions out.
include_source_fieldsbooleanAdds source_fields: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found.
idlist of integerOnly these job ids, comma-separated.
titlestringSearch the job title. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
title_advancedstringBoolean search on the job title. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
descriptionstringSearch title, employer and description together. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
description_advancedstringBoolean search on title, employer and description. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
locationstringFull place names as City, Region, Country: Canada, Ontario, Canada, "Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada", California, United States. A single name matches a region or city of that name. Countries must be written out (United States, not US).
location_advancedstringBoolean search on the derived location text ("City Region Country"). Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
countrylist of CA · USCountry views to include, comma-separated: CA, US or both (default both). A posting with locations in both countries appears once in each view, with a different id.
organizationlist of stringExact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.".
exclude_organizationlist of stringEmployer names to exclude; same rules as organization.
organization_advancedstringBoolean search on the employer name. Boolean expression: & AND, | OR, ! NOT, <-> followed by, <N> within N words, 'quoted phrase', ( ) grouping and :* prefix. Takes precedence over the plain parameter.
sourcelist of stringSource systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases.
exclude_sourcelist of stringSource systems to exclude.
date_posted_gtestringPosted at or after this time (ISO 8601, UTC when no zone is given).
date_posted_ltstringPosted before this time.
date_created_gtestringFirst collected at or after this time. Use it to replay a missed window exactly.
date_created_ltstringFirst collected before this time.
has_salarybooleantrue for jobs whose employer published pay, false for jobs without.
remotebooleantrue for jobs the employer marks remote, false to exclude them.
has_no_locationbooleantrue for jobs without a resolved location.

Responses: 200 Jobs · 400 Invalid request (unknown parameter, bad value or search syntax). · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`. · 504 The query exceeded the time limit; narrow it.

Expired jobs

GET/v1/expired-ats

Ids of jobs that left the feed in the window: removed by the employer, or found not to be in the country after all. Delete them from your copy.

ParameterTypeDescription
time_frame1h · 1d · 1m · 6m
default 1d
1h: the last hour (rolling). 1d: the previous UTC day. 1m: 31 days. 6m: 183 days.
countrylist of CA · USCountry views, comma-separated (default both).

Responses: 200 Job ids · 400 Invalid request (unknown parameter, bad value or search syntax). · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`. · 504 The query exceeded the time limit; narrow it.

Search

Query the live catalogue and follow its change log.

Search jobs

GET/v1/jobs

Active jobs in one country, newest first, with next_cursor pagination.

ParameterTypeDescription
countryCA · US
default CA
Country view.
qstringSearch title, employer and description. Google-style: software engineer needs both words, "software engineer" is a phrase, software OR engineer either word, -intern excludes, engineer* matches a prefix. Accents and case are ignored.
titlestringSearch the title only.
provincelist of stringCanadian province codes, e.g. ON,BC.
statelist of stringUS state codes, e.g. NY,CA (with country=US).
citystringA city, ideally with its region: Toronto, ON.
sourcelist of stringSource systems.
employment_typelist of stringFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM.
remotebooleanRemote only, or exclude remote.
has_salarybooleanWith or without published pay.
window1h · 24h · 7d · 30d · 6mFirst collected within this window.
descriptionnone · text · html · bothDescription fields to add.
source_fieldsbooleanAdd source_fields.
limitinteger
default 100
Jobs per page.
cursorstringnext_cursor from the previous page.

Responses: 200 A page of jobs · 400 Invalid request. · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`.

Get a job

GET/v1/jobs/{id}

One job with both descriptions and source_fields, whatever its status.

ParameterTypeDescription
id(path)integerJob id.

Responses: 200 The job · 401 Missing or invalid API key. · 404 No such job.

Changes feed

GET/v1/changes

Every created, updated, expired and excluded event for one country, in order. Store next_since and pass it back; more is true while events remain.

ParameterTypeDescription
countryCA · US
default CA
Country view.
sinceinteger
default 0
Last sequence number you processed.
limitinteger
default 500
Events per page.
descriptionnone · text · html · bothDescription fields to add.
source_fieldsboolean
default true
Include source_fields.

Responses: 200 Change events · 400 Invalid request. · 401 Missing or invalid API key.

Stats

GET/v1/stats

Active jobs per source and region, and board counts, for one country.

ParameterTypeDescription
countryCA · US
default CA
Country view.

Responses: 200 Statistics · 401 Missing or invalid API key.

Organizations

Employers in the catalogue.

Organization list

GET/v1/ats-organizations

Every employer with active jobs, with its source systems, countries and active job count. Refreshed hourly. Use the names with organization.

ParameterTypeDescription
formatjson · csv
default json
Response format.
countrylist of CA · USOnly employers with jobs in these countries.
apiKeystringYour API key, for downloading in a browser. Prefer the Authorization header.

Responses: 200 Organizations · 400 Invalid request (unknown parameter, bad value or search syntax). · 401 Missing or invalid API key. · 429 Rate limit or plan allowance reached. Honour `Retry-After`. · 504 The query exceeded the time limit; narrow it.