How to get job postings from Greenhouse, Lever and Workday

Most company career pages run on an applicant tracking system (ATS) that exposes the open jobs as JSON. Here is how to call the three most common ones directly.

First find the company's board name: open the careers page and click a job. The link usually shows the ATS and the name: job-boards.greenhouse.io/stripe/…, jobs.lever.co/palantir/… or nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/…. All examples below were run against these boards.

Greenhouse: Job Board API (public, no key)

curl "https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true"

Returns {"jobs": [...], "meta": {"total": N}} with every open job in one response: title, location.name, absolute_url, updated_at, first_published, departments and offices. content=true adds the HTML description (HTML-escaped). One job: /v1/boards/stripe/jobs/{id}. Reading jobs needs no key; the API key you may have seen in Greenhouse docs is only for submitting applications.

Lever: Postings API (public, no key)

curl "https://api.lever.co/v0/postings/palantir?mode=json"

Returns a JSON array of postings: text (the title), categories (team, location, commitment), workplaceType, country, createdAt (milliseconds), hostedUrl, and the description as HTML and plain text. Add &skip=0&limit=100 to page through very large boards. EU-hosted boards use api.eu.lever.co.

Workday: the career site's own endpoint (undocumented)

Workday has no public jobs API. Every Workday career site loads its jobs from a JSON endpoint, which you can call the same way:

curl -X POST "https://nvidia.wd5.myworkdayjobs.com/wday/cxs/nvidia/NVIDIAExternalCareerSite/jobs" \
  -H "Content-Type: application/json" \
  -d '{"appliedFacets":{},"limit":20,"offset":0,"searchText":"engineer"}'

The pattern is https://{tenant}.{wdN}.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs, with all three parts taken from the career-site URL. You get total and up to 20 jobPostings per call (title, externalPath, locationsText, postedOn). Page with offset. Things to know: postedOn is relative text such as "Posted 30+ Days Ago", jobs in several places only say "2 Locations" (the detail call GET …/{site}{externalPath} has the full list and description), the endpoint can change without notice, and large boards report a capped total.

Be a good citizen

Many companies, one format

Each ATS returns different fields, and there are many more systems (Ashby, SmartRecruiters, Workable, BambooHR, Oracle, ADP …). Our Job Postings & Career Page Scraper on Apify takes careers-page URLs from 19 ATS platforms and returns every job in one schema (title, location, remote, salary where published, department, dates, description), billed per job.

Frequently asked questions

Is there an official Workday jobs API?

Not for reading a company's public job board. Workday's documented APIs are for the company's own HR data and need their credentials. Career sites use the undocumented /wday/cxs/ endpoint shown above.

Do I need an API key for Greenhouse or Lever job postings?

No. Both publish open jobs without authentication. Keys are only needed for private data or for submitting applications.

How do I find which ATS a company uses?

Click any job on their careers page and look at the link: greenhouse.io, lever.co, myworkdayjobs.com, ashbyhq.com, smartrecruiters.com and so on.

Can I get salaries?

Only where the company publishes them: some boards include pay ranges in the description or in dedicated fields (Greenhouse pay transparency, Ashby compensation).

Written with AI assistance. All three requests were run against the boards shown on 2026-10-01. The Apify tool is ours; the APIs are free to call directly.