Workday job board API: the careers-page JSON, its paging and its 2,000 cap
Workday does not publish a job board API for the public. What it has is the JSON that every careers site on myworkdayjobs.com loads in the visitor's browser: a POST to /wday/cxs/{tenant}/{site}/jobs. This page sets out how that endpoint behaves, the limits we measured against it, and what a whole board costs to read.
The request
Everything comes from the careers page's own address. For https://acme.wd5.myworkdayjobs.com/External the tenant is acme, the host is wd5 and the site is External, and the list is:
curl -X POST "https://acme.wd5.myworkdayjobs.com/wday/cxs/acme/External/jobs" \
-H "Content-Type: application/json" \
-d '{"appliedFacets": {}, "limit": 20, "offset": 0, "searchText": ""}'
A company name alone is not enough: nothing public maps a name to its tenant, its wd number and its site name, so you start from the careers link. Each posting in the list carries a path, and GET /wday/cxs/{tenant}/{site}{externalPath} returns that posting's own record.
Limits and quirks, measured
Checked against live careers sites on 24 September 2026:
- Page size: 20 at most. A
limitof 21 or more answers HTTP 400. - Total: only the first page reports
total; later pages say 0. - The cap:
totalstops at 2,000. A board whose filter counts added up to 2,616 reported 2,000, so a larger board has to be read filter by filter. - Past the end: an offset past the last posting serves the first page again rather than an empty one, so stop at the first page's total.
- Case: the tenant in the path is case-sensitive (upper case answered 502); the site name is not (370 postings either way).
- Errors: a locale segment in the path answers 405; the wrong
wdhost or a tenant that does not exist answers 422; a site that does not exist answers 404.
The list is thin. Each entry gives a title, a location label, the path and a relative date such as "Posted 3 Days Ago", which stops at "Posted 30+ Days Ago". The posting date, the country and the time type are only in each posting's own record, which is one more request per posting.
What a posting holds
Read on Workday's own careers site, workday.wd5.myworkdayjobs.com/Workday, on Wednesday 14 October 2026: one list page and two posting records.
The list answers with total (389 that morning, on the first page only), jobPostings, facets and userAuthenticated. Each of its 20 entries carries six keys and nothing else:
titleandexternalPath: the role, and the path its record is read from, ending in the requisition id (…_JR-0110802).locationsText: one location label as the company writes it, or a count such as "2 Locations" when there are several.postedOn: relative text only, from "Posted Today" to "Posted 30+ Days Ago".remoteType: the company's own label; on this board "Flex", "Onsite" or "Remote".bulletFields: whatever the company shows under the title; here the requisition id.
The facets are the careers page's filters, with a count beside each value. Workday's own site has seven: remote type (3 values), country or territory (25), job category (20), state (55), time type (1), distance (5) and a location group. A value's id goes back in appliedFacets to narrow the list, which is how a board above the 2,000 cap is read in parts.
The record, a GET on that path, keeps the posting under jobPostingInfo:
startDate: the posting's start date, such as2026-10-13, and the only absolute date in either response. Some boards addendDate, the date the posting closes.timeType: "Full Time" on both records read.locationandadditionalLocations: every location label, the second only when there are several.jobRequisitionLocation.country.alpha2Codegives the ISO country code (US);countrygives only a name and Workday's internal id.jobDescription: the whole posting as HTML, about 11,000 characters on each record read.jobReqId,remoteType,externalUrl,canApplyandposted, with Workday's internal ids and the ids of the application questionnaires.
Beside it, hiringOrganization.name is the employing legal entity, such as "Workday Government, LLC", and similarJobs was empty on both. Neither response has a pay field: where a company states pay, it sits inside jobDescription, in the company's own words. Neither names a recruiter.
What a whole board costs
Measured on Workday's own careers site, workday.wd5.myworkdayjobs.com/Workday, on Thursday 1 October 2026 (run ZSnKFj1HNi0j0F5TN): 362 open roles in 24 countries took 381 requests, 19 list pages plus one record per role, all answered at the first attempt, in 4 minutes 21 seconds at 90 requests a minute. On Tuesday 6 October the same site listed 374. Of the 362:
- a pay range on 235 (65%), as numbers in US dollars, euros, Canadian dollars and pounds, none saying per what;
- a city on 334 (92%), once Workday's coded labels such as
USA.VA.Restonare read as country, region and city; - hybrid on 314, on-site on 35, remote on 13.
The full account of that run, and of the next day's run that read only what had changed, is in the guide Workday jobs into Google Sheets every day.
Where it stops
Reading one board once is a short script. Watching boards is not: the record request per posting makes every full read cost hundreds of requests, the 2,000 cap needs filter splitting on large employers, and nothing in the response tells you which roles are new, changed or gone since yesterday. Workday Jobs Scraper handles all three from the careers link alone: it pages and splits as above, reads a posting's record only when the list shows something new or changed, and in incremental mode returns, and charges for, only the roles that changed. One limit carries over from the list: an edit to a posting's text alone does not show in the list, so it is not seen as a change. Its page has the price and every field.
The same reference for other systems
- Ashby job board API: endpoint, fields and pay data, measured
- Breezy HR job board API: the public JSON feed, the keyed API and where the text lives
- Greenhouse job board API: endpoints, fields and limits, measured
- JazzHR job board API: the keyed API, the public career page and what each holds
- Lever job board API: the Postings API on its two hosts, measured
- Recruitee job board API: the offers endpoint, its fields and the 2027 token deadline
- Rippling job board API: the public list, the job record and pay by tier
- Workable job board API: the public endpoint, its fields and its rate limit
Published 2026-10-06.