💼 Workday Jobs Scraper avatar

💼 Workday Jobs Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
💼 Workday Jobs Scraper

💼 Workday Jobs Scraper

Workday job scraper for any myworkdayjobs or myworkdaysite careers portal. Get titles, salaries, descriptions, normalised locations, skills, seniority and company data — 20+ filters, streamed live to your dataset.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Data Minds

Data Minds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape any Workday careers portal into a clean, enriched job dataset — titles, salaries, locations, skills and full descriptions.

Platform Source Fields Views Pricing


⚡ TL;DR

Paste a careers URL → press Start → get structured jobs. Works on every public *.myworkdayjobs.com and *.myworkdaysite.com board. Handles pagination, opens each posting for the full description, normalises locations to City, Region, Country with coordinates and timezone, extracts salary ranges, skills, seniority, benefits and 40 job categories — and streams every row into your dataset while the run is still going.

📧 Custom fields, private builds, bespoke job-data pipelines → hello.dataminds@gmail.com


🧭 Pick your path

I want to…Jump to
🚀 Get my first 10 jobs in a minute60-second start
📋 Copy a ready-made configRecipe book
🔍 See exactly what a row looks likeOne job, one row
🧾 Look up a field or an inputField dictionary · Input reference
🛡️ Understand blocking & proxiesHow it survives protected boards
💸 Keep the bill smallCost control
❓ Ask a questionAnswers · Fix-it table

🎯 The problem this Actor solves

Thousands of the world's biggest employers — food distribution giants, chip makers, banks, hospital networks, retailers — publish every opening on Workday, the applicant tracking system behind URLs like company.wd5.myworkdayjobs.com/careers.

Those boards are JavaScript-driven, paginated and inconsistent between tenants. Copying them by hand is unthinkable; a naive scraper gets half a page of titles and a location string like Sysco Iowa - Ankeny - Distribution/Main Office that no database can use.

Workday Jobs Scraper closes that gap.

Raw careers boardWhat you get back
Sysco Iowa - Ankeny - Distribution/Main OfficeAnkeny · Polk County · Iowa · United States · 41.72971, -93.60577 · America/Chicago
"$27.42" buried in paragraph 9ai_salary_value: 27.42 · ai_salary_currency: USD · ai_salary_unit_text: HOUR
6,000 words of HTMLClean description_text + responsibilities + requirements summaries
"Full time"FULL_TIME · On-site · seniority 0-2 · 40-category taxonomy · skills list · benefits list
Page 1 of 40Every page, deduplicated, streamed live to your dataset

🚀 60-second start

  1. Open the Actor in Apify Console and hit Try for free.
  2. Paste a careers URL into 🔗 Careers portal URLs — for example https://sysco.wd5.myworkdayjobs.com/syscocareers
  3. Set 📬 Jobs to collect to 10.
  4. Press ▶ Start and watch each job land in the log the second it is ready.
  5. Open the Output tab and flip between the seven views, or export JSON / CSV / Excel / XML.

🎬 Nothing else is required. No proxy setup, no API key, no cookies, no browser profile. Every advanced option ships with a sensible default.

Via API:

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://sysco.wd5.myworkdayjobs.com/syscocareers" }],
"results_wanted": 10
}'

Via Python client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_ACTOR_ID").call(run_input={
"startUrls": [{"url": "https://sysco.wd5.myworkdayjobs.com/syscocareers"}],
"results_wanted": 100,
"aiWorkArrangementFilter": ["Remote OK", "Remote Solely"],
"hasSalary": True,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "—", job.get("locations_derived"), job.get("ai_salary_max_value"))

📋 Recipe book — copy-paste configs

Every recipe below is a complete input. Paste it into the JSON tab in Console, or send it as the API body.


🔗 Which URLs work?

Paste thisResult
https://company.wd5.myworkdayjobs.com/careers🟢 Whole board
https://company.wd1.myworkdayjobs.com/en-US/External🟢 Locale boards
https://wd3.myworkdaysite.com/en-US/recruiting/company/External🟢 Hosted boards
https://company.wd5.myworkdayjobs.com/careers?q=engineer🟢 Your keyword search is reproduced
https://company.wd5.myworkdayjobs.com/careers/job/Site/Title_R12345🟢 That one job
A board that requires a login🔴 Not collectable — public pages only

💡 Pro move: open the careers site in your browser, apply any filters you like, then copy the URL from the address bar. Whatever you searched, the Actor repeats.


