Workday Job Scraper & Hiring Monitor · Apify
Workday Job Scraper & Hiring Monitor avatar

Workday Job Scraper & Hiring Monitor

Pricing

from $0.55 / 1,000 job listings

Go to Apify Store
Workday Job Scraper & Hiring Monitor

Workday Job Scraper & Hiring Monitor

Monitor Workday career sites (myworkdayjobs.com / myworkdaysite.com) for new job openings. Extract structured listings, descriptions, locations, employment types and hiring signals for recruitment research, talent sourcing and employer monitoring.

Pricing

from $0.55 / 1,000 job listings

Rating

5.0

(2)

Developer

Vamsi Krishna

Vamsi Krishna

Maintained by Community

Actor stats

2

Bookmarked

34

Total users

4

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

What does Workday Job Scraper & Hiring Monitor do?

Workday Job Scraper & Hiring Monitor extracts public job listings from Workday career sites (myworkdayjobs.com / myworkdaysite.com) and helps you spot newly posted vacancies when you run it on a schedule.

Enter employer names (Adobe, Salesforce, Autodesk, Target, Mastercard) or paste a careers URL, filter by keyword/location/remote status, and export structured results to JSON, CSV, Excel, Google Sheets, Zapier, Make, Slack, or your app via the Apify API.

It does not send real-time push alerts. New vacancies are found by comparing each run to a previous baseline (isNew / Only new jobs) — typically after a daily or weekly Schedule. Public career pages only; no Greenhouse, Lever, or Microsoft (Microsoft careers are not Workday-hosted).


Short value proposition

Find new hiring opportunities across your target employers without manually checking their career pages.

Use this Actor as a practical Workday jobs API alternative for recruitment research, talent sourcing, and employer monitoring.


Who should use this Actor?

  • Recruitment agencies watching account-target or client employers
  • Talent sourcers who need structured Workday listings with apply URLs
  • Job boards / aggregators refreshing Workday-hosted openings
  • Market / competitive researchers tracking who is hiring and where
  • Sales / RevOps treating hiring spikes as buying signals

If your targets post on public Workday boards, this Actor is built for that workflow.


Recruitment agency use cases

Use caseHow to run it
Watchlist of target employersCompanies = Adobe, Salesforce, Autodesk; schedule daily
Role-focused sourcingKeyword / Keywords (e.g. Python, Backend) + Max items
Geography researchLocation(s) for city, region, country, or Remote
Remote-only pipelineRemote jobs only = on
Fresh openings onlyFlag new jobs + Only new jobs + Schedule
Full JD for outreachInclude job description = on (extra charge per saved job)

Key features

  • Companies via curated Workday board map, and/or Start URLs
  • Public Workday CXS jobs API, with HTML fallback when needed
  • Facet split to page past Workday’s ~2,000-result list ceiling
  • Filters: keyword(s), location(s), posted-within days, remote-only, employment types
  • Optional full descriptions / requirements / salary when published
  • isNew vs comparison baseline; Only new jobs to save fresh rows only
  • In-run dedupe by job ID / URL; derived signals (seniority hint, remote/hybrid flags)
  • Pay-per-event pricing: per saved job, optional description charge, small per-run start

How it works

  1. Resolves Companies through the board map and/or parses Start URLs (tenant + site).
  2. Lists jobs via Workday’s public CXS API; falls back to HTML when the API is unavailable.
  3. Streams saves while paging — dataset rows and status update during discovery (not only at the end). Prefer Max items, a single Keyword, or Location on large unfiltered boards.
  4. Applies filters, optional detail fetch, and normalization (aliases included).
  5. Optionally compares job IDs/URLs to a previous dataset or the cumulative named store workday-jobs-scraper-state.
  6. Charges and saves matching jobs; writes RUN_SUMMARY to the run key-value store.

Default runs leave compare off, so status will not show a meaningful “new” count until you enable Flag new jobs / Only new jobs and build a baseline.

