NewSearch millions of jobs from your AI agent with MCP
Source · Workday

Workday API.

Workday's official API is tenant-scoped OAuth. The public postings live on myworkdayjobs.com. JobsPipe collects those public tenants into one endpoint, one schema, one key.

94,301 active Workday jobs
discovered_at, last_seen_at and verified_at on every record
Closed postings kept, with closed_at and closed_reason

Why people are confused about the Workday API

Workday does not offer a public job-postings API. The Workday Staffing REST API requires OAuth credentials granted by each tenant. That works if you are the company; it does not work if you want to consume jobs from many companies.

Every Workday customer hosts their careers site at a subdomain of myworkdayjobs.com (wd1, wd3, wd5 and so on). The page is rendered through Workday's UI, but the underlying job data is fetched from an internal JSON endpoint whose shape varies across tenant versions. JobsPipe reads that public surface for each verified tenant and normalizes it so you learn one shape.

Workaround
Scrape each tenant directly

Possible, but you need per-tenant configuration, the JSON shape varies between Workday versions, and Workday's bot detection blocks naive scrapers.

Workaround
Use one company's Staffing REST API

Works for that one company only, and only after they grant you OAuth credentials. Not a path to multi-tenant coverage.

JobsPipe
Use JobsPipe

Every verified public tenant, one call. Same record shape as the other boards JobsPipe collects. Free tier of 1,000 jobs a month, key in 30 seconds.

Does Workday have an API?

Yes, but not a public jobs one. Workday ships the Workday REST API (OAuth, Staffing, HCM, Time and Absence, Compensation and a few recruiting endpoints) and the older Public Web Services SOAP API with 50+ services. Both are per tenant: a client id issued by one company reaches that company's data only. The job postings a candidate sees are served by the tenant's careers site on myworkdayjobs.com, which has no documented API. That public careers surface is what JobsPipe collects for every verified tenant.

Is the Workday API free?

Not in any way an outside developer can use. There is no price list because there is no self-serve access: API clients are created by a tenant admin inside Workday and are part of that customer's subscription. Third-party 'Workday job APIs' sold on scraping marketplaces are metered per result and read the same public careers pages JobsPipe reads. JobsPipe's free tier returns 1,000 jobs a month with no card, and the sandbox at POST /v1/sandbox/jobs/search needs no key.

How do I get a Workday API key?

Ask the tenant admin. In Workday they run Register API Client for Integrations, pick the scopes, and hand you a client id and secret that exchange for a bearer token at that tenant's token endpoint. The credentials never work against another tenant, and Workday does not run a developer program that issues cross-tenant keys. If your goal is reading postings across many Workday customers, the key you need is a JobsPipe key: sign up, copy it, and send it as a Bearer token to POST /v1/jobs/search with "source_or": ["workday"].

What does the Workday API documentation cover?

Workday's official docs live at community.workday.com behind a Workday Community login. They document the REST API by service (Staffing, Person, Time, Compensation, Recruiting), the SOAP Web Services by version, the OAuth 2.0 setup for integration system users, and the Workday Extend platform. What they do not document is any public job-postings endpoint, because Workday has none; the careers site runs on an internal JSON call that changes between tenant versions. JobsPipe's docs at /docs cover the one record shape returned for every Workday tenant and every other collected board.

What JobsPipe returns for Workday

