Workday Jobs Scraper avatar

Workday Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Workday Jobs Scraper

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

Crawler Bros

Maintained by Community

Actor stats

5

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

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_workday
  • id (requisition ID), requisitionId, jobPostingId, url, title
  • jobDescription (HTML), descriptionText (stripped)
  • location, primaryLocation (full descriptor + country block), additionalLocations, country, countryCode
  • postedOn, postingDate (ISO), startDate, endDate, endDateText, applicationCloseDate, applicationTimeRemaining
  • timeType, remoteType (when the tenant publishes it — e.g. Office - Flexible, Onsite, Remote)
  • compensationRangeMin, compensationRangeMax, compensationCurrency, compensationFrequency (parsed best-effort from the description)
  • canApply, hiringOrganization, jobRequisitionUrl
  • questionnaireId, secondaryQuestionnaireId
  • similarJobs (list of {title, url})
  • logoImage (absolute URL, when the tenant exposes one)
  • videoInfo (when present)
  • tenant, site, externalPath
  • scrapedAt

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

FieldTypeDescription
startUrlsstring[]Workday tenant career URLs (e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite) or direct job URLs (contain /job/...).
searchTextstringOptional keyword filter (engineer, marketing, …).
locationsstring[]Optional list of Workday location UUIDs (facet values returned by the /jobs API under facets[].values[].id).
postedAtstringOptional cutoff. Either ISO date (2026-04-01) or a relative string (7 days, 30 days).
startAtstringOptional start-date cutoff, same format as postedAt.
scrapeDetailsbooleanFetch the detail endpoint for full HTML descriptions + country + canApply. Default true.
maxItemsintegerMax jobs per run. Default 3, max 10000.
proxyConfigurationobjectApify proxy. Datacenter is enough; Workday's public API is unauthenticated.

How it works

  1. Parse tenant, region, site from each Workday URL.
  2. POST the public API https://<tenant>.<region>.myworkdayjobs.com/wday/cxs/<tenant>/<site>/jobs with { limit, offset, searchText, appliedFacets } — paginated until maxItems or total is exhausted.
  3. If scrapeDetails = true, GET each job's detail endpoint for the full jobPostingInfo (description HTML, country, canApply, startDate, timeType).
  4. Apply postedAt / startAt cutoffs 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.