ATS Job Feeds: Greenhouse, Lever, Ashby, Workable & more
Pricing
from $0.01 / 1,000 results
ATS Job Feeds: Greenhouse, Lever, Ashby, Workable & more
Normalized job postings from company job boards on Greenhouse, Lever, Ashby, SmartRecruiters, Workable and Recruitee. Paste career-page URLs; get one clean schema with salary, remote, locations and dates. Only-new mode tracks changes between runs.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Chatuporn Duangthong
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
One clean job feed from many companies' career pages. Paste the job-board URLs of the companies you follow. The Actor reads their public boards on Greenhouse, Lever, Ashby, SmartRecruiters, Workable and Recruitee and returns every posting in one schema: title, department, locations, remote flag, employment type, salary (when the company publishes it), dates, apply link and, if you want it, the description as clean text or Markdown.
Schedule it with Only new on and you get a feed of jobs posted since the last run, for job boards, recruiting and sales-intelligence tools, market research, or alerts.
Why use this
- Six ATSs, one output. No more one Actor per ATS with different field names.
salaryMin,remote,postedAtmean the same thing for every company. - Paste whatever you have.
https://jobs.lever.co/spotify,greenhouse:airbnb, a company's own careers page (the embedded board is found for you), or justnotion(every ATS is tried). - Official public endpoints. The Actor reads the JSON feeds the ATS vendors publish for embedding job lists on career sites. No login, no browser, no proxies, so it is fast and cheap.
- Change tracking. Only jobs not seen in earlier runs remembers each job ID per company. The run summary also counts jobs that were removed from each board.
- Filters that behave. Keywords match whole words (
javadoes not matchjavascript), locations match whole words (USdoes not matchAustralia), plus remote only, departments, employment types and posting age. - One bad company never fails the run. Each company gets a status (
ok,not_found,unsupported,error,invalid) in the run summary.
Input
| Field | What it does |
|---|---|
companies | Required. URLs, ats:token, careers pages or names. One per line. |
keywords, keywordsMatch | Keep jobs with any of these words, in the title only or in title and description. |
excludeKeywords | Drop jobs whose title contains any of these words. |
locations | Keep jobs in any of these places (whole words). Add Remote to also keep remote jobs. |
remoteOnly | Only jobs marked remote. |
departments | Department or team contains any of these texts. |
employmentTypes | full_time, part_time, contract, internship, temporary. |
postedWithinDays | Only jobs first published in the last N days. |
onlyNew | Only jobs not returned before (state kept per company). |
includeDescription, descriptionFormat | Add the description as text, markdown or the original html. |
maxJobsPerCompany | Newest N jobs per company. 0 = all. |
Accepted company formats
| ATS | URL examples | Token form |
|---|---|---|
| Greenhouse | boards.greenhouse.io/airbnb, job-boards.greenhouse.io/discord, boards.greenhouse.io/embed/job_board?for=figma | greenhouse:airbnb |
| Lever | jobs.lever.co/spotify, jobs.eu.lever.co/x | lever:spotify |
| Ashby | jobs.ashbyhq.com/openai | ashby:openai |
| SmartRecruiters | careers.smartrecruiters.com/Wix2, jobs.smartrecruiters.com/Ubisoft2 | smartrecruiters:Wix2 |
| Workable | apply.workable.com/huggingface, huggingface.workable.com | workable:huggingface |
| Recruitee | bunq.recruitee.com | recruitee:bunq |
The token is the part of the board URL after the domain (for Recruitee, the subdomain). SmartRecruiters IDs are case-sensitive.
Examples
Daily feed of new engineering jobs at a watch-list of startups
{"companies": ["https://jobs.ashbyhq.com/openai", "greenhouse:discord", "lever:spotify", "https://apply.workable.com/huggingface"],"departments": ["Engineering", "Research"],"onlyNew": true}
Remote data jobs posted this week, with Markdown descriptions
{"companies": ["greenhouse:airbnb", "ashby:notion", "ashby:linear", "recruitee:bunq"],"keywords": ["data", "analytics", "machine learning"],"remoteOnly": true,"postedWithinDays": 7,"includeDescription": true,"descriptionFormat": "markdown"}
Salary benchmarking: everything a company publishes
{ "companies": ["https://job-boards.greenhouse.io/discord", "https://jobs.ashbyhq.com/openai"] }
Output
One item per job:
{"ats": "greenhouse","company": "Discord","companyToken": "discord","jobId": "8847080002","title": "Group Product Manager, Data/ML","department": "Product Management","team": null,"locations": ["San Francisco Bay Area"],"country": null,"remote": false,"workplaceType": null,"employmentType": null,"employmentTypeRaw": null,"salaryMin": 304000,"salaryMax": 380000,"salaryCurrency": "USD","salaryPeriod": "year","salaryText": "Base Salary","postedAt": "2026-10-23T20:58:26Z","updatedAt": "2026-10-23T20:58:26Z","jobUrl": "https://job-boards.greenhouse.io/discord/jobs/8847080002","applyUrl": "https://job-boards.greenhouse.io/discord/jobs/8847080002","description": "Discord has a highly engaged community of millions of daily active users ...","scrapedAt": "2026-11-02T14:14:27Z"}
workplaceTypeisremote,hybrid,onsiteornull(not stated).remoteistrueonly for remote jobs.employmentTypeis one offull_time,part_time,contract,internship,temporary,other;employmentTypeRawkeeps the ATS's own wording.salaryPeriodisyear,month,week,dayorhour. Salary fields arenullwhen the company does not publish a structured range.- Dates are ISO 8601 in UTC.
descriptionappears only when Include job description is on.
The run summary is saved as OUTPUT in the run's key-value store: one entry per company with its status, the number of jobs on the board, matched, new, removed and saved.
What each ATS provides
| Greenhouse | Lever | Ashby | SmartRecruiters | Workable | Recruitee | |
|---|---|---|---|---|---|---|
| Salary | when published | when published | when published | – | – | when published |
| Remote / hybrid | when the board has a workplace field or the location says Remote | yes | yes | yes | remote only | yes |
| Employment type | when the board has the field | yes | yes | yes | yes | yes |
| Posted date | yes | yes (created) | yes | yes | yes (day) | yes |
| Updated date | yes | – | – | – | – | yes |
| Company name | yes | from the board page | from the board page | yes | yes | yes |
Good to know
- Pricing is per job saved. Filters run before saving, so filtered-out jobs cost nothing. Set a maximum cost per run in Apify to cap spending.
- Speed. Most boards load in 1–5 seconds; a run over a handful of companies usually finishes in under 10 seconds. Lever can serve very large boards slowly, and SmartRecruiters needs one extra request per job for descriptions (about 4 jobs per second). Requests are spread out: at most two at a time per ATS host, with a 1-second gap on Lever as its robots.txt asks.
- SmartRecruiters answers "0 jobs" for a company ID that does not exist, so a typo shows as
okwith 0 jobs and a hint in the summary. - Careers pages on the company's own domain are detected only if the board is linked or embedded in the page's HTML. Pages that load the board with JavaScript from elsewhere may show
unsupported; use theats:tokenform then. - Not supported: Workday, iCIMS, Taleo, SuccessFactors, BambooHR, Personio and other systems without a public job-board JSON feed.
- Personal data. Only the posting itself is returned. Recruiter names, recruiter emails and application-form questions that some feeds include are dropped. Descriptions are passed on as the company published them.
- Only new stores job IDs (no personal data) in the named key-value store
ats-job-feeds-statein your Apify account. Delete that store to start over.
Data source
Public job-board APIs that the ATS vendors document for building career sites: Greenhouse Job Board API, Lever Postings API, Ashby Job Postings API, SmartRecruiters Posting API, the Workable jobs widget and the Recruitee Careers Site API. Job postings belong to the companies that published them.