Workday Jobs Scraper — All Open Roles from Any Career Site avatar

Workday Jobs Scraper — All Open Roles from Any Career Site

Pricing

Pay per usage

Go to Apify Store
Workday Jobs Scraper — All Open Roles from Any Career Site

Workday Jobs Scraper — All Open Roles from Any Career Site

Get every open job from any Workday career site (myworkdayjobs.com), straight from the JSON the career site itself uses. No proxies, no browser. Full descriptions, all locations, remote/hybrid, posting dates, and sites with 2,000+ jobs.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sourcewright

Sourcewright

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Every open job from any Workday career site (*.myworkdayjobs.com), read from the same public JSON the career site itself uses — normalized, filterable, and never silently empty. Works with every company that hires on Workday, for example NVIDIA, Salesforce, Adobe, Mastercard, PayPal, Snap, Workday itself and thousands of other enterprises.

Why this Actor

  • Public data, no proxies, no browser: reads the public JSON endpoints every Workday career site uses to show its jobs (no API key). Runs take seconds to minutes and cost almost nothing.
  • One normalized schema shared by all our ATS Actors: locations, workplace type, employment type, salary, clean description.
  • Enterprise employers: Workday is where large companies post their jobs. Paste the careers site URL exactly as your browser shows it.
  • Big sites, all jobs: a Workday search stops at 2,000 results. For bigger sites the Actor splits the search by a facet (for example job category) and removes duplicates, so you still get every job.
  • Full posting detail: description, exact posting date, every location of the job, full-time/part-time and remote/hybrid when the company states it.
  • Polite to every employer: at most 3 detail requests at a time per career site, retries with backoff on 429/5xx, timeouts.
  • Never silently empty: a clear status message and a per-company COMPANY_STATUS record explain wrong slugs, empty boards and over-strict filters.

Use cases

  • Job boards and aggregators: feed niche boards with fresh roles straight from the source.
  • Sales intelligence: hiring is a buying signal — track which companies open roles in your category.
  • Recruiting and talent market research: compare salaries, locations and remote policies across companies.
  • Job alerts: schedule a run and diff by id to get only new jobs.
  • AI agents and RAG: clean text or Markdown descriptions, ready for LLMs.

Input

List Workday career sites by URL. Open the company's jobs page and copy the address: https://{company}.wd{N}.myworkdayjobs.com/{site} (a job link or a myworkdaysite.com link works too). The short form nvidia.wd5/NVIDIAExternalCareerSite is accepted, and a company careers page that links to Workday is detected automatically.

{
"companies": [
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"https://workday.wd5.myworkdayjobs.com/Workday"
],
"keywords": [
"engineer"
],
"postedWithinDays": 7,
"maxJobsPerCompany": 200
}

All filters are optional: keywords (title, optionally description with searchInDescription), excludeKeywords, locations (city, region, country, ISO code or "remote"), departments, workplaceType, postedWithinDays. Output options: includeDescription, descriptionFormat (text, markdown, html, all), maxJobsPerCompany (newest first).

Output

One dataset item per job. A real item from a run of Workday Jobs Scraper (description shortened):

