Workday Jobs Scraper: Full Descriptions, Past the 2,000 Cap avatar

Workday Jobs Scraper: Full Descriptions, Past the 2,000 Cap

Pricing

from $2.10 / 1,000 job posting returneds

Go to Apify Store
Workday Jobs Scraper: Full Descriptions, Past the 2,000 Cap

Workday Jobs Scraper: Full Descriptions, Past the 2,000 Cap

Scrapes job postings from any Workday careers site (*.myworkdayjobs.com). Returns the full job description and the exact posting date, which Workday's listing endpoint does not provide, and splits large boards by category to get past Workday's hard 2,000-result-per-query ceiling.

Pricing

from $2.10 / 1,000 job posting returneds

Rating

0.0

(0)

Developer

First Party Data

First Party Data

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Workday Jobs Scraper, Full Descriptions, Past the 2,000 Cap

Pulls job postings from any Workday careers site (the *.myworkdayjobs.com kind) through Workday's own public endpoints. No login, no proxy, no browser.

Two things here that most Workday scrapers do not do, both of them measurable in about a minute against any competitor.


1. It returns the description and the real posting date

Workday's listing endpoint is thin. Per posting it gives a title, a URL path, a location string, and a relative date: literally the string "Posted Today" or "Posted 30+ Days Ago". No description, no employment type, no exact date. That listing is what a Workday scraper normally hands you, which is why Workday job data tends to be unusable for anything except counting.

There is a second public endpoint, one per posting, and this actor follows it:

FieldListing endpointWhat you get here
Descriptionnot published2,400–9,500 characters, HTML and plain text
Posted date"Posted 3 Days Ago"exact ISO date
Employment typenot publishedFULL_TIME / PART_TIME, vendor wording in employmentTypeRaw
Work arrangementnot publishedWorkday's own remote flag, where the employer set it
Apply URLderived from a paththe employer's canonical URL
Requisition IDpartialjobReqId

Verified against eight unrelated tenants, Abbott, NVIDIA, Thales, IQVIA, Labcorp, Blue Origin and two others, 8 of 8 returned full detail.

It costs one extra request per posting, so it only runs when Include full job descriptions is on, and only for postings that already survived your title and location filters.


2. It gets past Workday's 2,000-result ceiling

This one is worth understanding, because it is invisible and it is why two Workday scrapers can disagree about how many jobs a company has.

Workday will not return more than 2,000 postings for any single query, and it does not tell you. The total field is silently clamped to 2000. Page past it and the API keeps answering, with rows you have already seen.

Measured on NVIDIA's board:

total reported by the API ............ 2,000
distinct postings from naive paging .. 2,000 (offsets 2000-3980 return only duplicates)
postings that actually exist ......... 2,667 (the facet counts say so)
─────
silently missing ...................... 667 = 25% of the board

Every facet is a separate query with its own ceiling, so the way through is to split the board and merge. This actor detects the clamp automatically by comparing the category counts against the reported total, and only then splits:

INFO workday/nvidia|wd5|NVIDIAExternalCareerSite: 2,667 postings exist but a
single query returns at most 2,000. Splitting by jobFamilyGroup into 15
queries to reach the rest.
INFO Done in 127.3s, 2667 jobs from 1 live board

All 2,667. If a board fits under the cap, nothing extra happens and it is not slower.

This is not one unlucky board. Reading the four largest Workday employers in the bundled list, measured 14 September 2026. Those boards move daily, so the figure moves with them:

EmployerNaive pagingThis actorRecovered
Abbott2,0002,669+669
NVIDIA2,0002,671+671
Thales2,0002,603+603
Airbus2,0002,559+559
8,00010,502+31.3%

Any Workday tenant with more than 2,000 open roles is affected, and there are a lot of them, because that is a normal size for an enterprise employer.


3. Filtering happens inside Workday, not after

Workday supports a server-side search and server-side facets, and this actor passes yours straight through. That matters for cost as well as speed: rows filtered out at the source are rows you are never billed for.

{
"companies": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
"searchText": "kernel",
"jobCategory": ["Engineering"]
}
INFO workday/nvidia|wd5|NVIDIAExternalCareerSite: filtering at the source to
Job Category: Engineering.
INFO Done in 12.4s, 249 jobs (288 postings scanned)

288 postings read instead of 2,667, for the same answer.

Category names are matched against whatever that tenant actually publishes, so you can write "Engineering" without hunting for Workday's opaque internal ids. Name one that does not exist and the log tells you which categories the board does have.


Input

Paste the careers URL. Any of these shapes works:

https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
https://abbott.wd5.myworkdayjobs.com/en-US/abbottcareers
workday:nvidia|wd5|NVIDIAExternalCareerSite

A Workday address has three parts: the tenant (nvidia), the host (wd5, which genuinely varies: wd1 through wd12 are all in use), and the site name (NVIDIAExternalCareerSite). Paste the whole URL and all three are read off it.

Or just give the company name. With stryker, medtronic or gartner the board is searched for by probing the shapes that real Workday tenants actually use, cheapest first, stopping at the first hit:

INFO Found a Workday board for "stryker": stryker / wd1 / strykercareers (1455 postings).
INFO Found a Workday board for "gartner": gartner / wd5 / EXT (762 postings).

Be aware of the limit: measured against the 120 real Workday boards in the bundled list, wd1/wd5/wd3 cover 95% of hosts but 48% of site names follow no pattern whatsoever: EXT, BAH_Jobs, signetjeweleryretailsales, external_experienced. So a name search finds about half of them, and that is the best case, because it also assumes the tenant matches the company name. Airbus files under ag. When the search misses, the log says so and tells you to paste the URL, which always works and costs one request.

Or switch on Search the built-in company list and skip URLs entirely: this actor ships 120 verified live Workday boards carrying 47,125 open postings, largest employers first.

The ten biggest Workday employers in the bundled list

  1. Abbott: 2,677 roles
  2. NVIDIA: 2,657 roles
  3. Thales: 2,588 roles
  4. Airbus: 2,582 roles
  5. Booz Allen Hamilton: 2,398 roles
  6. IQVIA: 1,924 roles
  7. Labcorp: 1,775 roles
  8. Blue Origin: 1,641 roles
  9. Signet Jewelers: 1,556 roles
  10. Stryker: 1,457 roles

Verified live at build time (2026-09-15): every board answered its API with at least one open posting. Workday publishes no company display name, so these are derived from the tenant identifier.


Output

One row per posting, with a stable id so repeat runs can be de-duplicated:

{
"id": "workday:nvidia|wd5|NVIDIAExternalCareerSite:JR2017846",
"title": "Senior Embedded Software Engineer, DPU - Networking",
"company": "NVIDIA",
"ats": "workday",
"locationRaw": "US, MA, Westford",
"city": null,
"region": null,
"country": "United States",
"countryCode": "US",
"countryInferred": false,
"employmentType": "FULL_TIME",
"employmentTypeRaw": "Full time",
"seniorityLevel": "SENIOR",
"seniorityInferred": true,
"workplaceType": null,
"isRemote": null,
"descriptionText": "We are looking for a versatile Senior Software Engineer...",
"applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/...",
"postedAt": "2026-09-11T00:00:00.000Z",
"postedOnRaw": "Posted Yesterday",
"requisitionId": "JR2017846",
"scrapedAt": "2026-09-12T07:54:44.226Z"
}

isRemote is three-valued: true, false, or null when the employer did not say. Most Workday tenants leave the remote flag unset, so null is common and it is not the same as false. Filtering on Remote roles only excludes unknowns rather than guessing at them.


Running it as a feed

Switch on Only new or changed jobs and the actor remembers what it returned last time, then bills only what moved. Unchanged postings are skipped entirely. Postings that vanished from the board are listed in the REMOVED_SINCE_LAST_RUN record, so you can close them out of your own index.

On a large Workday board that is the difference between paying for a full re-read every morning and paying for one, once.


What to expect, honestly

  • Workday is the slowest major ATS to read. It pages 20 postings at a time, so a 2,600-role board is 130 round trips before descriptions. Budget minutes, not seconds. Nothing can fix this; the page size is Workday's.
  • Descriptions double the work. One extra request per posting. Turn them off when you only need to know who is hiring for what.
  • Most tenants do not set the remote flag. Expect isRemote: null on the majority of postings; the description usually says, but this actor will not guess from prose.
  • No structured salary. Workday exposes no pay field. Where a range is written into the description in an unambiguous, currency-marked form it is parsed out; otherwise compensation is null rather than a guess.
  • Boards move. Tenants get renamed and sites get retired. Those return 404, are counted separately in RUN_SUMMARY.boardsNotFound, and never fail the run.
  • Public data only, and worth being precise about. The endpoint this actor reads is the one a Workday careers page calls to draw its own list. It is public and unauthenticated, and it is not a feed Workday documents for third-party use. Nothing authenticates, submits an application, or touches candidate data, and the requests carry a User-Agent naming this actor.

Unofficial: this actor is not affiliated with or endorsed by Workday, Inc.