Workday, Personio, Breezy, Rippling - ATS Jobs API
Under maintenancePricing
from $2.00 / 1,000 job listing returneds
Workday, Personio, Breezy, Rippling - ATS Jobs API
Under maintenanceScrape every open job from a company's Workday, Personio, Breezy or Rippling career site into one normalised schema. Paste a mixed list of career-site URLs, get one job-listings dataset back. No API key, no proxy, no browser.
Pricing
from $2.00 / 1,000 job listing returneds
Rating
0.0
(0)
Developer
Pablo D
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Workday Jobs API — plus Personio, Breezy and Rippling, in one normalised schema
Every ATS scraper on the market covers Greenhouse, Lever and Ashby. Almost none of them cover the enterprise. The Fortune 500 does not recruit on Greenhouse — it recruits on Workday. Half of the DACH mid-market recruits on Personio. And the moment your job dataset has to include a company with more than a thousand employees, you discover the gap.
This Actor takes a list of career-site URLs and returns one row per open job, normalised across Workday, Personio, Breezy HR and Rippling. No API key, no proxy, no browser.
nvidia.wd5.myworkdayjobs.com/… ─┐ ┌─ title, location, departmentpersonio.jobs.personio.de ─┼──► one row each ──┼─ employmentType, isRemote, postedAtbreezy.breezy.hr ─┤ ├─ salaryText, url, applyUrlats.rippling.com/acme/jobs ─┘ └─ descriptionText + descriptionHtml
Workday jobs API — the part that is normally hard
A Workday career site is a JavaScript application. Point a normal scraper at nvidia.wd5.myworkdayjobs.com and you get an empty shell. The job data lives behind the site's own public JSON endpoint, and to call it you need three things out of the URL: the tenant, the data centre (wd1, wd3, wd5 …) and the career-site name.
This Actor parses all three out of any Workday URL you paste, pages the listing endpoint to the end, and then fetches each job's detail record to get the full description, the requisition ID, the employment type and every location on a multi-site posting. In a measured run, a single Workday tenant returned 2,000 open roles.
You can also give it the parts explicitly: workday:nvidia:wd5:NVIDIAExternalCareerSite.
Supported ATS platforms
| Platform | Entry format | Descriptions | Notes |
|---|---|---|---|
| Workday | https://{tenant}.wd5.myworkdayjobs.com/{SiteName} | Yes | One extra request per job. Enterprise-scale tenants, thousands of roles |
| Personio | https://{company}.jobs.personio.de | When the company fills them in | Personio's own documented public XML job feed. Heavily used across DACH |
| Breezy HR | https://{company}.breezy.hr | No — see limitations | Carries salary, department, employment type and every location |
| Rippling | https://ats.rippling.com/{company}/jobs | Yes | One extra request per job |
The same schema as the Greenhouse/Lever/Ashby/Workable Actor
The output shape here is field-for-field identical to Greenhouse, Lever, Ashby, Workable — Career Site Jobs API. Run both, concatenate the two datasets, and you have one job feed spanning eight applicant tracking systems with no mapping work — source tells you which platform each row came from.
Input
{"companies": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","https://personio.jobs.personio.de","https://breezy.breezy.hr","https://ats.rippling.com/rippling/jobs"],"defaultProvider": "personio","includeDescription": true,"titleKeywords": [],"excludeTitleKeywords": [],"locationKeywords": [],"remoteOnly": false,"postedWithinDays": 0,"maxJobsPerCompany": 0,"maxJobsTotal": 0,"requestDelaySeconds": 1,"respectRobotsTxt": true,"emitErrorItems": false}
Output
{"source": "workday","companySlug": "nvidia","companyName": null,"jobId": "JR2024319","title": "ISV GTM Sales Strategist - DACH","url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Germany-Munich/ISV-GTM-Sales-Strategist---DACH_JR2024319","applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Germany-Munich/ISV-GTM-Sales-Strategist---DACH_JR2024319","location": "Germany, Munich","locations": ["Germany, Munich", "UK, Remote"],"country": "Munich","department": null,"team": null,"employmentType": "Full time","isRemote": false,"workplaceType": null,"postedAt": "2026-09-10T00:00:00+00:00","updatedAt": null,"salaryText": null,"descriptionText": "NVIDIA has been transforming computer graphics, PC gaming and accelerated computing for more than 25 years...","descriptionHtml": "<p>NVIDIA has been transforming...</p>","boardUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","scrapedAt": "2026-09-10T18:22:01+00:00"}
Use cases
- Job boards and aggregators — cover the enterprise employers your Greenhouse-only feed is missing.
- Recruitment market research — how many roles is a given enterprise advertising, in which departments, in which countries, week over week.
- Competitor hiring intelligence — a competitor opening twelve roles in one city is a signal that arrives before any announcement.
- Candidate alerting —
titleKeywordspluspostedWithinDays: 3and a daily schedule gives a focused feed. - DACH recruiting — Personio coverage is the reason this Actor exists for anyone hiring in German-speaking Europe.
Honest limitations
- Breezy HR jobs have no description. Breezy's public feed carries title, salary, department, employment type and locations, but not the job text, and Breezy publishes no public detail endpoint.
descriptionTextanddescriptionHtmlarenullfor Breezy rows rather than filled with something invented. - Personio descriptions depend on the company. The feed exposes a
jobDescriptionsblock, but plenty of tenants publish it empty. When it is empty, the field isnull. - Workday
departmentis usuallynull. Workday exposes job families as search facets rather than as a field on the posting, so there is nothing honest to put there. - Workday costs one request per job when
includeDescriptionis on. On a 2,000-role tenant that is 2,000 requests — setmaxJobsPerCompany, or turn descriptions off, unless you actually want all of it. - Workday publishes a relative posting date ("Posted 5 Days Ago"), which is converted to a date. Expect day-level accuracy, not timestamp-level.
- A tenant that does not exist returns a redirect, which is reported as an error rather than as zero jobs, so you can tell "wrong token" from "nobody is hiring".
- SmartRecruiters and Recruitee are deliberately not supported. Their
robots.txtdisallows automated access for a generic user agent, so they are out of scope. This is a choice, not an omission.
robots.txt and data sources
Every provider here exposes a public, unauthenticated career-site endpoint that the ATS publishes so job aggregators can consume it. No login, no anti-bot circumvention, no proxies, no browser. Checked 2026-09-10:
{tenant}.wdN.myworkdayjobs.com—Allow: /{SiteName}/, with only/talentcommunity/and/refreshFacet/disallowed.{company}.jobs.personio.de—/xmlis Personio's documented public job-feed export, published for job boards to consume.{company}.breezy.hr— only/css,/fonts,/stylesheetsand/javascriptsare disallowed.ats.rippling.com— only/internal/is disallowed.
On top of that, respectRobotsTxt is on by default and each career-site host's own robots.txt is fetched once per run: a tenant that disallows its job feed is skipped, not scraped. Crawl-delay directives are honoured.
Works with
- Greenhouse, Lever, Ashby, Workable — Career Site Jobs API — the other four ATS platforms, same schema.
- Website Tech Stack & Email Finder — give it a domain and it tells you which ATS the company recruits with and its board token, which is exactly the input this Actor takes.
- Remote Jobs Feed API — remote-first job boards.
FAQ
How do I find the Workday data centre and site name?
They are both in the career-site URL. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite gives tenant nvidia, data centre wd5, site NVIDIAExternalCareerSite. Paste the URL and the Actor works it out.
Does it need a proxy? No. Every endpoint is public and unauthenticated. There is no anti-bot system to defeat because there is nothing being defended.
Why is country sometimes odd on Workday rows?
Workday's location strings are free text ("2 Locations", "Germany, Munich"), so country is parsed best-effort and left null when it cannot be determined honestly. The raw string is always in location and locations.
Can I get only remote roles?
remoteOnly: true. It keeps jobs the ATS flags as remote and jobs whose location text says so.
What does it cost? Pay per event: a fixed fee to start the run, plus a small fee per job returned.