ATS Job Feeds: Greenhouse, Lever, Ashby, Workable & more avatar

ATS Job Feeds: Greenhouse, Lever, Ashby, Workable & more

Pricing

from $0.01 / 1,000 results

Go to Apify Store
ATS Job Feeds: Greenhouse, Lever, Ashby, Workable & more

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

Chatuporn Duangthong

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

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, postedAt mean 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 just notion (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 (java does not match javascript), locations match whole words (US does not match Australia), 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

FieldWhat it does
companiesRequired. URLs, ats:token, careers pages or names. One per line.
keywords, keywordsMatchKeep jobs with any of these words, in the title only or in title and description.
excludeKeywordsDrop jobs whose title contains any of these words.
locationsKeep jobs in any of these places (whole words). Add Remote to also keep remote jobs.
remoteOnlyOnly jobs marked remote.
departmentsDepartment or team contains any of these texts.
employmentTypesfull_time, part_time, contract, internship, temporary.
postedWithinDaysOnly jobs first published in the last N days.
onlyNewOnly jobs not returned before (state kept per company).
includeDescription, descriptionFormatAdd the description as text, markdown or the original html.
maxJobsPerCompanyNewest N jobs per company. 0 = all.

Accepted company formats

ATSURL examplesToken form
Greenhouseboards.greenhouse.io/airbnb, job-boards.greenhouse.io/discord, boards.greenhouse.io/embed/job_board?for=figmagreenhouse:airbnb
Leverjobs.lever.co/spotify, jobs.eu.lever.co/xlever:spotify
Ashbyjobs.ashbyhq.com/openaiashby:openai
SmartRecruiterscareers.smartrecruiters.com/Wix2, jobs.smartrecruiters.com/Ubisoft2smartrecruiters:Wix2
Workableapply.workable.com/huggingface, huggingface.workable.comworkable:huggingface
Recruiteebunq.recruitee.comrecruitee: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"
}
  • workplaceType is remote, hybrid, onsite or null (not stated). remote is true only for remote jobs.
  • employmentType is one of full_time, part_time, contract, internship, temporary, other; employmentTypeRaw keeps the ATS's own wording.
  • salaryPeriod is year, month, week, day or hour. Salary fields are null when the company does not publish a structured range.
  • Dates are ISO 8601 in UTC. description appears 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

GreenhouseLeverAshbySmartRecruitersWorkableRecruitee
Salarywhen publishedwhen publishedwhen published––when published
Remote / hybridwhen the board has a workplace field or the location says Remoteyesyesyesremote onlyyes
Employment typewhen the board has the fieldyesyesyesyesyes
Posted dateyesyes (created)yesyesyes (day)yes
Updated dateyes––––yes
Company nameyesfrom the board pagefrom the board pageyesyesyes

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 ok with 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 the ats:token form 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-state in 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.