Workday Jobs Scraper avatar

Workday Jobs Scraper

Under maintenance

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Workday Jobs Scraper

Workday Jobs Scraper

Under maintenance

Scrape job postings from any Workday-powered career site (*.myworkdayjobs.com) via Workday's own internal JSON API — no login, no browser required. Supply career-site URLs or explicit tenant/dc/site objects; get titles, locations, req IDs, and optional full descriptions.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share


🎯 What this scrapes

A huge share of enterprise career sites run on Workday, and every one of them is backed by the same internal JSON endpoint (/wday/cxs/{tenant}/{site}/jobs) that the page's own search box calls. This Actor talks to that endpoint directly: point it at one or more Workday career sites — as a URL like https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, or as an explicit {tenant, dc, site} object — and it paginates the full board, optionally fetches each posting's detail, and normalizes everything into one row schema. One scraper, every Workday tenant.

🔥 Features

  • 🛡️ Browser fingerprint impersonationcurl-cffi presents a real Chrome TLS/H2 handshake, so the endpoint sees a browser, not a bare Python client. Workday sits behind Cloudflare; a convincing fingerprint is what keeps requests flowing.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx, up to 5 attempts, Retry-After honoured — a batch that hits a blip recovers instead of crashing mid-run.
  • 🌐 Proxy session rotation via Apify Proxy — a fresh exit IP when you're pulling many tenants or deep boards.
  • 🏢 One schema across every tenant — mix career-site URLs and {tenant, dc, site} objects in a single run (up to 1 000); rows come back identically shaped, tagged with company, dc, and site.
  • 📝 Optional full descriptions — flip includeDescription on for the complete posting body plus start date, time type, and req ID; leave it off for a fast titles-and-locations pull.
  • 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable IDs. Export JSON / CSV / Excel straight from the Apify Console.

💡 Use cases

  • Recruiting & talent intelligence — track what a target employer is hiring for, where, and how fast their reqs turn over.
  • Job-board aggregation — add Workday coverage alongside Greenhouse / Lever / Ashby, pulling fresh postings from dozens of employers in one run.
  • Labor-market research — sample hiring demand across an industry by role, location, or time type.
  • Competitive hiring intel — watch a competitor's open reqs to infer team growth and roadmap direction.
  • ATS data pipelines — wire structured job rows into your own CRM, dashboard, or n8n / Make workflow on a schedule.

⚙️ How to use it

  1. Click Try for free at the top of the Store listing.
  2. Add one or more Career sites — a bare URL like nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, or a {tenant, dc, site} object.
  3. Optionally set Search text, a Location filter, Max results per site (0 = all), and toggle Include description.
  4. Click Start. Rows stream into the dataset as each site paginates.
  5. Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
careerSitesarray1–1000 Workday career-site URLs or {tenant, dc, site} objects. Mix freely.
searchTextstringnonullFree-text keyword passed verbatim to Workday's own search.
locationFilterstringnonullHuman-readable location, matched against each tenant's live facet tree.
maxResultsPerSiteintegerno0Cap rows emitted per site; 0 = all.
includeDescriptionbooleannofalseFetch each posting's full description + start date + time type + req ID (one extra call per job).
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy configuration.

Example input

{
"careerSites": [
"nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
],
"maxResultsPerSite": 25,
"includeDescription": true,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

One dataset item per job posting. Fields marked (detail) are populated only when includeDescription is on.

FieldTypeNotes
job_idstringWorkday externalPath; unique within one company / dc / site.
titlestringJob title.
locationstring | nullPrimary listed location.
additional_locationsarrayExtra locations (detail).
posted_on_textstring | nullWorkday's relative "Posted On" label, e.g. Posted Today.
start_datestring | nullISO YYYY-MM-DD (detail).
time_typestring | nulle.g. Full time (detail).
job_req_idstring | nullEmployer requisition ID (detail).
urlstringCanonical public posting URL.
companystringTenant, lowercased.
dcstringWorkday data-center shard, e.g. wd5.
sitestringCareer-site path segment.
description_htmlstring | nullFull posting body (detail).
scraped_atstringUTC ISO-8601 fetch timestamp.

Example output

{
"job_id": "/job/US-CA-Santa-Clara/Senior-Factory-Support-Firmware-Engineer_JR1998421",
"title": "Senior Factory Support Firmware Engineer",
"location": "US, CA, Santa Clara",
"additional_locations": [],
"posted_on_text": "Posted 5 Days Ago",
"start_date": null,
"time_type": "Full time",
"job_req_id": "JR1998421",
"url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Factory-Support-Firmware-Engineer_JR1998421",
"company": "nvidia",
"dc": "wd5",
"site": "NVIDIAExternalCareerSite",
"description_html": "NVIDIA is seeking a Senior Factory Support Firmware Engineer...",
"scraped_at": "2026-07-21T11:40:00Z"
}

💰 Pricing

Pay-Per-Event — you're charged only when these fire:

EventUSDWhat it covers
actor-start$0.005One-off warm-up per run
result$0.0015Per job posting written to the dataset

Example: 1 000 postings ≈ $1.51. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Public career sites only — external Workday career sites, not SSO/authenticated internal portals.
  • No salary/compensation field — Workday doesn't expose structured comp data, so we don't invent it.
  • Descriptions cost an extra fetchincludeDescription adds one detail request per posting (it changes speed, not the per-result price). Leave it off for the fastest pull.
  • Point-in-time snapshot — returns the board as it stands now; schedule recurring runs to track changes over time.

❓ FAQ

Do I need a Workday account or API key? No — every field comes from the same public JSON endpoint the career-site search box already calls.

Does one run handle several companies? Yes. Put multiple career sites in careerSites (URLs and {tenant, dc, site} objects can be mixed) and every row comes back identically shaped, tagged with company / dc / site.

How do I find a company's tenant and data center? They're in the career-site URL: https://{tenant}.{dc}.myworkdayjobs.com/{site}. Paste that URL directly — no need to split it yourself.

Why doesn't maxResultsPerSite change the price? You're charged per row written, not per HTTP call — so turning on descriptions (extra calls) or capping results doesn't change the per-result rate.

Is this legal? We fetch public, unauthenticated job-posting data that employers publish for candidates to browse. No login, no private endpoints.

💬 Your feedback

Spotted a bug, hit a tenant that behaves differently, or need an extra field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and read every report.