🧾 One job, one row

{
"id": 4108616529,
"date_posted": "2026-07-29T00:00:00",
"date_created": "2026-07-29T13:43:34.894714",
"title": "CDL A Local Delivery Truck Driver",
"organization": "US0039 Sysco Iowa, Inc.",
"locations_alt": ["Sysco Iowa - Ankeny - Distribution/Main Office"],
"salary": "$27.42",
"employment_type": ["Full time"],
"url": "https://wd5.myworkdaysite.com/recruiting/sysco/syscocareers/job/.../CDL-A-Local-Delivery-Truck-Driver_R253735",
"source": "workday",
"source_domain": "sysco.wd5.myworkdayjobs.com",
"organization_logo": "https://sysco.wd5.myworkdayjobs.com/syscocareers/assets/logo",
"cities_derived": ["Ankeny"],
"counties_derived": ["Polk County"],
"regions_derived": ["Iowa"],
"countries_derived": ["United States"],
"locations_derived": ["Ankeny, Iowa, United States"],
"timezones_derived": ["America/Chicago"],
"lats_derived": [41.72971],
"lngs_derived": [-93.60577],
"domain_derived": "sysco.com",
"ai_salary_currency": "USD",
"ai_salary_value": 27.42,
"ai_salary_unit_text": "HOUR",
"ai_benefits": ["Paid time off", "Flexible schedule", "Tuition reimbursement", "Employee discounts"],
"ai_experience_level": "0-2",
"ai_work_arrangement": "On-site",
"ai_key_skills": ["Leadership", "Training", "Sales", "Driving"],
"ai_employment_type": ["FULL_TIME"],
"ai_working_hours": 40,
"ai_taxonomies_a": ["Transportation", "Supply Chain & Logistics", "Sales"],
"ai_taxonomies_primary": "Transportation",
"ai_core_responsibilities": "Sysco has immediate job openings for dependable local CDL A Delivery Truck Drivers…",
"ai_requirements_summary": "21+ years of age. Valid Class A Commercial Driver License (CDL)…",
"org_linkedin_name": "Sysco",
"org_linkedin_industry": "wholesale",
"org_linkedin_size": "10,001+ employees",
"org_linkedin_headcount": 67001,
"org_linkedin_headquarters": "Houston",
"org_linkedin_founded_date": "1969",
"date_modified": null,
"modified_fields": null,
"description_text": "Company:\nUS0039 Sysco Iowa, Inc.\n\nZip Code:\n50021\n\nJob Summary:\n…",
"compact": { "title": "…", "company": "…", "requisition_id": "R253735", "apply_url": "…", "job_url": "…" },
"raw": { "id": "R253735", "title": "…", "…": "untouched source payload" }
}

🗂️ Seven views, seven tidy sections

The Output tab ships with prebuilt table views so you never scroll through 75 columns looking for one:

ViewColumns you see
Job OverviewTitle · company · location · type · arrangement · posted · link
🌍 Locations & GeoRaw label · city · region · country · timezone · lat · lng
💰 Salary & BenefitsCurrency · min · max · flat pay · pay period · benefits
🧠 AI InsightsSeniority · skills · categories · hours · sponsorship · language · education
🏢 Company & EmployerCompany · URL · domain · logo · industry · size · headcount · website
📄 Description & SummaryResponsibilities · requirements · full description
🧭 Source & Change trackingIDs · portal · collected / posted / closing dates · changed fields

🎛️ Four row shapes

outputFormatRow containsUse it when
all (default)Full record + compact + rawYou want everything, once
full73 enriched fieldsAnalytics, dashboards, warehouses
compact12 essential columnsSheets, Slack alerts, quick exports
rawUntouched source payloadYour own parsing pipeline

📊 A run summary — totals, per-portal counts and the live category breakdown — is saved in the key-value store as run-summary.


📚 Field dictionary


🎚️ Input reference


🛡️ How it survives protected boards

Careers portals rate-limit, throttle and occasionally slam the door. The run adapts on its own:

