Search jobs
Returns active jobs, newest first, filtered by the parameters you pass. All filters combine with AND.
GET/v1/jobs
Parameters
| Parameter | Type | Description |
|---|---|---|
| q | string | Full-text search over title, employer and description. Words must all match; use "exact phrase", OR, -exclude and prefix*. Accents and case are ignored. |
| title | string | Same syntax as q, matched against the job title only. |
| province | list | Province or territory codes, comma-separated: ON,BC. |
| city | string | A Canadian city, ideally with its province: Toronto, ON. Unknown or ambiguous cities return 400. |
| source | list | Source systems, comma-separated, e.g. workday,greenhouse. See /v1/stats for the list. |
| employment_type | list | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM. |
| remote | boolean | true for remote jobs only, false to exclude them. |
| has_salary | boolean | true for jobs with an employer-stated salary, false for jobs without. |
| window | string | Only jobs first seen within 1h, 24h, 7d, 30d or 6m. |
| description | string | none (default), text, html or both. Adds description_text and/or description_html. |
| source_fields | boolean | true adds employer-provided extra fields (department, compensation details, qualifications…) with their original source path. |
| limit | integer | Jobs per page, 1–1000. Default 100. |
| cursor | string | The next_cursor from the previous page. |
Example
bash
curl "https://api.thejobsapi.com/v1/jobs?q=%22software%20engineer%22&province=ON,QC&remote=true&has_salary=true&limit=20" \
-H "Authorization: Bearer $THEJOBSAPI_KEY"Response
json
{
"jobs": [ /* job objects */ ],
"next_cursor": "1834"
}next_cursor is null when there are no more results. Cursors are stable while you page, so new jobs arriving meanwhile don't shift your results.
The job object
json
{
"id": 1,
"title": "Enterprise Account Executive, West",
"organization": "Dialogue",
"url": "https://ats.rippling.com/dialogue-en/jobs/40528552-…",
"apply_url": null,
"source": "rippling",
"source_type": "ats",
"board": "dialogue-en",
"status": "active",
"posted_at": "2026-09-28T17:18:27.000Z",
"first_seen_at": "2026-10-09T04:34:47.000Z",
"updated_at": "2026-10-09T04:34:47.000Z",
"expired_at": null,
"valid_through": null,
"locations": [{
"label": "Vancouver, BC", "city": "Vancouver", "province": "BC", "country": "CA",
"postal_code": null, "latitude": 49.24966, "longitude": -123.11934, "precision": "city"
}],
"remote": true,
"work_arrangement": "remote",
"employment_types": ["FULL_TIME"],
"salary": { "min": 102960, "max": 120120, "currency": "CAD", "period": "YEAR", "source": "employer" }
}urlis the original posting;apply_urlis set when the employer publishes a separate application link.locationslists every Canadian location.precisionsays how exact the coordinates are.salaryis present only when the employer stated it.periodisHOUR,DAY,WEEK,MONTHorYEAR.first_seen_atis when we first collected the job;posted_atis the employer's date when published.