Workday Job Board Scraper — Enterprise Careers Sites avatar

Workday Job Board Scraper — Enterprise Careers Sites

Pricing

$2.00 / 1,000 job postings

Go to Apify Store
Workday Job Board Scraper — Enterprise Careers Sites

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

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

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)

  1. Type your job titles — one per line (account executive, data scientist), or * for every job.
  2. Narrow it down (optional) — location, department, remote only, employment type, posting date; or add specific careers-site URLs in queries.
  3. 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
}
FieldTypeDescription
searchQueriesarrayJob-title keywords, one per line. Every word must appear in the title (engineer also matches engineering). * = every job matching the filters.
locationstringText the location must contain, e.g. United States, Germany, London (ISO country codes and US state codes are understood).
departmentstringText the department must contain (most Workday sites do not publish one).
remoteOnlybooleanKeep only remote jobs.
employmentTypestringe.g. Full time, Part time.
postedWithinDaysstringany, 1, 7, 30 or 90.
queriesarrayOptional Workday careers-site URLs. Search filters do not apply to them.
searchTextstringOptional keyword applied to the sites in queries (Workday's own search).
maxResultsPerQueryintegerCaps jobs per keyword or site (default 200).
maxConcurrencyintegerHow many sites from queries to fetch at once.
scanConcurrencyintegerHow many sites a keyword search asks at once (default 8).
includeRawbooleanAttach the source's untouched record under raw (sites in queries).
requestDelayMsintegerPoliteness delay between requests.
proxyConfigurationobjectOptional.

📤 Output

One row per open role, saved to the dataset.

FieldDescription
companyNameTenant name
companyBoardtenant/site — join key across runs
jobIdRequisition ID
jobTitleRole title
locationLocation
countryISO country code
isRemoteRemote flag
employmentTypeEmployment / time type
postedAt / postedRawPosted date (ISO) / Workday's own wording (e.g. "Posted 15 Days Ago")
descriptionFull description, HTML stripped
applyUrl / sourceUrlApply 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 ApifyClient
client = 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:

EventPriceWhen
Job posting$0.002per delivered role
Keyword search$0.05from 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 wdN subdomain 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.

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

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 queries finds it.
  • Restart-safe: a run that Apify moves to another server resumes without writing or charging a row twice.
  • queries (careers-site URLs) and searchText work exactly as before; queries is 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 raised TypeError: 'Run' object is not subscriptable — after the run itself had finished. The example now reads run.default_dataset_id; with client version 1 or 2, keep run['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-text location.

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 (output field) 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=N returns 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).