Workday, Personio, Breezy, Rippling - ATS Jobs API avatar

Workday, Personio, Breezy, Rippling - ATS Jobs API

Under maintenance

Pricing

from $2.00 / 1,000 job listing returneds

Go to Apify Store
Workday, Personio, Breezy, Rippling - ATS Jobs API

Workday, Personio, Breezy, Rippling - ATS Jobs API

Under maintenance

Scrape 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

Pablo D

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

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, department
personio.jobs.personio.de ─┼──► one row each ──┼─ employmentType, isRemote, postedAt
breezy.breezy.hr ─┤ ├─ salaryText, url, applyUrl
ats.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

PlatformEntry formatDescriptionsNotes
Workdayhttps://{tenant}.wd5.myworkdayjobs.com/{SiteName}YesOne extra request per job. Enterprise-scale tenants, thousands of roles
Personiohttps://{company}.jobs.personio.deWhen the company fills them inPersonio's own documented public XML job feed. Heavily used across DACH
Breezy HRhttps://{company}.breezy.hrNo — see limitationsCarries salary, department, employment type and every location
Ripplinghttps://ats.rippling.com/{company}/jobsYesOne 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 alertingtitleKeywords plus postedWithinDays: 3 and 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. descriptionText and descriptionHtml are null for Breezy rows rather than filled with something invented.
  • Personio descriptions depend on the company. The feed exposes a jobDescriptions block, but plenty of tenants publish it empty. When it is empty, the field is null.
  • Workday department is usually null. 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 includeDescription is on. On a 2,000-role tenant that is 2,000 requests — set maxJobsPerCompany, 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.txt disallows 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.comAllow: /{SiteName}/, with only /talentcommunity/ and /refreshFacet/ disallowed.
  • {company}.jobs.personio.de/xml is Personio's documented public job-feed export, published for job boards to consume.
  • {company}.breezy.hr — only /css, /fonts, /stylesheets and /javascripts are 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

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.