Workday Jobs Scraper avatar

Workday Jobs Scraper

Pricing

from $0.70 / 1,000 job-details

Go to Apify Store
Workday Jobs Scraper

Workday Jobs Scraper

Scrape every open job from a Workday careers board. Give the board URL and get the job title, employer, location, contract type, posting date and the full advert. Filter by title, location or remote working, and export to CSV, JSON or Excel.

Pricing

from $0.70 / 1,000 job-details

Rating

0.0

(0)

Developer

BonCross API

BonCross API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

What is Workday Jobs Scraper?

Workday boards tend to be big. Salesforce's had more than 1,500 open jobs when we measured it, and others pass 2,000. Workday Jobs Scraper is built for that size, so you get the whole board and not the first few pages. It read two boards of more than 2,000 jobs each, 6,365 jobs in all, in 70 seconds, and pulled 1,000 full adverts from Salesforce in 75 to 98 seconds without a single refusal.

Paste the board URL and you get each job with its title, location, contract type, posting date and the complete advert.

Where it helps most:

  • You get boards past 2,000 jobs to the end. Very large boards are read group by group so the count keeps going.
  • Keyword search is the board's own. It returns the jobs you'd get by typing the same words into the board's search box, matching the title and the advert text.
  • A filtered link stays filtered. Set category, location, job type or time type on the board, copy the URL, and the run uses exactly that.
  • You choose depth by price. A listing-only scan of a whole board takes seconds at half the cost. Full adverts run at about 890 jobs a minute.

Worth knowing up front: Workday boards publish no department and no pay as fields, so there are no columns for them.

BonCross Verified means we tested this actor against the live site before release and kept the record:

  • 26 of 26 live checks on its inputs and filters passed on 7 October 2026
  • 5 boards run the same day, one made up: 60 jobs, 1 error row
  • 8 of 8 sampled links name the job they lead to
  • Charges matched the rows: 1 start, 4 boards, 60 jobs

How to scrape a Workday board

  1. Sign up for a free Apify account and open Workday Jobs Scraper.
  2. Paste the board URL. It looks like company.wd3.myworkdayjobs.com/en-US/Careers, or the shared form wd3.myworkdaysite.com/en-US/recruiting/company/Careers.
  3. Add a keyword or filters, or leave them empty for the whole board.
  4. Decide whether you want full adverts. They're on by default.
  5. Press Start. When it finishes, export to Excel, CSV or JSON.

A URL for some other recruitment platform is reported in a row of its own, and the remaining boards are still read.

⬇️ Input

The board URL is the one required thing. You can list several, or load them from a file or a Google Sheet with Start URLs.

"Max jobs per board" and "Max jobs for the whole run" both default to 0, which means no limit. On a board this size you'll usually want one of them, or a keyword.

One board

{
"boardUrls": ["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"],
"maxItemsPerBoard": 200
}

Engineering roles only, several boards

{
"boardUrls": [
"https://salesforce.wd12.myworkdayjobs.com/External_Career_Site",
"https://sharecare.wd1.myworkdayjobs.com/en-US/Sharecare_Careers"
],
"titleIncludes": ["engineer", "developer"],
"maxItems": 500
}

Hybrid or remote jobs only

{
"boardUrls": ["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"],
"workplaceTypes": ["Hybrid", "Remote"],
"includeUnknownWorkplace": false
}

Remote jobs posted in the past seven days

{
"boardUrls": ["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"],
"onlyRemote": true,
"maxDaysOld": 7
}

A daily run that returns only the board's new jobs

{
"boardUrls": ["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"],
"onlyNew": true,
"dedupStoreName": "workday-seen"
}

