Job data guides · Updated 2026-10-02
ATS jobs API: public endpoints for Greenhouse, Lever, Workday and 10 more
How to get open jobs from company career pages without a login or API key, and how to get all of them in one format.
Public job board endpoints for 13 ATS
Replace {company} with the board name from the career page URL (shown in bold in the example column). All of these are read-only endpoints that the ATS provides so companies can show jobs on their own career sites. No login or API key is needed.
| ATS | Career page example | Endpoint | Notes |
|---|---|---|---|
| Greenhouse | boards.greenhouse.io/stripe | GET https://boards-api.greenhouse.io/v1/boards/{company}/jobs?content=true | All jobs in one response. pay_transparency=true adds pay ranges where published. |
| Lever | jobs.lever.co/spotify | GET https://api.lever.co/v0/postings/{company}?mode=json | EU accounts use api.eu.lever.co. Structured salary range on many postings. |
| Ashby | jobs.ashbyhq.com/ramp | GET https://api.ashbyhq.com/posting-api/job-board/{company}?includeCompensation=true | Compensation tiers included when the company shows them. |
| SmartRecruiters | careers.smartrecruiters.com/BoschGroup | GET https://api.smartrecruiters.com/v1/companies/{company}/postings?limit=100&offset=0 | Paginate with offset, 100 per page. |
| Workday | nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | POST https://{tenant}.{wdN}.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs | JSON body {"limit":20,"offset":0,"searchText":"","appliedFacets":{}}. 20 per page, about 2,000 jobs max per search. |
| Workable | apply.workable.com/huggingface | GET https://apply.workable.com/api/v1/widget/accounts/{company} | Add ?details=true for descriptions. |
| Recruitee | bunq.recruitee.com | GET https://{company}.recruitee.com/api/offers/ | Salary fields on many offers. |
| Personio | deskbird.jobs.personio.de | GET https://{company}.jobs.personio.de/xml?language=en | XML feed. Also on .jobs.personio.com. |
| BambooHR | d1g1t.bamboohr.com/careers | GET https://{company}.bamboohr.com/careers/list | List only. Each job detail is at /careers/{id}/detail. |
| Breezy HR | beli.breezy.hr | GET https://{company}.breezy.hr/json | Salary line when published. |
| Pinpoint | workwithus.pinpointhq.com | GET https://{company}.pinpointhq.com/postings.json | No posting date in the feed. |
| Rippling ATS | ats.rippling.com/rippling/jobs | GET https://ats.rippling.com/api/v2/board/{company}/jobs | One posting can repeat per location, so merge by id. |
| Teamtailor | ecoonline.teamtailor.com | GET https://{company}.teamtailor.com/jobs.rss | RSS feed. Works on custom career domains too. |
How to find which ATS a company uses
- Open the company's careers page and click any job.
- Look at the link or the address bar. Domains like
greenhouse.io,lever.co,ashbyhq.com,myworkdayjobs.comorworkable.comtell you the ATS and the board name. - If the careers page is on the company's own domain, view the page source and search for the same domains, or try the company name on the Greenhouse, Ashby and Lever endpoints above.
The hard part: 13 different formats
Each endpoint returns different field names for the same thing. Location can be a string, an object or a list. Remote work is a flag in one ATS and a word in the title in another. Salaries come as structured ranges, free text, or not at all. Dates are ISO strings, Unix timestamps or missing. If you build a job board, a hiring tracker or a sales-signal feed, most of the work is normalising these into one schema and tracking which jobs are new.
One format for all 13: ATS Jobs Scraper
- Paste career page URLs or company names. The Actor detects the ATS.
- Same fields for every job: title, company, department, location, remote, employment type, salary min and max, currency, posted date, apply URL.
- Filters for title keywords, excluded words, locations, remote only and posted within N days.
- New-jobs-only mode for daily alerts. Export to CSV, Excel, JSON, Google Sheets, Slack or a webhook.
- Usable from AI agents through the Apify MCP server (
ctriolab/ats-jobs-feed).
Pricing: $1.50 per 1,000 jobs saved. Jobs removed by filters are free.
More guides
- Greenhouse jobs API: get all jobs from a Greenhouse board
- Workday jobs API: scrape myworkdayjobs.com career sites
- SEEK, JobStreet and JobsDB job data for 8 countries
FAQ
Is there one API for Greenhouse, Lever and Workday jobs?
Not from the vendors. Each ATS has its own public endpoint and format. Aggregators such as the ATS Jobs Scraper combine 13 of them into one schema.
Do I need an API key to read Greenhouse or Lever jobs?
No. The job board endpoints are public and read-only. API keys are only needed for the private Harvest (Greenhouse) or Lever APIs that manage candidates.
Is it legal to collect these job postings?
The endpoints serve job ads that companies publish for applicants. They contain no candidate data. Check the terms of each site and the laws that apply to your use, especially if you republish the content.
How often do the boards change?
Larger companies add and close jobs daily. For alerts, poll once a day and keep only jobs you have not seen before.