Lever Jobs Scraper icon

Jobs

Lever Jobs Scraper

Scrape every open job posting from any Lever-hosted company career board via Lever's own public JSON API — titles, teams, departments, workplace type, commitment, full descriptions and requirement lists. One scraper, every Lever employer, no login or browser required.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

Any employer running its careers page on Lever serves the entire board from one endpoint: https://api.lever.co/v0/postings/{token}. This Actor hits it directly — hand it one or more company tokens (the {token} in https://jobs.lever.co/{token}, e.g. palantir) and it pulls every currently-open posting for that employer in a single response, no pagination to chase, and normalizes it into one row schema. We've verified it end to end against real boards ranging from a zero-posting tenant to a 388-posting demo board, so the same code path holds whether a company has zero reqs open or hundreds.

What we handle for you

  • 🔑 Keyless public API — no OAuth, no token, no per-company setup; the same JSON endpoint Lever's own hosted careers page renders from.
  • 🏢 Multi-company in one run — pass many tokens; rows come back identically shaped, tagged with company.
  • 🧭 Token or full URL, either works — paste a bare company token or the full https://jobs.lever.co/{token} link and we extract the right identifier from the URL path.
  • 🎛️ Server-side filtering — narrow by team, department, location, or commitment before the payload is even sent, instead of pulling everything and filtering client-side.
  • 🚫 Clean invalid-token detection — an unknown or unused token gets a plain 404, and we skip that company and keep going instead of choking on it or the run silently producing nothing.
  • 🧩 Independent team + department fields — never collapsed into a single fallback like a shallower multi-ATS integration might do; both fields, and the full remote / on-site / hybrid workplace-type enum, come through untouched.
  • 📋 Full requirement lists — the lists[] responsibilities/requirements blocks ship HTML-stripped to plain text, alongside the complete job description.
  • 🔁 Retries with backoff + fingerprint rotationcurl-cffi presents a real browser handshake and retries transient 429/5xx responses with exponential backoff up to 5 attempts, so a large multi-company batch finishes instead of dying on the first hiccup.
  • 🌐 Proxy-routed through Apify Proxy — every request runs through a rotating session, with a fresh exit IP requested the moment anything looks off — the same infrastructure we lean on harder the day a target tightens up.
  • 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable posting IDs. Export JSON / CSV / Excel straight from the Apify Console.
  • 💰 Pay only for postings that land — a company with an invalid token or zero open reqs never gets billed for rows it didn't produce.

Use cases

  • Recruiting & talent intelligence — track what a Lever-hosted employer is hiring for, on which team, in which department, and under what workplace arrangement.
  • Job-board aggregation — add Lever coverage alongside Greenhouse / Ashby / Workday / Teamtailor in one pipeline.
  • Labor-market research — sample hiring demand across an industry or region by team, department, and commitment type.
  • Hiring-intent signals for BD/SDR teams — a sudden spike in open reqs at a target account is a lead qualifier.
  • HR-tech data pipelines — wire structured job rows, including full requirement text, into your CRM, dashboard, or n8n / Make workflow on a schedule.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
companies array yes Bare Lever company token, e.g. "palantir" (the employer identifier in https://jobs.lever.co/{token}), or a full https://jobs.lever.co/{token}[/posting-id|/apply] board URL — the token is regex-extracted from the URL…
team string no Optional server-side exact-match filter on categories.team. Applied to every company in this run.
department string no Optional server-side exact-match filter on categories.department. Applied to every company in this run.
location string no Optional server-side exact-match filter on categories.location. Applied to every company in this run.
commitment string no Optional server-side exact-match filter on categories.commitment (e.g. "Full-time"). Applied to every company in this run.
maxItems integer no Cap postings emitted per company, applied client-side after fetching (no server-side limit/offset param exists on this vendor).
{
  "companies": [
    "leverdemo",
    "plaid"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

posting_idcompanytitleteamdepartmentlocationworkplace_typecommitmenthosted_urlapply_urlcreated_atdescriptionlistsscraped_at

{
  "posting_id": "ac978161-6f46-4f6b-ad9e-a258e642751c",
  "company": "palantir",
  "title": "Administrative Business Partner",
  "team": "Administrative",
  "department": null,
  "location": "London, United Kingdom",
  "workplace_type": "hybrid",
  "commitment": "Full-time",
  "hosted_url": "https://jobs.lever.co/palantir/ac978161-6f46-4f6b-ad9e-a258e642751c",
  "apply_url": "https://jobs.lever.co/palantir/ac978161-6f46-4f6b-ad9e-a258e642751c/apply",
  "created_at": "2024-03-25T22:30:16.463Z",
  "description": "A World-Changing Company\n...",
  "lists": [
    {
      "text": "What We Require",
      "content": "At least three years...\nExcellent digital literacy..."
    }
  ],
  "scraped_at": "2026-07-29T15:00:00Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0015Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Public postings only — the openly published careers board, not authenticated internal/employee views.
  • Company tokens, not company names — you supply the Lever token from the careers URL; a display name like "Palantir" may not match its actual token.
  • No multi-location breakoutlocation returns the primary posting location; the full allLocations[] array for multi-location postings isn't row-exploded in v1.
  • Salary is not modeled — some Lever tenants expose salary text, others don't; this Actor doesn't parse or emit it in v1 either way.
  • Point-in-time snapshot — returns the board as it stands right now; schedule recurring runs to track changes.

FAQ

Do I need a Lever account or API key?
No — every field comes from Lever's own public JSON API, the same one the careers page itself renders from.
How do I find a company's token?
It's in the careers URL: https://jobs.lever.co/{token}. Paste that {token} (e.g. palantir), or just paste the full URL — we extract it either way.
Can one run cover several employers?
Yes — put multiple tokens in companies and every row comes back identically shaped, tagged with company.
What happens if I typo a token or it doesn't exist?
Lever returns a clean 404 for an unknown or unused token. We detect that, skip the company, and report it plainly in the run's status message — the rest of your batch still completes.
Can I filter to just one team or department before I pay for rows I don't need?
Yes — set team, department, location, or commitment and Lever narrows the results server-side before the response is ever sent.
Is this legal?
We fetch public, unauthenticated job-posting data that employers publish for candidates. No login, no private endpoints.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run