🌐 direct connection ──refused──▶ 🛡️ datacenter route ──refused──▶ 🏠 residential route ──▶ 🧭 browser rescue
▲ fastest, free ▲ sticky from here on ▲ 3 focused retries ▲ last resort
  • 🌐 Direct first — most portals never push back, so you pay nothing for proxies.
  • 🚦 Sticky escalation — the moment a portal refuses, the run switches route and stays there for every remaining request. No flapping.
  • 📣 Fully logged — every switch is printed plainly: "Network fallback — direct connection was refused (HTTP 429) → switching to the datacenter route for every remaining request." A route-change summary closes the run.
  • ♻️ Smart retries — transient errors and 429s back off exponentially and honour Retry-After.
  • 🧭 Browser rescue — whatever is still refused gets one attempt inside a real browser session.
  • 🐢 Your politeness dialsrequestDelay, requestTimeout, concurrency.
  • 💾 Nothing is ever lost — rows are written the instant they are ready, so even an aborted or migrated run keeps everything collected so far.

You do not need to configure a proxy. Turn one on only when you want a specific country route.


💸 Cost control

Billing is pay per result — one job_result event per job row saved. Filtered-out postings do not add result charges.

LeverEffect
results_wanted🎯 The hard ceiling on rows saved — the single biggest lever
details: false⚡ Listing-only sweep: dramatically faster and cheaper
pagination / max_pages📄 Bound how much of the board is walked
titleSearch · postedAt · locationSearch🚫 Drop postings before their descriptions are ever opened
geocode: false🌍 Skip normalisation when raw labels are enough
concurrency⚙️ Higher finishes sooner (less compute) — be gentle with small portals

🔌 Integrations & automation

  • Schedules — hourly or daily runs; date_modified + modified_fields reveal what changed.
  • 🔔 Webhooks — ping your service the moment a run finishes.
  • 🔄 Make · Zapier · n8n — push new jobs into Airtable, Sheets, Slack, HubSpot or your own ATS.
  • 🗄️ API access — dataset items as JSON, JSONL, CSV, XLSX, XML or RSS.
  • 🤖 AI pipelinesdescription_text + ai_key_skills + ai_taxonomies_a drop straight into embeddings, RAG stores, job-matching models and skill-extraction training sets.
$curl "https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items?token=YOUR_APIFY_TOKEN&format=csv"

👥 Built for

WhoWhy
🧲 Recruiters & staffing agenciesTrack competitor hiring, source live openings, build candidate-facing feeds
🌐 Job boards & aggregatorsIngest thousands of employer postings with one consistent schema
📈 Talent intelligence & HR analyticsHiring velocity, location strategy, salary benchmarks, headcount plans
💼 Sales & GTM teamsHiring signals are buying signals — 30 new warehouse roles means a new facility
🔬 Labour-market researchersLongitudinal datasets of real, employer-published demand
🤖 AI & data teamsClean job text for matching, embeddings and skill graphs
🧑‍💻 DevelopersA dependable job data API with zero ATS paperwork

💬 Answers


🛠️ Fix-it table

SymptomFix
🚫 No jobs savedLoosen filters — strict titleSearch + locationSearch + dates can exclude everything. The run summary's Top filters line names the filter that dropped the most.
Only old jobs / nothing recentYou probably set startAt (posted on or before) instead of postedAt (posted on or after).
📉 Fewer jobs than requestedThe board may hold fewer matches, or pagination / max_pages ended the sweep. Set pagination: 0 and raise max_pages.
🛑 Run stops at 200limit is the per-portal cap and bounds the total too. Raise it when results_wanted exceeds 200.
🏢 Company fields emptySet includeCompanyDetails: true and choose a companyProvider (wikidata is free).
📍 locations_derived is nullThe label matched no real place — common for Remote or internal codes. Raw labels remain in locations_alt.
🔒 Portal did not answerThe URL may be private, retired or region-locked. Open it in a browser first; login-walled boards cannot be collected.
🐌 Slow runsdetails: false for a listing sweep, raise concurrency, lower requestDelay.

This Actor collects publicly available job postings — the same pages any visitor can open without logging in. Scraping public data is generally lawful in the EU and the US, but how you use it is on you:

  • 🚧 Do not collect data behind authentication or paywalls.
  • 🤝 Respect the target site's terms and reasonable request rates.
  • 🔐 Handle personal data (a recruiter's name in a posting, for instance) in line with GDPR, CCPA and local law.
  • 🚫 Never use the data for spam or unlawful discrimination.

Background reading: Apify's guide on the legality of web scraping. Not legal advice.


💌 Support & custom builds

🐛 Bug or missing fieldOpen the Actor's Issues tab
📧 Custom scrapers, private integrations, bulk job-data pipelineshello.dataminds@gmail.com
Enjoying it?Leave a review — it genuinely helps