How new vacancies work (not real-time):

  • Enable Flag new jobs vs previous run so each row gets isNew.
  • Optionally enable Only new jobs to save only those rows (this implies compare).
  • Create an Apify Schedule (daily/weekly). The first successful compare run builds a baseline; later runs mark jobs that were not in that baseline as new.
  • isNew means “not in the comparison baseline,” not a live webhook alert.

Supported Workday sources

SupportedNot supported
*.myworkdayjobs.com career and job URLsGreenhouse, Lever, Eightfold, or other ATS
*.myworkdaysite.com public boardsLogin / SSO / employee portals
Company names mapped in the board map (e.g. Adobe, Salesforce, Autodesk, Target)Microsoft careers (not Workday)

Example URL formats

Example
https://company.wd5.myworkdayjobs.com/en-US/External
https://company.wd1.myworkdayjobs.com/careers
https://company.wd1.myworkdaysite.com/en-US/External
https://adobe.wd5.myworkdayjobs.com/en-US/external_experienced

Single job URLs (path contains /job/) work too.

Example tasks

One-click presets on the Store (duplicate and run with your account):


Input configuration

See the Input tab for full schema defaults and validation. Companies and/or Start URLs are required (at least one).

FieldDescription
CompaniesNames/domains from the board map (e.g. Adobe, salesforce.com)
Start URLsPublic Workday careers or job URLs (optional if Companies is set)
Max itemsCap saved jobs (default 100; Store prefill 25). With Only new jobs: caps new rows. Higher caps improve monitoring accuracy.
Include job descriptionDetail fetch — extra charge per saved job
Flag new jobs vs previous runSets isNew vs previous dataset or cumulative named-store baseline
Only new jobsSave only isNew rows; still tracks all seen IDs. Implies Flag new jobs.
Previous dataset IDOptional compare source; if missing/unreadable → graceful fallback to named store (or first-run baseline). Run does not fail.
Keyword / KeywordsPrefer a single Keyword when possible. Multi-keyword mode leaves CXS search empty and filters while paging (full-board scan; more cap-sensitive).
Location / LocationsCity, region, country, or Remote
Posted within (days)Recent postings filter
Remote jobs only / Employment typesAdditional filters
Location facet IDsAdvanced UUID facets
Include derived signals / Deduplicate / Detail concurrency / ProxyAdvanced; proxy usually off

More ready-to-paste JSONs: docs/DEMO_SCENARIOS.md.


Input examples

Example A — Monitor target employers

{
"companies": ["Adobe", "Salesforce", "Autodesk"],
"maxItems": 100,
"includeDescription": false,
"compareWithPreviousRun": true,
"onlyNewJobs": true,
"deduplicate": true
}

Example B — Find Python / backend jobs

{
"companies": ["Adobe", "Salesforce"],
"keywords": ["Python Developer", "Backend Engineer", "Django Developer", "FastAPI Developer"],
"maxItems": 100,
"includeDescription": false,
"deduplicate": true
}

Tip: for cheaper, more accurate CXS search, prefer one Keyword (e.g. "Python") instead of a long Keywords list when you can.

Example C — Monitor new vacancies (schedule this)

{
"companies": ["Adobe"],
"maxItems": 500,
"includeDescription": false,
"compareWithPreviousRun": true,
"onlyNewJobs": true,
"deduplicate": true
}

First run establishes the baseline; later scheduled runs save only newly discovered vacancies. Raise Max items so the baseline covers the filtered board.

Example D — Extract complete job descriptions

{
"companies": ["Salesforce"],
"keyword": "software engineer",
"locations": ["United States", "Remote"],
"postedWithinDays": 30,
"maxItems": 50,
"includeDescription": true,
"detailConcurrency": 5
}

Descriptions add an extra charge for every saved job. Use listing-only runs for monitors; turn descriptions on when you need full text or salary.


Output schema

Download JSON / HTML / CSV / Excel from the Dataset tab. Overview / New jobs / Remote views are available in Console.

