Workday Jobs — Any Employer's Careers Site, One Schema
Pricing
from $0.50 / 1,000 results
Workday Jobs — Any Employer's Careers Site, One Schema
Read any employer's Workday careers site: title, location, requisition ID, posting date and the full description. One keyless schema across thousands of large employers.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
alaudin burki
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Read any employer's Workday careers site as flat rows: title, location, requisition ID, posting date and the full description. One keyless schema across thousands of large employers — NVIDIA, Salesforce and the rest.
Why one Actor covers thousands of employers
Workday hosts the careers sites of a large share of big companies, and every one exposes the same two
JSON endpoints under /wday/cxs/. Only the tenant and the site name change, so the input is the
employer's careers URL and everything else is parsed from it.
{ "employers": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"] }
Real run: 2,000 postings from NVIDIA, 1,563 from Salesforce.
The two things that break a naive version
1. The host cannot be guessed. It is nvidia.wd5.myworkdayjobs.com for one employer and
salesforce.wd12.myworkdayjobs.com for another — the wdN number is not derivable from the name. A
guessed host returns 404 and an empty dataset. This Actor parses tenant, site and host from the URL you
give it, and refuses anything that is not a myworkdayjobs.com address with a typed error.
2. postedOn is prose, not a date. It reads "Posted Today", "Posted 3 Days Ago" or
"Posted 30+ Days Ago". Converting that to a timestamp would be a guess, so the raw string is kept and
postedDaysAgo is set only when the prose states an exact number — "30+ Days Ago" is null,
because 30 is a lower bound, not the number of days.
What you get
| Field | Example |
|---|---|
employer | nvidia |
title | Senior Software and System Architect |
location | France, Remote |
jobReqId | JR1997578 |
postedOn | Posted Today |
description | the full posting text, tags stripped |
Details are optional, and their absence is visible
includeDetails fetches the posting page for the description — one extra request per row. If a detail
page fails, the posting is not lost: the list row is still emitted with hasDetails: false and a
null description. A run that returned nothing because one detail call failed would be the wrong trade.
descriptionChars records the full length before the 4,000-character cap, so a truncated row is visible
as truncated rather than looking complete.
Rate limits
Large employers answer 429 under load. Each request is retried up to three times with backoff; a
429 that survives three attempts fails that employer and is reported in SUMMARY.problems, without
taking the other employers down.
Use cases
- Job seekers — every opening at a list of target employers, in one sheet.
- Recruiters — a competitor's live requisitions, refreshed on a schedule.
- Market research — hiring by team and location, with the posting text.
Limits
- 20 postings per page is Workday's own limit;
maxPagesbounds how deep a run goes. - Workday only. Greenhouse (#122), Ashby (#123) and Lever are separate Actors — their APIs differ.
- Facets are not exposed. The API supports filtering by location and department; this Actor passes only free-text search.
- Descriptions are capped at 4,000 characters;
descriptionCharsshows what was cut.
Verified
36 unit tests — URL parsing including the locale segment and the wdN host, the 30+ Days Ago rule,
HTML-to-text, the row shape and the request body — plus 26 live checks across NVIDIA and Salesforce:
both list endpoints, both detail endpoints, description extraction, a bad tenant failing with a typed
error, and pagination actually moving.
One row per posting, flat, with the employer's own words preserved.