Workday Job Scraper & Hiring Monitor
Pricing
from $0.55 / 1,000 job listings
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
Maintained by CommunityActor stats
2
Bookmarked
34
Total users
4
Monthly active users
4 days ago
Last modified
Categories
Features
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 case | How to run it |
|---|---|
| Watchlist of target employers | Companies = Adobe, Salesforce, Autodesk; schedule daily |
| Role-focused sourcing | Keyword / Keywords (e.g. Python, Backend) + Max items |
| Geography research | Location(s) for city, region, country, or Remote |
| Remote-only pipeline | Remote jobs only = on |
| Fresh openings only | Flag new jobs + Only new jobs + Schedule |
| Full JD for outreach | Include 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
isNewvs 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
- Resolves Companies through the board map and/or parses Start URLs (tenant + site).
- Lists jobs via Workday’s public CXS API; falls back to HTML when the API is unavailable.
- 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.
- Applies filters, optional detail fetch, and normalization (aliases included).
- Optionally compares job IDs/URLs to a previous dataset or the cumulative named store
workday-jobs-scraper-state. - 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.
isNewmeans “not in the comparison baseline,” not a live webhook alert.
Supported Workday sources
| Supported | Not supported |
|---|---|
*.myworkdayjobs.com career and job URLs | Greenhouse, Lever, Eightfold, or other ATS |
*.myworkdaysite.com public boards | Login / 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):
- Scrape Adobe Workday Jobs from Career Sites — up to 25 listings
- Scrape Adobe and Salesforce Workday Career Listings — up to 50 listings
- Monitor New Adobe and Salesforce Workday Job Postings — only-new monitoring
- Scrape Remote Mastercard Workday Job Listings — remote filter
- Scrape Adobe Workday Jobs with Full Descriptions — detail fetch
- Or start from Companies =
Adobe/Salesforce/Autodesk/Target/Mastercardwith Max items 25
Input configuration
See the Input tab for full schema defaults and validation. Companies and/or Start URLs are required (at least one).
| Field | Description |
|---|---|
| Companies | Names/domains from the board map (e.g. Adobe, salesforce.com) |
| Start URLs | Public Workday careers or job URLs (optional if Companies is set) |
| Max items | Cap saved jobs (default 100; Store prefill 25). With Only new jobs: caps new rows. Higher caps improve monitoring accuracy. |
| Include job description | Detail fetch — extra charge per saved job |
| Flag new jobs vs previous run | Sets isNew vs previous dataset or cumulative named-store baseline |
| Only new jobs | Save only isNew rows; still tracks all seen IDs. Implies Flag new jobs. |
| Previous dataset ID | Optional compare source; if missing/unreadable → graceful fallback to named store (or first-run baseline). Run does not fail. |
| Keyword / Keywords | Prefer a single Keyword when possible. Multi-keyword mode leaves CXS search empty and filters while paging (full-board scan; more cap-sensitive). |
| Location / Locations | City, region, country, or Remote |
| Posted within (days) | Recent postings filter |
| Remote jobs only / Employment types | Additional filters |
| Location facet IDs | Advanced UUID facets |
| Include derived signals / Deduplicate / Detail concurrency / Proxy | Advanced; 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.
| Field | Type | Description |
|---|---|---|
title | string | Full job title |
company / companyName | string | Brand from board map or HTML when known |
location, city, region, country | string | Location text and parsed parts |
jobUrl / applyUrl | string | Official / apply links |
jobId / requisitionId | string | Requisition or path-based ID when Workday provides one |
postedDate / postedDateLabel | string | Workday posting label when present |
employmentType | string | When published |
remoteType / remoteStatus / workLocationType | string | Remote / Hybrid / On-site when known |
department / jobCategory | string | Team / category when present |
seniorityHint / seniority | string | Derived from title (heuristic) |
isNew | boolean | New vs comparison baseline when compare is on |
description / requirements / salary / salaryText | string | Optional — needs Include job description |
source / scrapeMethod | string | cxs | html | direct |
companyCareerUrl / sourceUrl | string | Careers board URL used for discovery |
scrapedAt | string | ISO 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
- Set Companies (and/or Start URLs) for your watchlist.
- Turn on Flag new jobs vs previous run.
- Turn on Only new jobs if you only want fresh rows in the dataset.
- Set Max items high enough for the filtered board (capped runs can miss IDs and hurt baseline accuracy).
- Leave Include job description off for cheap monitors.
- 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
- Save an Actor Task with your watchlist + Flag new jobs + Only new jobs (see Example C).
- Open Schedules → create daily or weekly runs on that Task.
- Optional: connect a webhook / Zapier / Make / Slack notification when the run succeeds, then filter on
isNewor 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.
| Cost | Charged when |
|---|---|
| Per saved job | Each job saved to your dataset |
| With descriptions | Each saved job when Include job description is on |
| Per run | Once 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 jobs | Without descriptions | With 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/seniorityHintare title heuristics; often empty; not verified.isNewneeds a baseline — default runs (compare off) are not “0 new discoveries”; enable Flag new jobs / Only new jobs and schedule repeated runs.remoteType/employmentTypeare 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
maxItemsvs 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.
postedWithinDayswith a missingpostedOnmay 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
| Symptom | What to try |
|---|---|
| Zero jobs | Confirm the URL opens publicly (no login). Use the main careers page; clear filters temporarily. |
| Unmapped company skipped | Paste that employer’s myworkdayjobs.com / myworkdaysite.com URL under Start URLs. |
| Empty salary / remote | Many 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 items | Filters, 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.
Is it legal?
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.