Your first feed call

Fetch software and data jobs in Toronto and Vancouver collected in the last 24 hours. You need an API key from the API keys page.

The request

bash
curl --get "https://api.thejobsapi.com/v1/active-ats" \
  -H "Authorization: Bearer $THEJOBSAPI_KEY" \
  --data-urlencode 'time_frame=24h' \
  --data-urlencode 'title="software engineer" OR "data scientist"' \
  --data-urlencode 'location="Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada"' \
  --data-urlencode 'limit=20'
  • time_frame=24h: jobs first collected in the 24 hours up to the last full UTC hour.
  • title: quotes make a phrase; OR accepts either.
  • location: full place names, each quoted, joined with OR.
  • limit: up to 1000 per page; page further with offset.

Writing locations

Use full names in the order City, Region, Country: Ontario, Canada, Texas, United States. Region codes work after a city (Toronto, ON), but a bare CA or US is not a country: write Canada or United States. More on location search.

In code

JavaScript
const params = new URLSearchParams({
  time_frame: "24h",
  title: '"software engineer" OR "data scientist"',
  location: '"Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada"',
  limit: "20",
});
const response = await fetch(`https://api.thejobsapi.com/v1/active-ats?${params}`, {
  headers: { Authorization: `Bearer ${process.env.THEJOBSAPI_KEY}` },
});
if (!response.ok) throw new Error((await response.json()).detail);
const jobs = await response.json();
console.log(jobs.map(job => `${job.title} · ${job.organization} · ${job.locations_derived?.join("; ")}`));
Python
import os, requests

response = requests.get(
    "https://api.thejobsapi.com/v1/active-ats",
    params={
        "time_frame": "24h",
        "title": '"software engineer" OR "data scientist"',
        "location": '"Toronto, Ontario, Canada" OR "Vancouver, British Columbia, Canada"',
        "limit": 20,
    },
    headers={"Authorization": f"Bearer {os.environ['THEJOBSAPI_KEY']}"},
    timeout=60,
)
response.raise_for_status()
for job in response.json():
    print(job["title"], "·", job["organization"], "·", job["locations_derived"])

Next steps

  • Add description_format=text or html to include descriptions.
  • Filter by employer with organization, by source system with source, or to jobs with published pay with has_salary=true.
  • Try the request in the playground, then set up a sync with the recommended strategy.