Most job boards repost listings days after they appear on the company's own careers page. If you're a recruiter, job-seeker or building a job product, the freshest source is the applicant tracking system (ATS) the company itself uses: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee and Personio all publish public job feeds.

This post shows how to query those feeds in one go.

The quick way: one call, every ATS

We published a tool on the Apify Store, ATS Jobs Search, that searches all seven feeds at once, detects which ATS a careers page uses, and can return only jobs that are new since your last run.

from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("siftwright_data/ats-jobs-search").call(run_input={ "searchDirectory": True, "keywords": ["data engineer"], "locations": ["Remote", "New York"], "onlyNewJobs": True, }) for job in client.dataset(run["defaultDatasetId"]).iterate_items(): print(job["companyName"], "|", job["title"], "|", job["url"]) 

New to Apify? The free plan's monthly credit is enough to try it on thousands of jobs.

Doing it by hand (for one company)

Each ATS has a public JSON endpoint, for example:

  • Greenhouse: https://boards-api.greenhouse.io/v1/boards/{company}/jobs
  • Lever: https://api.lever.co/v0/postings/{company}?mode=json
  • Ashby: https://api.ashbyhq.com/posting-api/job-board/{company}

That works for a handful of companies. The hard part is knowing which companies use which ATS and what their board slug is, which is what the tool's built-in directory solves.

Need something custom?

If you need a feed for a specific niche delivered to a spreadsheet or Slack every morning, email siftwright.data@gmail.com and we'll quote a fixed price.