{
  "id": 17118440,
  "title": "Every major job-board ATS has a free, keyless JSON API. Here's how to use all seven",
  "url": "https://urgent.news/2026/10/29/every-major-job-board-ats-has-a-free-keyless-json-api-heres-how-to",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-29T20:42:48.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/arabinowe/every-major-job-board-ats-has-a-free-keyless-json-api-heres-how-to-use-all-seven-o2g"
  },
  "original_language": "en",
  "account": "Every major job-board Applicant Tracking System (ATS) provides a free, keyless JSON API for accessing job listings. Developers need to know how to utilize these seven APIs to extract open jobs directly from employers without scraping HTML. After analyzing over 4,000 companies, the following cheat sheet and potential pitfalls were compiled.\n\nGreenhouse API: Use the GET request `boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true` to fetch job details. Greenhouse content is double-encoded HTML, so unescape it first.\n\nLever API: The GET request `api.lever.co/v0/postings/{slug}?mode=json` (EU: `api.eu.lever.co`) provides job information. Remember that the API caps at 2,000 results, 20 per page, and only returns total results on the first page.\n\nAshby API: Access job boards using the GET request `api.ashbyhq.com/posting-api/job-board/{slug}?includeCompensation=true`. Be aware that `isRemote` is true for hybrid roles, and salaries can have multiple tiers. Always consider the minimum and maximum across all salary components.\n\nWorkday API: POST requests to `{tenant}.wd{N}.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs` retrieve job listings. Workday caps at 2,000 results, 20 per page, and only returns total results on the first page.\n\nSmartRecruiters API: Utilize the GET request `api.smartrecruiters.com/v1/companies/{slug}/postings` to obtain job data.\n\nRecruitee API: The GET request `{slug}.recruitee.com/api/offers/` provides offer information. Note that dates are not ISO 8601, causing parser issues.\n\nWorkable API: Use the POST request `apply.workable.com/api/v3/accounts/{slug}/jobs` to access job postings.\n\nA single slug can exist on multiple ATSs, often representing a stale test board. Choose the ATS with the most job listings. The full guide with code examples for each platform is available at https://arabinowe.github.io/job-board-apis/. The guide is free and CC-licensed.",
  "summary": "Most companies don't host their own careers page. They use an applicant tracking system (ATS) like Greenhouse, Lever, Ashby or Workday. What a lot of developers don't realize is that those careers pages are powered by public, keyless JSON endpoints , so you can pull every open job straight from the employer, live, without scraping HTML. I ran these endpoints against 4,000+ real companies while…",
  "key_points": [
    "Greenhouse API fetches job details via GET request with board slug",
    "Lever API caps at 2,000 results, 20 per page, first page only returns total",
    "Workday API POST requests retrieve listings, caps at 2,000 results per page"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}