💼 Workday Jobs Scraper
Pricing
from $5.00 / 1,000 results
💼 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape any Workday careers portal into a clean, enriched job dataset — titles, salaries, locations, skills and full descriptions.
⚡ TL;DR
Paste a careers URL → press Start → get structured jobs. Works on every public
*.myworkdayjobs.comand*.myworkdaysite.comboard. Handles pagination, opens each posting for the full description, normalises locations toCity, Region, Countrywith 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 minute | 60-second start |
| 📋 Copy a ready-made config | Recipe book |
| 🔍 See exactly what a row looks like | One job, one row |
| 🧾 Look up a field or an input | Field dictionary · Input reference |
| 🛡️ Understand blocking & proxies | How it survives protected boards |
| 💸 Keep the bill small | Cost control |
| ❓ Ask a question | Answers · 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 board | What you get back |
|---|---|
Sysco Iowa - Ankeny - Distribution/Main Office | Ankeny · Polk County · Iowa · United States · 41.72971, -93.60577 · America/Chicago |
"$27.42" buried in paragraph 9 | ai_salary_value: 27.42 · ai_salary_currency: USD · ai_salary_unit_text: HOUR |
| 6,000 words of HTML | Clean description_text + responsibilities + requirements summaries |
| "Full time" | FULL_TIME · On-site · seniority 0-2 · 40-category taxonomy · skills list · benefits list |
| Page 1 of 40 | Every page, deduplicated, streamed live to your dataset |
🚀 60-second start
- Open the Actor in Apify Console and hit Try for free.
- Paste a careers URL into 🔗 Careers portal URLs — for example
https://sysco.wd5.myworkdayjobs.com/syscocareers - Set 📬 Jobs to collect to
10. - Press ▶ Start and watch each job land in the log the second it is ready.
- 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 ApifyClientclient = 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 this | Result |
|---|---|
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:
| View | Columns you see |
|---|---|
| ✨ Job Overview | Title · company · location · type · arrangement · posted · link |
| 🌍 Locations & Geo | Raw label · city · region · country · timezone · lat · lng |
| 💰 Salary & Benefits | Currency · min · max · flat pay · pay period · benefits |
| 🧠 AI Insights | Seniority · skills · categories · hours · sponsorship · language · education |
| 🏢 Company & Employer | Company · URL · domain · logo · industry · size · headcount · website |
| 📄 Description & Summary | Responsibilities · requirements · full description |
| 🧭 Source & Change tracking | IDs · portal · collected / posted / closing dates · changed fields |
🎛️ Four row shapes
outputFormat | Row contains | Use it when |
|---|---|---|
all (default) | Full record + compact + raw | You want everything, once |
full | 73 enriched fields | Analytics, dashboards, warehouses |
compact | 12 essential columns | Sheets, Slack alerts, quick exports |
raw | Untouched source payload | Your 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 honourRetry-After. - 🧭 Browser rescue — whatever is still refused gets one attempt inside a real browser session.
- 🐢 Your politeness dials —
requestDelay,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.
| Lever | Effect |
|---|---|
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_fieldsreveal 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 pipelines —
description_text+ai_key_skills+ai_taxonomies_adrop 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
| Who | Why |
|---|---|
| 🧲 Recruiters & staffing agencies | Track competitor hiring, source live openings, build candidate-facing feeds |
| 🌐 Job boards & aggregators | Ingest thousands of employer postings with one consistent schema |
| 📈 Talent intelligence & HR analytics | Hiring velocity, location strategy, salary benchmarks, headcount plans |
| 💼 Sales & GTM teams | Hiring signals are buying signals — 30 new warehouse roles means a new facility |
| 🔬 Labour-market researchers | Longitudinal datasets of real, employer-published demand |
| 🤖 AI & data teams | Clean job text for matching, embeddings and skill graphs |
| 🧑💻 Developers | A dependable job data API with zero ATS paperwork |
💬 Answers
🛠️ Fix-it table
| Symptom | Fix |
|---|---|
| 🚫 No jobs saved | Loosen 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 recent | You probably set startAt (posted on or before) instead of postedAt (posted on or after). |
| 📉 Fewer jobs than requested | The board may hold fewer matches, or pagination / max_pages ended the sweep. Set pagination: 0 and raise max_pages. |
| 🛑 Run stops at 200 | limit is the per-portal cap and bounds the total too. Raise it when results_wanted exceeds 200. |
| 🏢 Company fields empty | Set includeCompanyDetails: true and choose a companyProvider (wikidata is free). |
📍 locations_derived is null | The label matched no real place — common for Remote or internal codes. Raw labels remain in locations_alt. |
| 🔒 Portal did not answer | The URL may be private, retired or region-locked. Open it in a browser first; login-walled boards cannot be collected. |
| 🐌 Slow runs | details: false for a listing sweep, raise concurrency, lower requestDelay. |
⚖️ Is scraping job listings legal?
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 field | Open the Actor's Issues tab |
| 📧 Custom scrapers, private integrations, bulk job-data pipelines | hello.dataminds@gmail.com |
| ⭐ Enjoying it? | Leave a review — it genuinely helps |