Workday Jobs Scraper & API — No Site ID Needed avatar

Workday Jobs Scraper & API — No Site ID Needed

Pricing

from $1.30 / 1,000 jobs

Go to Apify Store
Workday Jobs Scraper & API — No Site ID Needed

Workday Jobs Scraper & API — No Site ID Needed

[💵 $2.00 / 1K] Scrape every open role from any Workday career site via its official public API. No site ID needed — paste the company website and the board is found for you. Full descriptions, requisition IDs, locations. Monitoring mode returns only new postings. For n8n, Make, Zapier & MCP.

Pricing

from $1.30 / 1,000 jobs

Rating

0.0

(0)

Developer

Dataloft Studio

Dataloft Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Workday jobs scraper and API: every open role from any Workday career site through Workday's own public JSON endpoint. You do not need the site ID — paste the company website and the scraper finds the board. Works with n8n, Make, Zapier, the Apify API and as an MCP tool for AI agents.

What is the Workday Jobs Scraper?

Workday runs the careers page for a large share of the Fortune 500, and its job data is served by a public JSON API. The awkward part is the URL: every tenant has a site ID like NVIDIAExternalCareerSite or External_Career_Site that is nowhere on the company's homepage.

This actor removes that problem. Give it nvidia.com and it works out the tenant, tries the data centre hosts, probes the known site-ID naming patterns, verifies the board serves jobs, then pulls everything. No login, no cookies, no browser automation, no personal data.

What data do you get from a Workday career site?

Output fields

FieldNotes
title, company, workdayTenant, workdaySite
idthe real Workday requisition ID, e.g. JR2019813
location, locations[], country, isRemotefull location list, not just the summary line
employmentTypeWorkday's time type
descriptionHtml, descriptionTextcomplete posting, both formats
applyUrl, jobUrl, companyCareerUrl
postedAt, scrapedAtISO 8601

Example output JSON

{
"id": "JR2019813",
"title": "ASIC Verification Engineer - GPU",
"company": "nvidia",
"workdayTenant": "nvidia",
"workdaySite": "NVIDIAExternalCareerSite",
"location": "US, CA, Santa Clara",
"employmentType": "Full time",
"isRemote": false,
"descriptionText": "NVIDIA is seeking elite ASIC Verification Engineers…",
"applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/…",
"postedAt": "2026-08-24T00:00:00.000Z"
}

How to find a Workday site ID (or skip it entirely)

Any of these work in Workday career sites:

https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite ← full URL
https://nvidia.wd5.myworkdayjobs.com ← site ID discovered for you
nvidia.com ← company website

Site IDs are not guessable by pattern alone — they range from External to CISCO_Careers to NVIDIAExternalCareerSite. Discovery tries generic names and tenant-branded variants across every Workday data centre. It resolves most well-known companies; when it cannot, the run tells you which input failed rather than skipping it silently. The resolved workdayTenant and workdaySite are in every output row, so one run also answers "what is this company's site ID?".

Step-by-step

  1. Add one or more career sites, URLs or plain domains.
  2. Optionally set Search term — it is passed to Workday's own search, so filtering happens on their side and the run is far faster than pulling everything.
  3. Add local filters for title, location, keyword, posted-after or remote-only.
  4. Run, then export as JSON, CSV or Excel.

API target requirement

API callers must supply careerSites (or a supported alias). The Console prefilled form is an example, not an implicit target list for an empty API request. A raw POST with no target is rejected with a clear input error and no job-result event; the small Actor-start fee may still apply. In the 2026-09-05 cloud check, the runtime did not substitute the saved exampleRunInput for a missing request body. Copy the complete JSON example when integrating.

Example input JSON

{
"careerSites": [
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"salesforce.com",
"cisco.com"
],
"searchText": "software engineer",
"titleIncludes": ["senior"],
"locationIncludes": ["remote", "california"],
"maxTotalJobs": 500
}

Input aliases from other Workday scrapers

companies, companyUrls and startUrls are accepted as aliases of Workday career sites, so input copied from another Workday actor runs here unchanged.

Monitoring mode: only new Workday postings since your last run

The first successful run delivers a baseline of the matching postings within your scan limits. Later runs with Only new jobs since last run skip previously delivered identities. This is an unseen-record feed, not proof that a job was first published yesterday, changed, or closed.

Use a distinct Seen-jobs store name per watchlist and run only one task at a time against that store. Named key-value storage has no atomic cross-run lock; do not overlap schedules. Scan/output caps can limit coverage. If history cannot be read or persisted, or a previous delivery is unresolved, monitoring fails visibly instead of silently treating everything as new. Inspect RUN_SUMMARY and the saved pending-delivery record before retrying; do not delete history to bypass a reconciliation error.

How fast is it?

Workday's API returns 20 rows per request and will not return more, however you ask. Rather than walking those pages one at a time, this actor reads the first page to learn the real total and then fetches the rest in parallel — about parallel paging; the improvement depends on the board and rate limits.