A POST /v1/jobs/search with "source_or": ["workday"] returns Workday postings as JobsPipe records: id (the tenant's job path), job_title, company, company_domain, url, date_posted, discovered_at, last_seen_at, verified_at, status with closed_at and closed_reason once a posting closes, ghost_score, seniority, min_annual_salary_usd and max_annual_salary_usd when the posting states a range, technology_slugs and keyword_slugs parsed from the description, and sources[0].provider set to workday. Filters that matter for Workday: company_name_partial_match_or to pin one tenant, job_title_or, posted_at_max_age_days, job_country_code_or, remote, and max_ghost_score to skip stale reposts. The data section below shows what share of Workday postings carry a salary, a remote flag and a seniority label.

Workday REST API vs the careers site

The Workday REST API is the modern OAuth interface Workday added in v32+. It covers Staffing (workers, organizations, supervisory hierarchy), Time and Absence, Compensation and a handful of recruiting endpoints, all for the authenticated tenant. There is no equivalent of a Greenhouse Job Board API where any developer can hit a public endpoint and get a tenant's jobs without OAuth. For a single tenant integration (payroll sync, provisioning, custom report extraction) go through OAuth onboarding with that tenant's admin. For cross-tenant postings, JobsPipe is the integration: one key, every verified public tenant, one schema.

Workday postings by the numbers

Measured on the Workday rows in the JobsPipe index and published as shares rather than counts. Use them to decide whether Workday carries the fields your product needs before you filter on source_or.

23.3%
Postings with a salary
a stated range on the posting
5.6%
Remote postings
32.9%
Postings with a seniority label
parsed from title or text
  • Entry3.0%
  • Senior16.7%
  • Lead and above12.6%
Seniority mix as a share of Workday postings. The remainder carry no seniority label or sit between the bands.

Sample request

curl https://api.jobspipe.dev/v1/jobs/search \
     -H "Authorization: Bearer jp_live_your_key_here" \
     -H "Content-Type: application/json" \
     -d '{ "source_or": ["workday"], "status": "active", "limit": 25 }'

Sample response

{
  "id": "job/California---San-Francisco/Senior-Software-Engineer-Distributed-Systems_JR-284431",
  "job_title": "Senior Software Engineer, Distributed Systems",
  "company": "Salesforce",
  "company_domain": "salesforce.com",
  "url": "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site/job/California---San-Francisco/Senior-Software-Engineer-Distributed-Systems_JR-284431",
  "date_posted": "2026-09-02",
  "discovered_at": "2026-09-02T09:23:11+00:00",
  "last_seen_at": "2026-09-08 05:41:07",
  "verified_at": "2026-09-08 06:02:19",
  "status": "active",
  "closed_at": null,
  "closed_reason": null,
  "ghost_score": 9,
  "seniority": "senior",
  "cities": [
    "San Francisco"
  ],
  "state_code": "CA",
  "min_annual_salary_usd": 165000,
  "max_annual_salary_usd": 220000,
  "technology_slugs": [
    "java",
    "kubernetes",
    "aws"
  ],
  "keyword_slugs": [
    "distributed-systems",
    "microservices"
  ],
  "sources": [
    {
      "provider": "workday",
      "url": "https://salesforce.wd12.myworkdayjobs.com/en-US/External_Career_Site/job/California---San-Francisco/Senior-Software-Engineer-Distributed-Systems_JR-284431"
    }
  ]
}

Every record is returned in the same JSON shape regardless of the board it came from. The full schema is documented in the docs.

Skip the scraper - try the API right now

Sample data from Workday and 30+ other sources in the exact live JSON shape. No key needed.

LIGWLA
LinkedIn, Indeed, Greenhouse + 30 more
Workplace
Number of results
Results

Run the search to see normalized results.

request
{
  "job_title_or": [
    "software engineer"
  ],
  "limit": 3,
  "remote": true
}

Live results are one free key away - same request against /v1/jobs/search.

Fields in every job record

idjob_titlecompanycompany_domainurldate_posteddiscovered_atlast_seen_atverified_atstatusclosed_atclosed_reasonghost_scoresenioritycitiesstate_codemin_annual_salary_usdmax_annual_salary_usdtechnology_slugskeyword_slugsesco_skillssources

FAQ

Does Workday have an API?+

Yes, two: the Workday REST API (Staffing, HCM, Time, Compensation) and the Public Web Services SOAP API. Both are scoped to one tenant and need credentials that tenant's admin issues. Neither returns public job postings across companies. The public postings live on each tenant's myworkdayjobs.com careers site, which is what JobsPipe collects.

Is the Workday API free?+

There is no separate API price, but access is bundled with a Workday subscription and gated per tenant, so you cannot buy or request it as an outsider. JobsPipe's free tier returns 1,000 jobs a month across every collected board, including Workday, and the sandbox endpoint needs no key at all.

How do I get a Workday API key?+

Only from a tenant admin. They register an API client under Register API Client for Integrations, scope it, and issue OAuth client credentials that reach that tenant alone. If you are not that company, there is no key to get. JobsPipe never asks for Workday credentials; a JobsPipe key reads the public postings of every verified tenant.

Does JobsPipe need OAuth credentials from each Workday tenant?+

No. JobsPipe reads only public job postings from public tenant career sites. It never has access to applicant data, candidate PII, or any non-public Workday object.

Can I filter to one specific Workday tenant?+

Yes. Add "company_name_partial_match_or": ["salesforce"] to the JSON body of POST /v1/jobs/search (or any other company name) to narrow results to one company's postings, and keep "source_or": ["workday"] to stay on Workday rows.

What about Workday tenants that block scrapers?+

JobsPipe respects robots.txt and rate-limits per tenant. If a tenant explicitly disallows indexing, those jobs are not on JobsPipe.

Try Workday data free - key in 30 seconds.

Get a free API key