ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday + 5 more avatar

ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday + 5 more

Pricing

$2.00 / 1,000 jobs

Go to Apify Store
ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday + 5 more

ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday + 5 more

Get every open job from a company's own careers board: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio and Breezy HR. One clean schema with salary, remote flag, location, department, dates and apply link. Auto-detects the ATS from a URL or company name.

Pricing

$2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Angad Jangir

Angad Jangir

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Security

Limited permissions

Share

ATS Jobs Feed: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters jobs in one schema

Get every open job from a company's own careers board as clean JSON, CSV or Excel. Paste careers-page URLs or company names, and the Actor finds the applicant tracking system (ATS), reads its public job-board feed and returns all jobs in one normalised schema: title, department, team, locations, country, remote flag, workplace type, employment type, seniority, salary range, posting date, apply link and the full description.

Nine ATSs are supported: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio and Breezy HR. The data comes straight from the employer's own job board, so it is fresher and more complete than job aggregators, with no duplicates from reposts.

Who uses it

  • Job boards and niche job sites that list jobs from hundreds of companies and need one clean feed.
  • Recruiters and staffing agencies watching target companies for new roles.
  • Sales and investment teams that use hiring as a signal: a company hiring 10 data engineers or its first sales lead is a warm lead.
  • Analysts and HR teams benchmarking salaries, remote policies and hiring by department.
  • AI agents that need live job data. The Actor can be called as a tool through the Apify MCP server.

Supported ATSs

ATSCareers URL looks likePlain name worksSalaryDescription
Greenhouseboards.greenhouse.io/discord, job-boards.greenhouse.io/discordyesyes, when the company publishes pay rangesyes
Lever (US and EU)jobs.lever.co/spotify, jobs.eu.lever.co/...yesyes, when setyes
Ashbyjobs.ashbyhq.com/rampyesyes, when shown on the postingyes
Workdaynvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSiteno, paste the URLfrom the text, when written thereyes
Workableapply.workable.com/huggingfaceyesfrom the text, when written thereyes
SmartRecruitersjobs.smartrecruiters.com/BoschGroupyesfrom the text, when written thereyes
Recruiteebunq.recruitee.comyesyes, when setyes
Personiotado.jobs.personio.deyesfrom the text, when written thereyes
Breezy HRcompany.breezy.hryesyes, when setno

When the ATS has no salary field, the Actor looks for a pay range written in the description (for example "$87,069 - $124,385" or "€60.000 - €75.000 per year") and fills salaryMin, salaryMax, salaryCurrency and salaryPeriod from it. The original wording is kept in salaryText.

How to find a company's board name

  1. Open the company's careers page and click any job.
  2. Look at the address bar, or the address of the "Apply" button. It usually goes to one of the domains in the table above.
  3. Paste that URL into Companies. The Actor reads the board name from it.

If you only know the name, type it (for example ramp or discord). The Actor tries every ATS except Workday and keeps the ones that answer. To skip the guessing, write ashby:ramp, or set ATS for plain names. Workday always needs the full careers URL, because its address contains a server number and a site name.

Example inputs

Engineering jobs at three companies on three different ATSs:

{
"companies": ["https://boards.greenhouse.io/discord", "https://jobs.lever.co/spotify", "ramp"],
"keywords": ["engineer"],
"keywordsMatch": "title",
"maxItems": 500
}

Remote roles posted in the last 7 days, without descriptions (small and fast):

{
"companies": ["https://jobs.ashbyhq.com/ramp", "https://apply.workable.com/huggingface", "https://boards.greenhouse.io/gitlab"],
"remoteOnly": true,
"postedWithinDays": 7,
"includeDescription": false
}

Sales jobs in Germany at a large Workday and SmartRecruiters employer, at most 50 per company:

{
"companies": [
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"https://jobs.smartrecruiters.com/BoschGroup"
],
"keywords": ["sales"],
"locations": ["Germany"],
"maxItemsPerCompany": 50
}

Output

Each job is one record. Fields the ATS does not have are null, so every record has the same columns.

