Workday Job Board Scraper — Enterprise Careers Sites
Pricing
$2.00 / 1,000 job postings
Workday Job Board Scraper — Enterprise Careers Sites
Search open jobs across 2,200+ enterprises hiring on Workday by job title, location, department and date — no careers-site URLs needed. Or pass sites. Live data with full descriptions, employment type, country, posted date and apply URL.
Pricing
$2.00 / 1,000 job postings
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Workday Job Board Scraper — Enterprise Careers Sites 🚀
foXLabs hiring series: Greenhouse · Lever · Ashby · SmartRecruiters · Personio · Teamtailor · Workable · BambooHR · All platforms in one search →
🎉 Search open jobs across 2,200+ enterprises that hire on Workday — by job title, location, department and posting date — without knowing a single careers-site URL. Or point it at the sites you track. No login, no API key, one row per open role with the full description. Built for sales & competitive-intelligence teams tracking enterprise accounts, recruiters, and job-data pipelines.
🔍 What is the Workday Job Board Scraper — and when should you use it?
Workday powers the careers sites of most large enterprises (NVIDIA, Salesforce and thousands more), but every company's jobs sit on its own *.myworkdayjobs.com site with no search across companies. This actor does the searching for you. It carries an index of 4,054 Workday careers sites of 2,244 employers (discovered from the public Common Crawl web archive; 3,941 answered in our last full check, October 2026) and asks each of them live for jobs matching your keywords — Workday searches its own site by keyword, so only matching jobs are fetched — then completes every match from the job detail: description, employment type, start date, location.
Already know your target companies? Add their careers-site URL and get every open role.
Use it when you need: enterprises hiring for a function right now; account-expansion signals for your target accounts; every open role at a target company; or a read on a competitor's hiring plans — from the CXS API behind every myworkdayjobs careers site, no key.
Use something else when: the companies you care about don't run on Workday. Every actor in the foXLabs hiring series emits the same core schema, so their outputs concatenate into one hiring-intent table: Greenhouse · Lever · Ashby · SmartRecruiters · Personio · Teamtailor · Workable · BambooHR.
Need one search across the other platforms? Job Postings Database keeps a daily-refreshed index of 440,000+ open roles from ~33,000 Greenhouse, Lever, Ashby, SmartRecruiters, BambooHR, Personio and Teamtailor boards and answers a single query across all of them in seconds — every delivered role is re-checked live on its own board before it reaches you. Workday boards are not in that index yet, so this Actor stays the way to read them.
🤖 Use with AI agents
Already on the Apify MCP server? Ask for this Actor by name: foxlabs/workday-job-board-scraper.
Your agent can pay for its own runs. This Actor is pay-per-event with agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — no Apify account or API token of its own. Billing is per delivered role, never for errors.
Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want to find open jobs at enterprises that hire on Workday using the Apify Actor `foxlabs/workday-job-board-scraper`.Input: `searchQueries` is a list of job-title keywords (every word must appear in the title; "*" = every job).Optional filters: `location` (e.g. "United States", "Germany", "London"), `department`, `remoteOnly`,`employmentType` (e.g. "Full time"), `postedWithinDays` ("1" | "7" | "30" | "90").`queries` optionally adds careers-site URLs (e.g. "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite").`maxResultsPerQuery` caps jobs per keyword or site (default 200).Start with: {"searchQueries":["account executive"],"location":"United States","maxResultsPerQuery":50}Ask me which roles and region I care about, run the Actor, then summarise the hiring enterprises as a table.
The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/workday-job-board-scraper.md.
📋 Overview
Everything you need to turn Workday's enterprise careers sites into one searchable hiring dataset — role details, full descriptions and hiring signals — in one actor, with no login, cookies or API key.
Why teams pick this actor:
- 🔎 No URLs needed — search 4,000+ Workday careers sites of 2,200+ employers by job title; the companies come to you.
- 🏢 Enterprise coverage — the ATS of the Fortune 500.
- 📄 Full descriptions — every delivered role is completed from Workday's job detail endpoint.
- ⚡ Live, not a stale dump — Workday searches each site by keyword during your run.
- 🎛️ Filters that matter — location (country codes and US state codes understood), department, remote only, employment type, posting date.
- 🔗 Same schema across the series — join with the sibling ATS actors on
companyName/companyBoard. - 💰 Pay only for results — per-role pricing; a job found twice is charged once; empty searches and failed lookups are never billed.
- 🤖 Agent-ready — MCP + x402 agentic payments.
🎬 Quick Start
curl -X POST "https://api.apify.com/v2/acts/foxlabs~workday-job-board-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["account executive"],"location":"United States","maxResultsPerQuery":50}'
🚀 Getting Started (3 steps)
- Type your job titles — one per line (
account executive,data scientist), or*for every job. - Narrow it down (optional) — location, department, remote only, employment type, posting date; or add specific careers-site URLs in
queries. - Run and export — a clean dataset as JSON, CSV or Excel.
📥 Input
{"searchQueries": ["account executive", "solutions engineer"],"location": "United States","postedWithinDays": "30","queries": ["https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite"],"maxResultsPerQuery": 200}
| Field | Type | Description |
|---|---|---|
searchQueries | array | Job-title keywords, one per line. Every word must appear in the title (engineer also matches engineering). * = every job matching the filters. |
location | string | Text the location must contain, e.g. United States, Germany, London (ISO country codes and US state codes are understood). |
department | string | Text the department must contain (most Workday sites do not publish one). |
remoteOnly | boolean | Keep only remote jobs. |
employmentType | string | e.g. Full time, Part time. |
postedWithinDays | string | any, 1, 7, 30 or 90. |
queries | array | Optional Workday careers-site URLs. Search filters do not apply to them. |
searchText | string | Optional keyword applied to the sites in queries (Workday's own search). |
maxResultsPerQuery | integer | Caps jobs per keyword or site (default 200). |
maxConcurrency | integer | How many sites from queries to fetch at once. |
scanConcurrency | integer | How many sites a keyword search asks at once (default 8). |
includeRaw | boolean | Attach the source's untouched record under raw (sites in queries). |
requestDelayMs | integer | Politeness delay between requests. |
proxyConfiguration | object | Optional. |
📤 Output
One row per open role, saved to the dataset.
| Field | Description |
|---|---|
companyName | Tenant name |
companyBoard | tenant/site — join key across runs |
jobId | Requisition ID |
jobTitle | Role title |
location | Location |
country | ISO country code |
isRemote | Remote flag |
employmentType | Employment / time type |
postedAt / postedRaw | Posted date (ISO) / Workday's own wording (e.g. "Posted 15 Days Ago") |
description | Full description, HTML stripped |
applyUrl / sourceUrl | Apply link / public posting URL |
Every row also carries query, scrapedAt, and — when a search finds nothing or a lookup fails — an error.
{"query": "account executive","companyName": "Snyk","companyBoard": "snyk/External","jobId": "JR100852","jobTitle": "Account Executive LATAM","location": "United States - Boston Local","country": "US","isRemote": true,"employmentType": "Full time","postedAt": "2026-09-29","postedRaw": "Posted 15 Days Ago","description": "Snyk is the leader in secure AI software development, helping millions of developers devel…","applyUrl": "https://snyk.wd103.myworkdayjobs.com/en-US/External/job/United-States---Boston-Local/Account-Executive-LATAM_JR100852/apply"}
💼 Use cases
1. Enterprise hiring intent
Input: searchQueries: ["security engineer"], a country, weekly. Output: enterprises hiring for the function. Use: time outreach to new initiatives.
2. Account expansion signals
Input: your target accounts' careers URLs in queries, weekly. Output: roles by function over time. Use: spot new teams early.
3. Competitor headcount tracking Input: the competitor's careers URL, weekly. Output: the full role list with descriptions. Use: track which functions a large enterprise is growing.
4. Recruiter sourcing Input: a title and a location. Output: roles + apply links + descriptions across enterprise employers. Use: source in minutes.
🔗 Integration
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('foxlabs/workday-job-board-scraper').call({ searchQueries: ['account executive'], location: 'United States', maxResultsPerQuery: 50 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('foxlabs/workday-job-board-scraper').call(run_input={'searchQueries': ['account executive'], 'location': 'United States', 'maxResultsPerQuery': 50})for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.
Automation (n8n / Zapier / Make): schedule or webhook → HTTP request to the actor API → handle the JSON dataset → push to a sheet, CRM or dashboard.
📊 Pricing
Pay-per-event:
| Event | Price | When |
|---|---|---|
| Job posting | $0.002 | per delivered role |
| Keyword search | $0.05 | from October 29, 2026: once per search line that delivers at least one job (a search reads every site in the index) |
A job found twice is charged once; a search line that finds nothing, jobs that don't match your filters, and failed lookups are never billed. Sites you list in queries pay only per role. Example: one keyword returning 50 jobs costs $0.05 + 50 × $0.002 = $0.15. View current pricing.
❓ FAQ
Do I need an account, login or API key? No. This reads the CXS API behind every myworkdayjobs careers site — no key.
Do I need to know careers-site URLs? No. Search by job title; every row tells you the employer and its site.
Which companies does the search cover? Workday careers sites found in the public Common Crawl web archive — 4,054 sites of 2,244 employers (October 2026). A site that isn't in the index can still be read by adding its URL to queries.
How long does a search take? A broad search stops as soon as it has your cap; a search for a rare title asks every site (about 15 minutes). A few sites refuse automated requests from time to time; the run log reports how many could not be read.
How current is the data? Every run asks Workday live, so results are as fresh as the careers sites themselves.
Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.
What happens on a bad input or a search with no matches? You get a row with your query and an error — nothing is silently dropped, and you're not charged.
Is scraping this legal? It reads a public job feed the company publishes for syndication — job data, not personal data. See below.
🐛 Troubleshooting
- Fewer rows than expected — title matching is strict (every word must appear in the title); try fewer or shorter keywords, or loosen the filters.
- "… is not a Workday careers URL" — pass the full careers URL including the
wdNsubdomain and site name. - The log warns that sites could not be read — some Workday sites refuse automated requests at times; run again later or lower
scanConcurrency.
⚠️ Trademark
Independent, third-party tool. Not affiliated with, endorsed by or connected to Workday, Inc. "Workday" and related marks belong to their owners and are used here for identification only.
⚖️ Is it legal to scrape this data?
This actor reads only publicly published job-posting data — no private or personal user data. Your results can still contain personal data (e.g. a name in a description); personal data is protected by the GDPR and similar laws, so only process it with a legitimate basis. See Apify's blog post on the legality of web scraping.
🤝 Support & contact
- 🌐 Website: data.foxlabs.com.tr
- 📧 Email: info@foxlabs.com.tr
- 🐛 Issues: open a ticket in the Actor's Issues tab
- 🧰 More clean B2B data actors: Fox Labs on Apify
Changelog
Index refresh — 2026-10-14
- Company index refreshed from the latest public web-archive snapshots: no new careers sites found, 330 that no longer exist removed (checked live on 2026-10-14); the index now holds 4,054 careers sites, 3,941 of them answering and 113 temporarily unreachable (kept).
0.5.0 — 2026-10-14 — keyword search across Workday (no careers-site URL needed)
- New:
searchQueries— search open jobs by title across 4,384 indexed Workday careers sites of 2,442 employers; Workday searches each site by keyword itself, and every match is completed from the job detail. Filters:location,department,remoteOnly,employmentType,postedWithinDays. - A job is delivered and charged once per run, whether a search or a site in
queriesfinds it. - Restart-safe: a run that Apify moves to another server resumes without writing or charging a row twice.
queries(careers-site URLs) andsearchTextwork exactly as before;queriesis now optional.
0.4.5 — 2026-10-08 — README: the Python example works with the current Apify client
- The README's Python example read the results with
run['defaultDatasetId']. With the current Apify client for Python (version 3)call()returns a run object, not a dict, and that line raisedTypeError: 'Run' object is not subscriptable— after the run itself had finished. The example now readsrun.default_dataset_id; with client version 1 or 2, keeprun['defaultDatasetId']. Checked with apify-client 3.2.1, 2.5.1 and 1.12.2. - No code, output field or pricing change.
0.4.1 — 2026-09-06
- Added
country. Structured ISO country code from the requisition location (100% of roles), for clean country filtering alongside the free-textlocation.
0.4 — 2026-09-06
- Enabled AI-agent payments (x402). Standby mode was removed because Apify's x402 agentic-payment eligibility requires it off; the actor now runs as a standard pay-per-event run that agents can discover, run and pay for over x402 (USDC on Base) or Skyfire without an Apify account. Batch and MCP usage are unchanged.
0.3 — 2026-09-05
- Output schema linked in
actor.json(outputfield) so the Store shows the Output tab. - Standby mode (real-time API). The actor now also runs as an always-on HTTP API:
GET /search?query=<query>&maxResults=Nreturns open roles as JSON, billed per role (pay-per-event). Batch runs are unchanged. Endpoint and OpenAPI schema appear in the Standby tab.
0.2 — 2026-09-05
- Full job descriptions added. The actor previously returned only title, location, date and apply link — no description. It now makes a per-posting detail call to Workday's CXS job endpoint and returns the full description (HTML stripped) and employment type. Empty columns the source never provides have been dropped.
0.1
- Initial release: open-roles listing from any Workday careers site (title, location, posted date, apply URL).