How the main inputs behave on Workday:

  • Keyword runs the board's own job search with your words. If your pasted link already has a search in it, that search is kept and the keyword matches job titles on top of it.
  • Work type costs more here than on other platforms, and you should know why. Workday states On-site, Hybrid or Remote on the advert, not in the job list. So each advert is fetched, and billed as a fetched advert, before its job is kept or dropped. With "Max jobs per board" set, adverts are fetched only until that many matching jobs are found. Jobs that state no arrangement (some employers never do) are kept unless "Keep jobs with no stated work type" is off, and one whose location or title says remote counts as Remote.
  • Fetch full job adverts opens each job for its advert. Turn it off when you want a fast, cheap listing-only scan.
  • Title must contain, Title must not contain and Location must contain filter on words, ignoring case.
  • Remote jobs only keeps jobs marked remote and drops jobs that don't say.
  • Posted within (days) keeps the last N days, and 0 keeps everything.
  • Include advert text is on, Include advert HTML is off. The HTML makes rows much larger.

For developers

  • Keys: boardUrls, startUrls, maxItemsPerBoard, maxItems, keyword, titleIncludes, titleExcludes, locationIncludes, onlyRemote, workplaceTypes, includeUnknownWorkplace, maxDaysOld, fetchDetails, includeDescription, includeDescriptionHtml, onlyNew, dedupStoreName, maxConcurrency, delayMs.
  • A pasted link keeps its filters and its search exactly as the board applied them: category, location, job type, time type and any other filter the board offers.
  • Boards with more than 2,000 jobs are read group by group, by job family or country, whichever the board offers.
  • A capped run with no filters stops as soon as it has enough.
  • Several boards are read at once and adverts are fetched side by side. A very large board with adverts is read at a steady pace the site accepts.
  • onlyNew with a dedupStoreName skips jobs an earlier run with the same store name returned, and the store is saved every minute. An empty store name remembers nothing.
  • maxConcurrency defaults to 8, the fastest level measured clean. delayMs defaults to 0. You can leave both.
  • Rows are saved as they're collected, so a run that reaches its timeout keeps what it delivered. A run the platform restarts carries on without delivering or charging any job twice.

⬆️ Output

You get one row per job. The Overview view shows title, employer, location, contract type, posting date and advert link.

{
"id": "JR361902",
"url": "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site/job/California---Remote/Sr-Solution-Engineer_JR361902-1",
"title": "Sr Solution Engineer",
"company": "salesforce",
"location": "California - Remote",
"employmentType": "Full time",
"isRemote": true,
"postedAt": "2026-09-25",
"postedText": "Posted Yesterday",
"description": "To get the best candidate experience, please consider applying for a maximum of 3 roles wi…",
"ats": "workday",
"tenant": "salesforce",
"scrapedAt": "2026-09-26T07:28:18.711Z",
"boardUrl": "https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"
}
  • company is the employer's Workday tenant name (salesforce), not its legal name.
  • postedAt is the advert's own posting date when the full advert is fetched. Without it, it's the date that Workday's "Posted 3 Days Ago" points to. "Posted 30+ Days Ago" leaves it empty, and the wording is always kept in postedText.
  • With the full advert, locations lists each location the job is open in, and workplaceType gives On-site, Hybrid or Remote where the employer publishes it.
  • isRemote is true or false only where the location, title or work type says so. Otherwise it's null.

What data can you extract from a Workday board?

FieldField
💼 Job title🏢 Employer
📍 LocationContract type
📄 Full advert textAdvert HTML, optional
📅 Posted datePosting date as Workday wrote it
🏠 Remote flag🔗 Advert link
Job idBoard name
Board URLWhen the row was collected
On-site, hybrid or remote, with the full advertEvery location, with the full advert

How large a board can it read, and how fast?

Whole runs on Apify, 1 and 2 October 2026:

RunResult
Salesforce's whole board, no adverts1,503 jobs in 9 s
Four boards, up to 100 jobs each with full adverts294 to 295 jobs in 8 to 11 s
20 jobs with full adverts20 jobs in 3 to 7 s
Salesforce, 1,000 jobs with full adverts1,000 jobs in 75 to 98 s, none refused
Two 2,000+ job boards, 600 jobs each with full adverts1,200 jobs in 81 s (about 890 a minute), none refused
Two boards with more than 2,000 jobs each, listing only6,365 jobs in 70 s

At the bulk rate, one run inside the default one-hour timeout gets you roughly 50,000 jobs with full adverts, or far more as a listing only.

The job id, link, title, employer and advert were on every row of the capped run.

How much does it cost to scrape Workday jobs?

