Workday Jobs Scraper: Career Site API avatar

Workday Jobs Scraper: Career Site API

Pricing

$2.00 / 1,000 job scrapeds

Go to Apify Store
Workday Jobs Scraper: Career Site API

Workday Jobs Scraper: Career Site API

Workday jobs scraper for any Workday career site (myworkdayjobs.com). Exports all open Workday jobs: title, location, remote flag, employment type, posting date, full description and apply URL. No API key and no login. $2.00 per 1,000 jobs.

Pricing

$2.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Features

Limited permissions

Share

Workday Jobs Scraper: Export Jobs from Any Workday Site

Workday Jobs Scraper exports every open job from one or more Workday career sites (<company>.wdN.myworkdayjobs.com) as JSON, CSV or Excel. You give it the career site URL, and it pages through the site's job search and opens each job to return the title, primary and additional locations, time type, requisition ID, posting date, full description and apply URL. It costs $2.00 per 1,000 jobs, so a 500-job site costs about $1.00.

Features

  • Scrape Workday job postings from any public myworkdayjobs.com career site, with no login.
  • Export myworkdayjobs.com jobs to CSV, JSON or Excel.
  • Get the Workday requisition ID (atsJobId, for example JR2020549) for each job, so you can match postings across runs.
  • Scrape large enterprise career sites. The actor pages through Workday's job search 20 jobs at a time, up to 20,000 jobs per site.
  • Get full Workday job descriptions with all additional locations and the full-time or part-time flag.
  • Filter Workday jobs by keyword, location, remote and posting date.
  • Monitor new Workday job postings of a company: with onlyNewJobs a scheduled run returns and charges only jobs it has not delivered before.

Use cases

  • Job aggregation for large employers: many Fortune 500 companies, banks, hospitals and universities run their careers site on Workday. Pull them into one feed.
  • Recruiting and competitive hiring intelligence: track how many roles a competitor opens per location and how fast requisitions are filled and removed.
  • Workforce and market research: count openings by location and job title across a set of enterprises.
  • Lead generation: an enterprise opening a batch of "SAP" or "Cloud Security" roles is a signal for vendors in that space.

Input

{
"startUrls": [
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"https://examplecorp.wd1.myworkdayjobs.com/en-US/External"
],
"keywords": ["software", "engineer"],
"locations": ["Santa Clara", "Germany"],
"remoteOnly": false,
"postedWithinDays": 14,
"includeDescription": true,
"maxJobsPerCompany": 0
}
FieldTypeDefaultWhat it does
startUrlsarray of strings(required)Workday career site URLs, one per line.
keywordsarray[]Keep only jobs whose title contains one of these words (case-insensitive).
locationsarray[]Keep only jobs whose location or additional locations contain one of these strings.
remoteOnlybooleanfalseKeep only jobs that Workday gives a remote type, or whose location mentions remote.
postedWithinDaysinteger0Keep only jobs posted in the last N days. 0 means no limit. Jobs without a date are kept.
includeDescriptionbooleantrueOpen each job to get the description and details. This costs one extra request per job.
maxJobsPerCompanyinteger0Stop after this many jobs per site that pass the filters; job details stop being fetched once it is reached. 0 means no limit.
onlyNewJobsbooleanfalseMonitor mode: output and charge only jobs not delivered on an earlier run.
monitorStoreNamestringemptyKey-value store that remembers delivered jobs. Empty means a name derived from the career sites and filters.
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy.

