Lever Jobs [$0.99] Scraper & API — Any Company avatar

Lever Jobs [$0.99] Scraper & API — Any Company

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Lever Jobs [$0.99] Scraper & API — Any Company

Lever Jobs [$0.99] Scraper & API — Any Company

[$0.99/1K] Scrape every open job from any company on Lever (jobs.lever.co). Paste a board URL or org slug and get the full posting in one API call — title, full description, compensation, location, department, workplace type, apply URL. Filter by title, location, and remote. No proxy. JSON or CSV.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

19

Monthly active users

4 hours ago

Last modified

Categories

Share

Lever Jobs Scraper 🧭

Scrape every open job from any company hosted on Lever (jobs.lever.co) — title, full description, compensation, location, department, and apply URL — straight from Lever's public postings API. One request per company returns the whole board, fully detailed. No login, no anti-bot, no browser.

How Lever Jobs Scraper works


Why use this scraper

  • Complete boards in one call. Lever returns every open role for a company in a single API response — no pagination, no per-job fetches.
  • Full job detail, not just titles. Each row carries the entire job: descriptionHtml + plain text, compensation range (when shown), location(s), employment type, workplace type, and the apply URL.
  • Fast and cheap. No proxies required (the API has no anti-bot), so runs are quick and your cost stays low.
  • Normalized schema. Output uses a consistent ATS schema shared with our other ATS scrapers (Ashby, Lever, SmartRecruiters, Personio, BambooHR) — write one parser, reuse it across every ATS.
  • Built-in filters. Narrow by title, location, department, employment type, remote, or posted date — applied before a row is emitted, so you only pay for matches.
  • Works with embedded boards. Paste a company's own careers-page URL (e.g. https://www.company.com/careers) — if it renders a Lever board, the actor discovers the underlying Lever slug automatically.
  • Per-company job counts + a coverage report. Every row carries companyTotalJobs (the board's total open roles), and a separate company-summary output lists every input link with its status (ok / no_jobs / failed / not_lever) and job count — so you can instantly see which links worked and which didn't.
  • Output order matches input order. Companies are emitted in the order you listed them.
  • Optional English translation (free). Lever returns each job in the language the company wrote it in (a board can even mix languages). Turn on translateToEnglish to auto-translate non-English titles/descriptions to English — no API key, originals kept alongside.

Overview

Lever is a widely-used recruiting platform. Many high-growth tech companies host their careers on Lever at https://jobs.lever.co/{company}. This actor reads each company's jobs through Lever's public postings API and emits one clean, normalized row per open job.


Supported inputs

Input typeExampleNotes
Board URLhttps://jobs.lever.co/spotifyThe company's public Lever board
Job URLhttps://jobs.lever.co/spotify/{jobId}The org slug is extracted; the whole board is scraped
Bare org slugspotify, palantir, mistralThe part after jobs.lever.co/
Embedded careers pagehttps://www.company.com/careersA company's own page that renders a Lever board — the Lever slug is detected from the page automatically

Provide them in Start URLs and/or Organization slugs. Mix as many companies as you like in one run.

How do I find a company's Lever slug? It's the path segment in their jobs.lever.co/{slug} careers URL.


Use cases

  • Job boards & aggregators — ingest fresh, structured roles from many companies.
  • Recruiting & sourcing tools — track who's hiring for what, with compensation where disclosed.
  • Market & talent intelligence — hiring velocity, remote-vs-onsite mix, and salary bands where shown.
  • Lead generation — companies actively hiring are buying signals for many B2B products.
  • Personal job search — pull every role across your target companies into one sheet.

How it works

  1. Resolve each input (board URL, job URL, or slug) to an org slug. If an input is a company's own careers page, the actor fetches it and detects the embedded Lever slug.
  2. Fetch https://api.lever.co/v0/postings/{org}?mode=json — one HTTP call per company.
  3. Each job arrives fully detailed (description, salary, categories, apply URL).
  4. Normalize to a common ATS schema and push one row per job, in the order companies were given.
  5. Write a coverage report — a separate company-summary dataset (plus a RUN_SUMMARY.json key-value record) with one line per input link: its status, the total jobs found, and any error.

Companies are processed in parallel with a sliding-window concurrency cap, then flushed in input order. No proxy is needed; you can supply one for IP rotation at very large scale.


Input configuration

FieldTypeDefaultDescription
startUrlsarrayLever board URLs, job URLs, or slugs (strings or {url} objects).
organizationsarrayBare Lever org slugs, e.g. ["spotify","palantir"]. Merged with startUrls.
maxItemsinteger5000Max job rows emitted across the whole run.
maxConcurrencyinteger10How many companies to fetch in parallel.
titleKeywordstringKeep only jobs whose title contains this.
locationstringKeep only jobs whose location contains this.
departmentstringKeep only jobs whose department contains this.
employmentTypestringKeep only this employment type.
remoteOnlybooleanfalseKeep only remote jobs.
postedAfterstringKeep only jobs published on/after this date (YYYY-MM-DD).
includeDescriptionbooleantrueInclude descriptionHtml + descriptionText. Turn off for leaner/cheaper rows.
includeRawJsonbooleanfalseAttach the original Lever payload under raw.
translateToEnglishbooleanfalseFree auto-translation of non-English job titles/descriptions to English (originals kept). Best with includeDescription on.
proxyobjectOptional. Not required (no anti-bot); use only for IP rotation at scale.

Example input

{
"startUrls": ["https://jobs.lever.co/spotify"],
"organizations": ["palantir", "mistral"],
"maxItems": 1000,
"titleKeyword": "engineer"
}

Output

One row per open job. Example (trimmed):

{
"ats": "lever",
"org": "spotify",
"company": "Spotify",
"companyTotalJobs": 142,
"jobId": "08d82da1-0c72-44d1-91eb-7fa22dee3d39",
"globalId": "lever:spotify:08d82da1-0c72-44d1-91eb-7fa22dee3d39",
"title": "Backend Engineer - Platform",
"department": "Engineering",
"team": "Platform",
"employmentType": "Permanent",
"workplaceType": "Hybrid",
"isRemote": false,
"location": "Stockholm",
"locations": ["Stockholm"],
"compensation": null,
"salaryText": null,
"descriptionHtml": "<div>About the role…</div>",
"descriptionText": "About the role…",
"publishedAt": "2026-05-13T15:23:52.322Z",
"jobUrl": "https://jobs.lever.co/spotify/08d82da1-…",
"applyUrl": "https://jobs.lever.co/spotify/08d82da1-…/apply",
"scrapedAt": "2026-06-14T18:12:00.000Z"
}

Key output fields

FieldDescription
atsAlways "lever" — the source platform.
orgCompany board identifier.
companyCompany display name.
companyTotalJobsTotal open roles on this company's board (before filters/maxItems). Same value on every row from that company.
globalIdStable, unique key ats:org:jobId — use it to dedupe across runs.
titleJob title.
department / teamOrg grouping as set by the company.
employmentTypeFull-time / Part-time / Intern / Contract / Temporary (as the ATS reports it).
workplaceType / isRemoteRemote / Hybrid / OnSite + a boolean remote flag.
location / locationsPrimary location + every listed location.
compensation / salaryTextSalary range when the company publishes one.
descriptionHtml / descriptionTextFull job description as HTML and plain text.
publishedAtWhen the role was published (ISO).
jobUrl / applyUrlPublic posting URL + application URL.
translated / detectedLanguage(only with translateToEnglish) Whether the row was translated, and the detected source language.
titleOriginal / descriptionTextOriginal(only when translated) The original, pre-translation text.

Alongside the job rows, the actor writes a per-input coverage report so you can verify every link you supplied was processed — and see exactly which ones returned no jobs. It's written to a separate company-summary dataset (export it as CSV/Excel like the main data) and mirrored to a RUN_SUMMARY.json record in the run's key-value store.

One row per input link, in the order you gave them:

[
{ "inputOrder": 1, "inputUrl": "https://jobs.lever.co/spotify", "resolvedOrg": "spotify", "embedded": false, "status": "ok", "totalJobsFound": 142, "jobsScraped": 142, "error": null },
{ "inputOrder": 2, "inputUrl": "https://www.acme.com/careers", "resolvedOrg": "acmecorp","embedded": true, "status": "ok", "totalJobsFound": 18, "jobsScraped": 18, "error": null },
{ "inputOrder": 3, "inputUrl": "not-a-real-org", "resolvedOrg": "not-a-real-org","embedded": false,"status": "failed","totalJobsFound": 0, "jobsScraped": 0, "error": "org 'not-a-real-org' not found (404 — not on Lever)" },
{ "inputOrder": 4, "inputUrl": "https://example.com", "resolvedOrg": null, "embedded": false, "status": "not_lever", "totalJobsFound": 0, "jobsScraped": 0, "error": "No Lever board found at this input…" }
]
FieldDescription
inputOrder1-based position of the link in your input.
inputUrlThe link exactly as you supplied it.
resolvedOrgThe Lever slug it resolved to (or null if none).
embeddedtrue if the slug was discovered inside a company's own careers page.
statusok (jobs found) · no_jobs (valid board, 0 open roles) · failed (fetch error — see error) · not_lever (no Lever board at this link).
totalJobsFoundOpen roles on the board.
jobsScrapedRows actually emitted for this link (after filters + the maxItems cap).
errorFailure reason when status isn't ok.

Note on maxItems: because output is emitted in input order, the global maxItems cap fills from the top of your list. If an early company is large enough to reach the cap, later companies can show totalJobsFound > 0 but jobsScraped: 0 — raise maxItems to capture them all.


FAQ

Do I need a proxy? No. Lever's postings API is public with no anti-bot. The proxy field is available only for optional IP rotation at very large scale.

Where does company come from? Lever's postings API doesn't expose a display name, so it's derived from the board slug (e.g. spotifySpotify).

Does it work if Lever is embedded in a company's own careers page? Yes — paste the careers-page URL and the actor fetches it and detects the underlying Lever slug. If a page loads jobs in a way that hides the slug entirely (rare), that link is reported as not_lever in the coverage report so you can spot it.

How do I know which of my links failed? Check the company-summary dataset (or RUN_SUMMARY.json). Every input link is listed with a status and, on failure, the reason — nothing is silently dropped.

Is the output in the same order as my input? Yes. Companies are emitted in the order you listed them; within a company, jobs follow Lever's own order. (Duplicate links to the same company are scraped once.)

Can I get every job in English? Yes — enable translateToEnglish. Lever has no server-side "force English" option (the API returns each job exactly as the company wrote it, and a single board can mix languages), so this auto-translates non-English titles/descriptions for free. Originals are preserved in titleOriginal / descriptionTextOriginal, and only non-English rows are translated.

Can it discover every company on Lever? No — Lever has no public directory of all boards (true for every ATS scraper). You supply the companies you care about.

How many jobs per company? Whatever they have open — use maxItems to cap total output and control cost.

How fresh is the data? Live — every run hits Lever in real time.


Support

Found a bug or need a field added? Open an issue on the actor's Issues tab in the Apify Console.


Additional services

Need a different ATS or job board? We also build scrapers for Ashby, Greenhouse, Workday, Indeed, LinkedIn, Glassdoor, and many more. Check our Apify Store profile.


Explore more scrapers

  • Ashby / Greenhouse / Lever Jobs Scrapers — open roles from those ATS platforms.
  • Workday Jobs Scraper — jobs from any Workday career site.
  • Indeed / LinkedIn / Glassdoor — the major job boards, fast and structured.

⚠️ Disclaimer

This actor collects only publicly available job-posting data exposed by Lever's own public postings API. It does not access private, authenticated, or personal data, and does not bypass any access control. You are responsible for using the scraped data in compliance with Lever's terms, the source companies' terms, and all applicable laws (including GDPR/CCPA). Use the data ethically and lawfully.


SEO Keywords

Lever scraper, Lever.co scraper, Lever jobs scraper, jobs.lever.co scraper, Lever postings API, Lever ATS scraper, scrape Lever jobs, Lever careers scraper, ATS job scraper, tech jobs scraper, startup jobs scraper, job postings API, company careers scraper, hiring data, recruiting data.