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.
| Parameter | Type | Description |
|---|---|---|
| time_frame | 1h · 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. |
| limit | integer default 100 | Jobs per page, 1–1000. |
| offset | integer | Jobs to skip (offset pagination, ordered by date_posted descending). |
| cursor | integer | Cursor pagination: pass the last id of the previous page. Orders by id ascending and overrides offset. Use it for 6m backfills. |
| description_format | text · html | Adds description_text or description_html. Omit it to leave descriptions out. |
| include_source_fields | boolean | Adds source_fields: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found. |
| id | list of integer | Only these job ids, comma-separated. |
| title | string | Search 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_advanced | string | Boolean 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. |
| description | string | Search 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_advanced | string | Boolean 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. |
| location | string | Full 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_advanced | string | Boolean 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. |
| country | list of CA · US | Country 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. |
| organization | list of string | Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.". |
| exclude_organization | list of string | Employer names to exclude; same rules as organization. |
| organization_advanced | string | Boolean 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. |
| source | list of string | Source systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases. |
| exclude_source | list of string | Source systems to exclude. |
| date_posted_gte | string | Posted at or after this time (ISO 8601, UTC when no zone is given). |
| date_posted_lt | string | Posted before this time. |
| date_created_gte | string | First collected at or after this time. Use it to replay a missed window exactly. |
| date_created_lt | string | First collected before this time. |
| has_salary | boolean | true for jobs whose employer published pay, false for jobs without. |
| remote | boolean | true for jobs the employer marks remote, false to exclude them. |
| has_no_location | boolean | true 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.
| Parameter | Type | Description |
|---|---|---|
| time_frame | 1h · 24h · 7d · 1m · 6m default 1m | Window to count. |
| title | string | Search 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_advanced | string | Boolean 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. |
| description | string | Search 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_advanced | string | Boolean 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. |
| location | string | Full 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_advanced | string | Boolean 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. |
| country | list of CA · US | Country 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. |
| organization | list of string | Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.". |
| exclude_organization | list of string | Employer names to exclude; same rules as organization. |
| organization_advanced | string | Boolean 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. |
| source | list of string | Source systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases. |
| exclude_source | list of string | Source systems to exclude. |
| date_posted_gte | string | Posted at or after this time (ISO 8601, UTC when no zone is given). |
| date_posted_lt | string | Posted before this time. |
| date_created_gte | string | First collected at or after this time. Use it to replay a missed window exactly. |
| date_created_lt | string | First collected before this time. |
| has_salary | boolean | true for jobs whose employer published pay, false for jobs without. |
| remote | boolean | true for jobs the employer marks remote, false to exclude them. |
| has_no_location | boolean | true 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.
| Parameter | Type | Description |
|---|---|---|
| date_modified_gte | string | Changed at or after this time. |
| date_modified_lt | string | Changed before this time. |
| limit | integer default 100 | Jobs per page, 1–1000. |
| offset | integer | Jobs to skip (offset pagination, ordered by date_posted descending). |
| cursor | integer | Cursor pagination: pass the last id of the previous page. Orders by id ascending and overrides offset. Use it for 6m backfills. |
| description_format | text · html | Adds description_text or description_html. Omit it to leave descriptions out. |
| include_source_fields | boolean | Adds source_fields: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found. |
| id | list of integer | Only these job ids, comma-separated. |
| title | string | Search 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_advanced | string | Boolean 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. |
| description | string | Search 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_advanced | string | Boolean 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. |
| location | string | Full 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_advanced | string | Boolean 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. |
| country | list of CA · US | Country 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. |
| organization | list of string | Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: "Acme, Inc.". |
| exclude_organization | list of string | Employer names to exclude; same rules as organization. |
| organization_advanced | string | Boolean 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. |
| source | list of string | Source systems to include, comma-separated, e.g. workday,greenhouse,icims. lever.co, phenompeople and taleo are accepted as aliases. |
| exclude_source | list of string | Source systems to exclude. |
| date_posted_gte | string | Posted at or after this time (ISO 8601, UTC when no zone is given). |
| date_posted_lt | string | Posted before this time. |
| date_created_gte | string | First collected at or after this time. Use it to replay a missed window exactly. |
| date_created_lt | string | First collected before this time. |
| has_salary | boolean | true for jobs whose employer published pay, false for jobs without. |
| remote | boolean | true for jobs the employer marks remote, false to exclude them. |
| has_no_location | boolean | true 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.
| Parameter | Type | Description |
|---|---|---|
| time_frame | 1h · 1d · 1m · 6m default 1d | 1h: the last hour (rolling). 1d: the previous UTC day. 1m: 31 days. 6m: 183 days. |
| country | list of CA · US | Country 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.
| Parameter | Type | Description |
|---|---|---|
| country | CA · US default CA | Country view. |
| q | string | Search 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. |
| title | string | Search the title only. |
| province | list of string | Canadian province codes, e.g. ON,BC. |
| state | list of string | US state codes, e.g. NY,CA (with country=US). |
| city | string | A city, ideally with its region: Toronto, ON. |
| source | list of string | Source systems. |
| employment_type | list of string | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM. |
| remote | boolean | Remote only, or exclude remote. |
| has_salary | boolean | With or without published pay. |
| window | 1h · 24h · 7d · 30d · 6m | First collected within this window. |
| description | none · text · html · both | Description fields to add. |
| source_fields | boolean | Add source_fields. |
| limit | integer default 100 | Jobs per page. |
| cursor | string | next_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.
| Parameter | Type | Description |
|---|---|---|
| id(path) | integer | Job 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.
| Parameter | Type | Description |
|---|---|---|
| country | CA · US default CA | Country view. |
| since | integer default 0 | Last sequence number you processed. |
| limit | integer default 500 | Events per page. |
| description | none · text · html · both | Description fields to add. |
| source_fields | boolean 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.
| Parameter | Type | Description |
|---|---|---|
| country | CA · 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.
| Parameter | Type | Description |
|---|---|---|
| format | json · csv default json | Response format. |
| country | list of CA · US | Only employers with jobs in these countries. |
| apiKey | string | Your 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.