Full descriptions cost one extra request per posting. Turn Include full job descriptions off when you only need an inventory of titles and links.

How much does it cost to scrape Workday?

$2.00 per 1,000 jobs. You are charged per job saved to your dataset, so postings removed by your filters and previously-seen postings in monitoring mode cost nothing. No matching result incurs a job event, but the configured Actor-start fee is $0.00005 per GB of memory, including on an empty run (one event at the 1 GB default).

Cost examples

Illustrative result-event charges at the base tier; not measured demand or recurring revenue. Add the small Actor-start fee described above. Actual available matches vary.

What you runRows chargedCost
Full inventory of one large tenant (titles and links)1,500$3.00
"software engineer" search across 10 tenants, ~30 matches each300$0.60
Daily monitoring of 50 tenants, ~1% churn~40 per day~$0.08 per day, ~$2.40 per month
Ten Fortune 500 companies from plain domains, everything6,000$12.00

Integrations: n8n, Make, Zapier, MCP and the API

Use with AI agents (MCP server)

$npx -y @apify/actors-mcp-server --actors dataloft/workday-jobs-scraper

Or enable the actor at https://mcp.apify.com with your Apify token. An agent can then answer "how many open roles does Cisco have in California right now?" from one tool call.

n8n, Make and Zapier

Use the Apify node (n8n), the Apify app (Make) or the Apify integration (Zapier): Run Actordataloft/workday-jobs-scraper → paste the input JSON → read dataset items. With monitoring mode on, "new Workday postings at my target accounts → CRM / Slack" is a three-node workflow.

JavaScript, Python and REST

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('dataloft/workday-jobs-scraper').call({
careerSites: ['nvidia.com', 'salesforce.com'], searchText: 'engineer', maxTotalJobs: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(token=os.environ["APIFY_TOKEN"])
run = client.actor("dataloft/workday-jobs-scraper").call(run_input={"careerSites": ["nvidia.com"], "maxTotalJobs": 200})
items = client.dataset(run["defaultDatasetId"]).list_items().items

REST: POST https://api.apify.com/v2/acts/dataloft~workday-jobs-scraper/run-sync-get-dataset-items with an Authorization: Bearer <APIFY_TOKEN> header

What this Actor does and does not do

DoesDoes not
Pull every open role from a Workday tenant via its public JSON APIScrape sites that are not on Workday (use the ATS Jobs Scraper for those)
Discover the site ID from a plain company domainLog in, solve CAPTCHAs, or bypass anti-bot systems
Hold the true board total that Workday reports only onceCollect candidate or recruiter data
Return only new requisitions in monitoring modeApply to jobs on your behalf

Limits and known caveats

  • Workday reports the total only once. The first page carries the real count; every page after it reports 0. A scraper that trusts that field on later pages stops early and quietly returns a fraction of the board. This one takes the total from the first response and holds it.
  • Fully custom site IDs can defeat discovery; paste the careers URL from your browser and it can avoid the discovery step; source access and availability can still fail.
  • Descriptions cost one extra request per posting; large boards with descriptions on take proportionally longer.
  • Posted dates are relative on Workday ("Posted 3 Days Ago") and are converted to real timestamps; treat them as day-accurate, not minute-accurate.

Example tasks

Ready-made configurations — bounded NVIDIA job samples, company-domain watchlists, and unseen Workday postings since the previous run — are on the Example tasks tab: https://apify.com/dataloft/workday-jobs-scraper/examples

This actor calls the same public JSON endpoint your browser calls when you open a company's Workday careers page. It collects job postings — company information, not personal data. No candidate data, no logins, no cookies. How you use the output remains your responsibility, including under the relevant terms if you intend to redistribute it.

Frequently asked questions

Why did discovery fail for my company? Either they are not on Workday, or their site ID is fully custom. Open the careers page in a browser, copy the URL, and paste it in — that avoids the discovery step, subject to source availability.

Can I search inside descriptions? Yes. Search term goes to Workday's engine; Keyword filters locally against the description text after fetching.

Do I need a proxy? Not usually. The option exists for large scheduled runs from a single IP.

Can I scrape several companies at once? Yes — add as many career sites as you like. Each is resolved independently, and one failure does not stop the others.

How do I get only new postings? Turn on Only new jobs since last run. You can also set Only roles posted after to a date; the two combine.

Can I use it from n8n or as an MCP tool? Yes — see Integrations above.

Other job scrapers by Dataloft Studio

Changelog

  • 0.3 — 2026-09-05: monitoring fails visibly on history/delivery errors; budget-aware result charging and delivery reconciliation; published examples corrected and bounded.

  • 0.2 — 2026-09-02: monitoring mode (only new requisitions since last run); input aliases companies / companyUrls / startUrls; memory capped at 1 GB; changelog added.

  • 0.1.2 — 2026-08-25: output schema added; first-run prefill capped for the daily automated test.

  • 0.1 — 2026-08-25: initial release, site-ID discovery, parallel paging.

Support and feedback

Issues and feature requests go in the Issues tab. Reports that include the input JSON get fixed fastest.