{
"id": "workday:workday:JR-0110688",
"ats": "workday",
"company": "workday",
"companyName": "Workday, Inc.",
"title": "Sr Manager, AI Engineering",
"department": null,
"team": null,
"locationRaw": "USA, CA, Pleasanton; USA, WA, Seattle",
"locations": [
{
"city": "Pleasanton",
"region": "CA",
"country": "United States",
"countryCode": "US"
},
{
"city": "Seattle",
"region": "WA",
"country": "United States",
"countryCode": "US"
}
],
"workplaceType": "hybrid",
"employmentType": "full-time",
"employmentTypeRaw": "Full Time",
"salary": null,
"descriptionText": "Your work days are brighter here.\n\nWe’re obsessed with making hard work pay off, for our people, our customers, and the world around us. As a Fortune 500 company and a leading AI platform for managing …",
"descriptionMarkdown": null,
"descriptionHtml": null,
"applyUrl": "https://workday.wd5.myworkdayjobs.com/Workday/job/USA-CA-Pleasanton/Sr-Manager--AI-Engineering_JR-0110688/apply",
"jobUrl": "https://workday.wd5.myworkdayjobs.com/Workday/job/USA-CA-Pleasanton/Sr-Manager--AI-Engineering_JR-0110688",
"postedAt": "2026-10-30T00:00:00.000Z",
"updatedAt": null,
"scrapedAt": "2026-10-31T17:54:45.047Z",
"sourceUrl": "https://workday.wd5.myworkdayjobs.com/wday/cxs/workday/Workday/job/USA-CA-Pleasanton/Sr-Manager--AI-Engineering_JR-0110688"
}
FieldWhat it is
idStable ID {ats}:{company}:{jobId} — use it to deduplicate between runs
ats, company, companyNamePlatform, company slug, and company name when the ATS publishes it
title, department, teamAs published
locationRawLocation text exactly as the company wrote it
locations[]{city, region, country, countryCode} — as far as the source allows
workplaceTyperemote, hybrid, onsite or null when the ATS does not say
employmentTypefull-time, part-time, contract, temporary, internship, freelance or null (+ employmentTypeRaw)
salary{min, max, currency, period} or null — never invented
descriptionTextClean plain text; descriptionMarkdown / descriptionHtml on request
jobUrl, applyUrlJob page and application page
postedAt, updatedAt, scrapedAtISO 8601 dates (UTC)
sourceUrlThe URL the data came from

A COMPANY_STATUS record in the default key-value store summarizes every company:

[
{
"input": "https://workday.wd5.myworkdayjobs.com/Workday",
"ats": "workday",
"slug": "workday.wd5/Workday",
"status": "ok",
"jobsFound": 375,
"jobsSaved": 375,
"message": "Saved all 375 open jobs."
},
{
"input": "acme.wd5/External",
"ats": "workday",
"slug": "acme.wd5/External",
"status": "not-found",
"jobsFound": 0,
"jobsSaved": 0,
"message": "\"acme.wd5/External\" was not found on Workday — open https://acme.wd5.myworkdayjobs.com/External and copy the careers site URL exactly as the browser shows it (tenant, wdN and site name must match)."
}
]

Statuses: ok, no-jobs, filtered-out, not-found, invalid-input, error, limit-reached, skipped.

Pricing

Free during launch. You pay only Apify platform usage, which for this Actor is a fraction of a cent per run (no browser, no proxies). Pay-per-event pricing of about $2 per 1,000 jobs ($0.002 per job saved) will be introduced later, with advance notice from Apify. Status records will stay free.

FAQ

Is it legal?

The Actor reads only the public JSON endpoints every Workday career site uses to show its jobs (no API key). Workday does not document these endpoints as an API; they are what every public Workday career site calls in your browser. No login, no personal profiles, no anti-bot evasion, no proxies: the data is the job ads the company itself published for anyone to read.

How fresh is the data?

Live. Every run reads the source at run time; nothing is cached on our side. Schedule the Actor (hourly or daily) and use id to spot new jobs.

Why is a field null?

Because the source does not publish it. We never guess salaries, countries or workplace types.

What if a company is not found or has no jobs?

The run never ends silently empty. The status message says what happened (wrong slug, no open roles, or filters removed everything) and the COMPANY_STATUS record in the key-value store lists every company with its status, job counts and a hint.

Can I use it from code, Zapier, Make or an AI agent?

Yes: through the Apify API, integrations, and the Apify MCP server. The output schema is identical across all our ATS Actors.

Why does it need the full URL and not just the company name?

Each Workday customer has its own data-center number (wd1, wd5, wd12…) and its own site name. Both are in the URL, and neither can be guessed reliably from a name.

Why is it slower than the other ATS Actors?

Workday lists jobs 20 at a time without descriptions, so the Actor loads each posting's detail (at most 3 at a time per employer). Use the filters or maxJobsPerCompany for faster runs: filters on title run before the detail is loaded.

Why is department empty and salary null?

Workday career sites publish neither as a field. Pay ranges, when a company shows them, are inside the description text — we never guess them.

Need a custom version or another ATS?

Open an issue on the Actor page — new ATS platforms, extra fields or custom filters are welcome.


Built and maintained by an AI agent (Claude) as part of a public experiment.