Workday Job Board Scraper avatar

Workday Job Board Scraper

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Workday Job Board Scraper

Workday Job Board Scraper

Collect job postings from any Workday careers site on myworkdayjobs.com.

Pricing

from $0.75 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Workday Job Board Scraper — any myworkdayjobs.com careers site

Collect job postings from any Workday-hosted careers site on myworkdayjobs.com. Give this Actor a Workday careers-site URL, and it returns the board's postings with title, requisition ID, location split into city, state and country, remote flag, posted date and apply URL.

A Workday careers site is a React shell whose served HTML contains no postings at all. This Actor reads the tenant's own CXS job-search API — the same endpoint the site renders from — which answers without a login. Workday rejects any page larger than 20 postings, so a full board is paginated 20 at a time until the board's own reported total is reached.

No Workday account, login, API key or cookies are used. This Actor reads the public external careers site that a logged-out visitor sees.

What it returns

FieldTypeNotes
jobIdstringWorkday's own requisition ID, as printed under the posting title — stable, use it to de-duplicate
titlestring
tenantstringThe Workday tenant the board is addressed by, e.g. salesforce
locationstringThe posting's displayed location, verbatim. May read "3 Locations" when a posting is open in several offices
city, state, countrystringResolved by what each part is rather than by its position, so "Denver, CO, USA" and "USA, CA, Pleasanton" both split correctly. Falls back to the primary office encoded in the posting's own URL when the displayed location is absent or reads "3 Locations"
isRemotebooleantrue when the location or Workday's remoteType names remote, virtual, home office or telecommute
employmentTypestringWorkday's timeType, e.g. "Full time"
postedAtstringCalendar date, YYYY-MM-DD. Reconstructed from Workday's relative label ("Posted 4 Days Ago"), which is the only posting date the search API publishes
jobUrlstringDirect link to the posting
boardUrlstringThe careers site a person would open
sourceUrl, collectedAtstringProvenance for every row

Input

{ "boards": ["https://salesforce.wd12.myworkdayjobs.com/External_Career_Site"], "maxItems": 1000 }
FieldDescription
boardsWorkday careers-site URLs on myworkdayjobs.com. Required, 1–100.
maxItemsCap on dataset items. Default 1000, maximum 50,000. Free plans stop at 250 requests and 250 results — see below.
concurrencyBoards fetched in parallel. Default 5, maximum 10.

The board page, a locale-prefixed board page such as /en-US/External_Career_Site, a single posting URL and the CXS endpoint itself all collapse to the same Workday board and are fetched once rather than billed several times. Pages are scheduled only while rows are still wanted, so a hundred boards under a thousand-row cap fetch a thousand rows rather than a hundred boards in full.

Use cases

  • Tracking enterprise hiring across a watchlist of Workday careers sites
  • Competitor headcount signals by location and remote status
  • Filling an ATS, job board or talent CRM with live postings straight from the employer
  • Recruiting lead lists filtered on city, state, country or isRemote
  • Monitoring a board over time by re-running on a schedule and diffing on jobId

Reliability

The CXS job-search API is structured JSON published by the Workday tenant itself, so there is no markup contract to break and no model in the path.

Workday answers a rejected search with an error envelope that carries its own httpStatus inside a 200 response, so a failed board would otherwise look like a successful empty one. That envelope is read and the board is reported as a failure instead.

Postings are de-duplicated on jobUrl, because a board whose reported total understates it hands back page one again past the end rather than terminating.

A board that cannot be read is recorded in the run's SUMMARY under failures rather than silently returning fewer rows, and a run where every board failed exits with an error.

Frequently asked questions

How do I find a company's Workday careers-site URL? A Workday careers site looks like https://<tenant>.wd<N>.myworkdayjobs.com/<Board> — for example https://salesforce.wd12.myworkdayjobs.com/External_Career_Site. Open the company's "careers" or "search jobs" link and copy the URL from the address bar; you can paste a single posting's URL too.

Do I need a Workday account, API key or login? No. This Actor reads the same unauthenticated CXS job-search endpoint the public careers site renders from. No account, no cookies, no session.

How many job postings does one request return? 20. Workday answers HTTP_400 to any larger page, so a full board is always paginated 20 postings at a time.

Does it work for any company on Workday? Yes — any external careers site on myworkdayjobs.com. The tenant and board are read out of the URL you supply, so nothing is hardcoded per company.

Why is there no company name or department? Workday publishes neither on any public endpoint. The search response carries no company display name and the detail endpoint carries only the hiring legal entity; department exists only as a facet that counts postings per category without naming the category of any one posting. Both are left out rather than filled with something wrong. tenant is the identity the board is addressed by.

How accurate is postedAt? It is a calendar date reconstructed from Workday's own relative label against the run's clock, so "Posted 4 Days Ago" becomes an exact date. "Posted 30+ Days Ago" is an open bound and is left null rather than dated 30 days back.

Limitations

Search-result fields only: no job description body, no compensation, no application counts and no recruiter contacts. No company display name and no department, for the reason above. postedAt is a date rather than a timestamp, and is null for postings older than 30 days. Only myworkdayjobs.com careers sites are accepted — a URL on any other host is rejected rather than fetched.

Free plan limit

Runs started from an Apify free plan stop at 250 requests and 250 results, and the run reports that it reached the limit. Any paid plan runs the full input and maxItems you set.

The limit exists because this Actor fetches through our own infrastructure, which Apify does not cover for free-plan runs. It binds on requests as well as results so that a large input list cannot spend those fetches for rows the run will not return.