Accepted Workday URL formats:

  • https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
  • https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite (locale prefixes are accepted)
  • https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/... (a single job URL; the whole site is read)
  • nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite (without https://)
  • https://company.com/careers (a page whose HTML links to a myworkdayjobs.com site)

Workday has no short board name: the URL carries the tenant (nvidia), the data center host (wd5) and the site name (NVIDIAExternalCareerSite). A tenant can run several career sites, so copy the URL of the site you want from the browser address bar.

Get new Workday jobs every day (monitor mode)

Turn on onlyNewJobs to get only the jobs a company posted since your last run:

{
"startUrls": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
"maxJobsPerCompany": 0,
"onlyNewJobs": true
}

The IDs of delivered jobs are kept in a named key-value store in your Apify account, and later runs skip them. For alerts:

  1. Save the input as an Apify task.
  2. Add an Apify schedule, daily or weekly.
  3. Add an integration on the task (email, Slack, Google Sheets, Make, Zapier or a webhook) that fires on a succeeded run. Each run's dataset holds only the new jobs.

Details:

  • maxJobsPerCompany counts new jobs only. Leave it at 0 on the first run so that run remembers every open job.
  • Jobs seen before are dropped before their detail request, and are neither output nor charged.
  • Without monitorStoreName the store name is derived from the site URLs and filters, so each input keeps its own history. Set a name to share history between inputs, or a new one to start over.
  • A job cut off by maxJobsPerCompany, the run timeout or the run's maximum cost is not remembered and comes on the next run. Schedule one run per store, since two parallel runs can deliver the same new job.

Output

One item per job:

{
"title": "Senior Software Engineer, PyTorch - Deep Learning",
"company": "nvidia",
"location": "US, CA, Santa Clara",
"locations": ["US, CA, Santa Clara", "US, WA, Redmond"],
"country": null,
"remote": false,
"workplaceType": null,
"department": null,
"team": null,
"employmentType": "Full time",
"seniority": null,
"salary": "184,000 USD - 287,500 USD",
"postedAt": "2026-09-24T00:00:00.000Z",
"updatedAt": null,
"url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Software-Engineer--PyTorch---Deep-Learning_JR2020549",
"applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Software-Engineer--PyTorch---Deep-Learning_JR2020549",
"descriptionHtml": "<p>NVIDIA is seeking…</p>",
"descriptionText": "NVIDIA is seeking…",
"ats": "workday",
"atsJobId": "JR2020549",
"sourceUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"scrapedAt": "2026-09-25T08:40:17.000Z"
}

What Workday exposes, and how it maps:

  • company is the Workday tenant from the URL (for example nvidia).
  • location is Workday's primary location text, and locations adds every additional location.
  • employmentType is Workday's time type (Full time, Part time).
  • postedAt is the job's posting start date from the detail page.
  • atsJobId is the requisition ID, and applyUrl is Workday's external URL for the job.
  • remote is true when Workday sets any remote type on the job (companies use values such as "Remote" or "Hybrid"), or when the location mentions remote.
  • The actor does not read a salary, department, team or country field from Workday, so department, team, country and workplaceType are always null. salary is filled only when a pay range appears in the first 4,000 characters of the description text; postings that put the range further down leave it null.

With includeDescription off the actor reads only the search result list. That is much faster, but you get fewer fields: location can read "2 Locations" for multi-location jobs, employmentType and salary are null, applyUrl equals url, and postedAt is a date estimated from Workday's "Posted 3 Days Ago" label (jobs labelled "Posted 30+ Days Ago" have no date).

If a career site URL is wrong or unreachable, the dataset gets one row with sourceUrl and an error message. Error rows are not charged.

Pricing

Pay per event: $0.002 per job saved to the dataset ($2.00 per 1,000 jobs). There is no start fee.

Worked example: a large Workday site with 3,000 open jobs costs $6.00 for a full export. Ten enterprise sites with 800 jobs each cost $16.00. With keywords: ["engineer"] you might keep a quarter of them (2,000 jobs, $4.00). Jobs removed by filters and error rows are not charged.

In monitor mode only new jobs are charged: a daily run over the same ten sites that finds 50 new jobs costs 50 x $0.002 = $0.10, and a run with nothing new costs nothing in result events.

FAQ

Why is a large site slow? With includeDescription on, every job needs its own detail request, so a 5,000-job site means 5,000 extra requests. Turn descriptions off when you only need titles, locations and links.

What can it not do? It only reads public myworkdayjobs.com sites. Internal career sites that need a Workday sign-in, myworkdaysite.com URLs and other enterprise ATS (such as SuccessFactors, Taleo or iCIMS) are not supported. It does not render JavaScript on a company's own careers page, so paste the Workday URL directly when auto-detection does not find it.

Do I need proxies? Normally no. The actor backs off and retries on HTTP 429 and server errors. Enable proxyConfiguration if a very large site starts rate limiting you.

Use it from Claude, ChatGPT or Cursor (Apify MCP server)

Add the Apify MCP server to Claude, ChatGPT, Cursor or any other MCP client with this URL, which loads only this actor as a tool:

https://mcp.apify.com?tools=pulsedata/workday-jobs-scraper

Then ask, for example, "export the open NVIDIA jobs in Germany from its Workday site", and the assistant fills the input, runs the actor and reads the jobs back as JSON. Billing is the same as a normal run.

Paying from an AI agent without an Apify account (x402 and Skyfire)

An agent can buy a prepaid, spend-capped Apify token at Apify AGI, paid in USDC through x402 or from a Skyfire wallet, and use it for both the API and the MCP server. This actor runs with limited permissions, so it works with these tokens. The smallest token is $1, tokens expire 14 days after purchase, and Apify marks agentic payments as experimental.