{
"jobId": "8910013002",
"title": "Senior Machine Learning Engineer (Growth)",
"company": "Discord",
"companySlug": "discord",
"ats": "greenhouse",
"department": "Product Engineering",
"team": null,
"location": "San Francisco Bay Area",
"locations": ["San Francisco Bay Area", "San Francisco, California, United States"],
"country": "US",
"isRemote": false,
"workplaceType": null,
"employmentType": null,
"seniority": "senior",
"salaryMin": 220000,
"salaryMax": 275000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "Base Salary: 220000-275000 USD",
"postedAt": "2026-11-04T19:52:48.000Z",
"updatedAt": "2026-11-04T20:10:36.000Z",
"applyUrl": "https://job-boards.greenhouse.io/discord/jobs/8910013002",
"jobUrl": "https://job-boards.greenhouse.io/discord/jobs/8910013002",
"descriptionText": "Discord has a highly engaged community of millions of daily active users ...",
"source": "https://boards-api.greenhouse.io/v1/boards/discord/jobs",
"scrapedAt": "2026-11-05T14:55:58.783Z"
}
FieldWhat it is
jobId, title, company, companySlug, atsThe job and where it came from
department, teamAs the company files the job
location, locations, countryMain location, all locations, ISO country code (from the ATS, or worked out from the location)
isRemote, workplaceTypeisRemote is true when the job can be done remotely in at least one of its locations; workplaceType is remote, hybrid or onsite as the ATS states it
employmentTypeFull-time, Part-time, Contract, Internship or Temporary
seniorityintern, entry, mid, senior, lead, principal, manager, director or executive, from the ATS or the title
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryTextPay range and the period it is for (year, month, hour)
postedAt, updatedAtISO dates
applyUrl, jobUrlApplication form and job page
descriptionTextFull description as plain text (turn off with Include description text)
descriptionHtmlOriginal HTML, only when Include description HTML is on

The run's SUMMARY record (key-value store) lists, for every company you entered, which ATS it was found on, how many jobs the board had, how many matched your filters and how many were saved, plus a clear message for any company that was not found.

Filters

  • Keywords: any of the words, in the title only or in the title, department and description.
  • Exclude words: drop titles with any of these words (for example intern, senior).
  • Locations: location contains any word; country names, codes and Remote work.
  • Departments, Remote jobs only, Posted within (days).
  • Max jobs and Max jobs per company (newest jobs first).

Pricing

You pay per job saved to the dataset. Jobs removed by your filters cost nothing. Max jobs is a hard cap, so you always know the most a run can cost.

Schedules, webhooks and integrations

  • Daily new-job alerts: save your input as a Task, add a Schedule (for example every morning), and set Posted within (days) to 1.
  • Google Sheets, Slack, email, Zapier, Make, n8n: connect them in the Integrations tab to send each run's jobs where you need them.
  • Webhooks: get a call when a run finishes and fetch the dataset from the API.
  • MCP / AI agents: the Actor works as a tool in the Apify MCP server, so an agent can ask "what roles is Ramp hiring for in New York?" and get structured data back.

FAQ

Is this legal? The Actor reads only the public job-board feeds that each ATS provides so companies can show their jobs on their own careers pages, and that anyone can open without logging in. It does not log in, solve captchas or get around any protection, and it reads at a polite pace. You are responsible for how you use the data.

A company was "not found". Why? Many companies host their careers page on their own domain, so the name you typed may not be their ATS board name. Open one of their jobs, copy the URL of the job or its Apply button, and paste that instead.

Why do I get two boards for one name? For a plain name the Actor tries every ATS, and sometimes two different companies use the same name on two ATSs. Each record has ats and companySlug, and you can set ATS for plain names or write lever:name to pick one.

Does it work for very large employers? Yes. Big SmartRecruiters and Workday boards are read page by page, and only the jobs that pass your filters and limits get the extra description call, so runs stay quick.

How fresh is the data? Live from the ATS at run time.

Something broke or a field is missing? Open an issue on the Actor's Issues tab and it will be fixed quickly.

More Actors by angadseth