FieldTypeDescription
titlestringFull job title
company / companyNamestringBrand from board map or HTML when known
location, city, region, countrystringLocation text and parsed parts
jobUrl / applyUrlstringOfficial / apply links
jobId / requisitionIdstringRequisition or path-based ID when Workday provides one
postedDate / postedDateLabelstringWorkday posting label when present
employmentTypestringWhen published
remoteType / remoteStatus / workLocationTypestringRemote / Hybrid / On-site when known
department / jobCategorystringTeam / category when present
seniorityHint / senioritystringDerived from title (heuristic)
isNewbooleanNew vs comparison baseline when compare is on
description / requirements / salary / salaryTextstringOptional — needs Include job description
source / scrapeMethodstringcxs | html | direct
companyCareerUrl / sourceUrlstringCareers board URL used for discovery
scrapedAtstringISO timestamp

Aliases are additive copies of existing fields — nothing was renamed away.


Sample output

Illustrative example (field shapes match the dataset schema; values are not a live scrape):

{
"title": "Senior Software Engineer",
"company": "Adobe",
"companyName": "Adobe",
"location": "US, CA, Santa Clara",
"city": "Santa Clara",
"region": "CA",
"country": "US",
"employmentType": "Full-time",
"remoteType": "Hybrid",
"remoteStatus": "Hybrid",
"workLocationType": "Hybrid",
"seniorityHint": "Senior",
"seniority": "Senior",
"postedDate": "Posted 3 Days Ago",
"postedDateLabel": "Posted 3 Days Ago",
"jobUrl": "https://adobe.wd5.myworkdayjobs.com/en-US/external_experienced/job/San-Jose/Software-Engineer_JR-123456",
"jobId": "JR-123456",
"requisitionId": "JR-123456",
"isNew": true,
"source": "cxs",
"scrapeMethod": "cxs",
"companyCareerUrl": "https://adobe.wd5.myworkdayjobs.com/en-US/external_experienced",
"scrapedAt": "2026-01-15T12:00:00.000Z"
}

A RUN_SUMMARY object (counts, new jobs, runtime) is written to the run key-value store.


New vacancy monitoring guide

  1. Set Companies (and/or Start URLs) for your watchlist.
  2. Turn on Flag new jobs vs previous run.
  3. Turn on Only new jobs if you only want fresh rows in the dataset.
  4. Set Max items high enough for the filtered board (capped runs can miss IDs and hurt baseline accuracy).
  5. Leave Include job description off for cheap monitors.
  6. Run once to seed the baseline, then attach a Schedule.

Baseline storage

  • Without Previous dataset ID, IDs accumulate in named store workday-jobs-scraper-state (LAST_RUN_JOB_IDS) as a cumulative seen set (union across successful runs) — so a capped run does not wipe earlier IDs.
  • With Previous dataset ID, that dataset is preferred. If it is missing or unreadable, the Actor warns and falls back to the named-store IDs (or a first-run baseline). It does not abort the run.
  • Only new jobs always implies compare, even if Flag new jobs was left off in the form.
  • Jobs skipped by Only new jobs are still remembered for the next compare.

The New jobs dataset view shows the isNew column; it does not hide older rows by itself — use Only new jobs (or filter exports) for that.


Scheduling instructions

  1. Save an Actor Task with your watchlist + Flag new jobs + Only new jobs (see Example C).
  2. Open Schedules → create daily or weekly runs on that Task.
  3. Optional: connect a webhook / Zapier / Make / Slack notification when the run succeeds, then filter on isNew or an Only-new dataset.

This is scheduled comparison, not real-time vacancy alerts.


Pricing explanation

Pay-per-event pricing. Compute is included. Check the Actor Pricing tab for live rates — they can differ by Apify usage tier.

CostCharged when
Per saved jobEach job saved to your dataset
With descriptionsEach saved job when Include job description is on
Per runOnce per run (~$0.00005)

FREE-tier illustrative costs

Using $0.001 per saved job and +$0.001 with descriptions (FREE-tier style figures), excluding the per-run start:

Saved jobsWithout descriptionsWith descriptions
100$0.10$0.20
500$0.50$1.00
1,000$1.00$2.00

These are illustrative calculations, not a guaranteed bill. GOLD (and other) live Console rates may differ (often lower per saved job / description than FREE). Always confirm on the Pricing tab before budgeting.

