All posts
Guide·Feb 8, 2026·5 min read

Lever API: pulling jobs from any Lever-hosted careers page

Lever exposes a public postings API at api.lever.co/v0/postings/{company}. Here's what it returns, what it's missing, and when you should use a normalized aggregator instead.

EN

Eng team

Engineering

Lever exposes a public postings endpoint at api.lever.co/v0/postings/{company}. No auth required. Returns a JSON array of every public job at that company. Simple, clean, fast. Why would you ever need a third-party Lever API?

For one company, you don’t. For every Lever-hosted company, with normalized schema and cross-source dedup, the picture changes.

What the official Lever endpoint returns

curl https://api.lever.co/v0/postings/lever?mode=json | head

[
  {
    "id": "8a7e4f24-...",
    "text": "Senior Software Engineer",
    "categories": {
      "team": "Engineering",
      "location": "San Francisco, CA",
      "commitment": "Full-time"
    },
    "hostedUrl": "https://jobs.lever.co/lever/8a7e4f24-...",
    ...
  }
]

Notice: location is a free-text string. Salary is nowhere — Lever doesn’t expose it structurally. The full description sits in description as HTML.

What JobsPipe adds on top of Lever

  • Multi-company browsing — query every Lever-hosted company without knowing the slug.
  • Parsed salary — same compensation object we ship for every other source, extracted from the description.
  • Normalized location — “San Francisco, CA” becomes { city: "San Francisco", country: "US", lat: 37.7749, ... }.
  • Cross-source dedup — if a job is on Lever and mirrored to Indeed, you get one record with both source_refs.
  • Webhook delivery — push instead of poll, with signed payloads.

When to skip the wrapper

If you only need one company and the rough native shape is fine, hit Lever directly. Their public API is one of the cleanest in the ATS landscape and doesn’t require any auth setup.

Add Lever + 30 other sources with one API key.

Get a free API key