EventFree planStarterScaleBusiness
actor-start, per run$0.001$0.001$0.001$0.001
board-scanned, per careers board read$0.0002$0.0002$0.0002$0.0002
job-detail, per job with the full advert$0.001$0.0009$0.0008$0.0007
job-listed, per job without the full advert$0.0005$0.00045$0.0004$0.00035

Enterprise plans pay the Business price.

$1.00 per 1,000 jobs with the full advert on the Free plan, or $0.70 on Business. Listing-only it's $0.50 per 1,000 on the Free plan and $0.35 on Business. There's no proxy to pay for, and platform usage is included.

  • 500 jobs with full adverts from one board: $0.001 + $0.0002 + 500 × $0.001 = $0.5012 ($0.3512 on Business).
  • The same 500 as a listing: $0.001 + $0.0002 + 500 × $0.0005 = $0.2512 ($0.1762 on Business).

Each job is billed once:

  • job-detail when the job's full advert was opened. That includes an advert whose row "Posted within (days)" then drops.
  • job-listed for a job delivered without its advert, either because adverts are off or because one couldn't be opened.
  • board-scanned once for each board read.

On a big board your choice matters. A 1,500-job board costs about $1.50 with adverts and about $0.75 without on the Free plan. Apify's $5 of monthly free credits covers about 4,900 jobs with adverts.

Limitations

  • Workday boards only. A board on another platform returns a row saying so.
  • No department and no salary. Workday boards don't publish them as fields. Pay, where an employer gives it, is only in the advert text.
  • company is the tenant name, for example salesforce. Keep your own mapping if you need legal names.
  • The job list gives dates as wording. With full adverts on, you get the advert's own date. With them off, the date is derived from "Posted 3 Days Ago", and "Posted 30+ Days Ago" leaves it empty.
  • Boards over 2,000 jobs. They're read group by group, and a job the board files under no group could be missed.
  • Location is only as good as the employer's listing. You see what the board shows.
  • An occasional advert is a placeholder. One employer posted a job whose whole body read "TBC". You get what the board holds.
  • No applications can be submitted through this actor.

FAQ

Can it read a board with more than 2,000 jobs?

It can, and you don't have to do anything special. Two such boards returned 6,365 jobs in a listing-only run. They're read by job family or by country, so the only job at risk is one the board has filed under no group at all.

Why does the work-type filter cost more on Workday?

The arrangement is on the advert, so each advert has to be opened to check it, and an opened advert is billed job-detail whether or not the job is kept. Set "Max jobs per board" and fetching stops once that many matches are found.

Why is there no salary or department column?

Workday boards don't publish either as a field. If an employer mentions pay, it's in the advert text, which you can search with a keyword.

Why is postedAt empty on some jobs?

In a listing-only run, a job marked "Posted 30+ Days Ago" has no date to derive. Turn "Fetch full job adverts" on and the advert's own posting date is used.

How do I monitor one employer's new jobs?

Schedule the run with "Only jobs not seen before" on and a store name. Listing-only is enough to spot new jobs, and it's the cheaper mode.

My list mixes Workday with other platforms. What should I use?

ATS Jobs Scraper reads Workday and eight other platforms from one list of URLs.

Do I need a proxy or a Workday account?

No to both. There's nothing to configure.

The actor reads adverts that employers post on public boards, without signing in. Gathering public data is generally lawful in the UK and EU. Responsibility for how the data is used sits with you.

Schedules, API and MCP

A daily schedule with only-new on is the common setup for watching your target employers, with a webhook, Slack, Google Sheets, Zapier, Make or Airbyte receiving each run's rows.

From code, call Apify's run-sync-get-dataset-items endpoint for a capped run and you get the rows in the response. For a whole large board, start the run and read the dataset when it finishes. Use apify-client in Python or JavaScript.

MCP-capable AI clients can add https://mcp.apify.com and call the actor as a tool, for example to pull a company's open roles in one country and group them by title.

More from BonCross

Your feedback

If a board's job count here is lower than the count on the board itself, we want the URL. Post it on the Issues tab in Apify Console. BonCross reads every issue and replies there.