Keep spend predictable: lower Max items for tests, Only new jobs on schedules, descriptions off until you need full text, and Max spend per run in Console.


Limitations and troubleshooting

Limitations

  • Public Workday career pages only (no SSO/login bypass).
  • HTML listing fallback is single-page (no HTML pagination). Prefer CXS-capable boards.
  • Company brand names are best when the employer is in the board map; otherwise tenant Title Case.
  • Large unfiltered boards still take time to page; results now appear mid-run. Use Max items / Keyword / Location to stay fast.
  • Multi-keyword mode scans more of the board client-side — prefer a single Keyword when accuracy/cost matter under a Max items cap.
  • No fresher / graduate Workday field — match Keywords such as junior, graduate, university, new grad. Other entry-level titles are missed.
  • seniority / seniorityHint are title heuristics; often empty; not verified.
  • isNew needs a baseline — default runs (compare off) are not “0 new discoveries”; enable Flag new jobs / Only new jobs and schedule repeated runs.
  • remoteType / employmentType are often blank on listing-only runs unless Workday sends them on the list payload; Include job description can fill more when published (extra cost).
  • Remote-only requires clear Remote / WFH signals; Hybrid is not treated as remote.
  • Capped maxItems vs monitoring: a low cap can under-sample a large board; the named store still keeps a cumulative baseline, but jobs never seen in any run cannot be compared. Set Max items high enough for your filters.
  • Facet split is one level; employment/remote filters are weaker on thin HTML list payloads.
  • postedWithinDays with a missing postedOn may keep a listing until detail supplies a date.
  • No Greenhouse, Lever, Microsoft, email alerts, CRM, or cross-ATS scraping as built-in product features.

Troubleshooting

SymptomWhat to try
Zero jobsConfirm the URL opens publicly (no login). Use the main careers page; clear filters temporarily.
Unmapped company skippedPaste that employer’s myworkdayjobs.com / myworkdaysite.com URL under Start URLs.
Empty salary / remoteMany boards omit them; enable Include job description when you need detail text.
Everything looks “new”First run after an empty baseline — expected. Or previous dataset was empty/unreadable (check logs for fallback warning).
Fewer rows than Max itemsFilters, Only new jobs skips, or board size — check RUN_SUMMARY counts.

Frequently asked questions

How do I scrape Workday career sites by company name?

Put the employer in Companies (e.g. Adobe or salesforce.com). Mapped boards resolve automatically. If a company isn’t mapped, paste the public careers URL under Start URLs.

Can I use this as a Workday jobs API?

Yes. Start runs and pull datasets via the Actor API tab or the Apify API. Schedule Tasks for automated monitoring without a custom crawler.

How do I export to Excel or Google Sheets?

Dataset tab → Excel/CSV/JSON, or connect Apify’s Google Sheets integration.

How do I track only new openings?

Enable Flag new jobs vs previous run and Only new jobs, then schedule the Task. Baseline IDs live in workday-jobs-scraper-state unless you set Previous dataset ID.

Why was Microsoft removed from examples?

Microsoft’s public careers site is not Workday-hosted. Use Adobe, Salesforce, Autodesk, Target, Mastercard, or another mapped Workday employer — or paste a real Workday URL.

Greenhouse or Lever?

No — Workday-hosted URLs only.

Only public career-page data; no login or bypass. Follow site terms, applicable laws (e.g. GDPR), and use data for legitimate purposes. See Disclaimer.


Support and feedback

  • Issues — bugs and feature requests on this Actor’s Issues tab
  • API — programmatic runs and datasets (Apify API)
  • Tasks / Schedules — Actor Tasks
  • Reviews — a short Store review helps other recruiters find a solid Workday monitor
  • Related — Apify Store · Jobs · Workday

Disclaimer

Our Actors are ethical and do not extract private user data beyond what employers publish on public job listings. Results may still contain personal data protected by GDPR and similar laws. Scrape only with a legitimate reason; if unsure, consult your lawyers. Respect each site’s terms of use. This Actor does not log in, bypass security, or access private employee systems.