๐Ÿ’ผ 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

3 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 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.

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 pipelines โ€” description_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