Workday Jobs Scraper
Pricing
from $1.00 / 1,000 results
Workday Jobs Scraper
Scrape jobs from any Workday-hosted careers site (*.myworkdayjobs.com). Titles, descriptions, locations, requisition IDs, posting dates etc. HTTP-only, no login.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(5)
Developer
Crawler Bros
Actor stats
5
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape jobs from any Workday-hosted careers site — those on *.myworkdayjobs.com (NVIDIA, Salesforce, Citi, Capital One, and thousands more). HTTP-only, no login, no cookies.
What it outputs (per job)
type=job_workdayid(requisition ID),requisitionId,jobPostingId,url,titlejobDescription(HTML),descriptionText(stripped)location,primaryLocation(full descriptor + country block),additionalLocations,country,countryCodepostedOn,postingDate(ISO),startDate,endDate,endDateText,applicationCloseDate,applicationTimeRemainingtimeType,remoteType(when the tenant publishes it — e.g.Office - Flexible,Onsite,Remote)compensationRangeMin,compensationRangeMax,compensationCurrency,compensationFrequency(parsed best-effort from the description)canApply,hiringOrganization,jobRequisitionUrlquestionnaireId,secondaryQuestionnaireIdsimilarJobs(list of{title, url})logoImage(absolute URL, when the tenant exposes one)videoInfo(when present)tenant,site,externalPathscrapedAt
If the given URL has zero matching jobs (or Workday's global maintenance page is up for that tenant), a single job_workday_blocked sentinel record is emitted so runs exit 0.
Input
| Field | Type | Description |
|---|---|---|
startUrls | string[] | Workday tenant career URLs (e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite) or direct job URLs (contain /job/...). |
searchText | string | Optional keyword filter (engineer, marketing, …). |
locations | string[] | Optional list of Workday location UUIDs (facet values returned by the /jobs API under facets[].values[].id). |
postedAt | string | Optional cutoff. Either ISO date (2026-04-01) or a relative string (7 days, 30 days). |
startAt | string | Optional start-date cutoff, same format as postedAt. |
scrapeDetails | boolean | Fetch the detail endpoint for full HTML descriptions + country + canApply. Default true. |
maxItems | integer | Max jobs per run. Default 3, max 10000. |
proxyConfiguration | object | Apify proxy. Datacenter is enough; Workday's public API is unauthenticated. |
How it works
- Parse
tenant,region,sitefrom each Workday URL. - POST the public API
https://<tenant>.<region>.myworkdayjobs.com/wday/cxs/<tenant>/<site>/jobswith{ limit, offset, searchText, appliedFacets }— paginated untilmaxItemsortotalis exhausted. - If
scrapeDetails = true, GET each job's detail endpoint for the fulljobPostingInfo(description HTML, country, canApply, startDate, timeType). - Apply
postedAt/startAtcutoffs in-process.
FAQ
Does this work for every Workday tenant? Yes — every *.myworkdayjobs.com site exposes the same public /wday/cxs/ JSON API without auth.
What about bot blocking? Workday's public careers API does not challenge datacenter IPs. A small retry loop handles the occasional 429/503.
What's a location UUID? When you open a Workday careers site and expand the Locations filter, each entry has a stable UUID. The first API response's facets array returns them.
Why are some runs emitting only the sentinel? Individual tenants occasionally redirect to community.workday.com/maintenance-page during Workday's rolling deploys. The sentinel lets the caller retry later without a hard failure.