Lever Jobs Scraper: Any Company's Job Board API avatar

Lever Jobs Scraper: Any Company's Job Board API

Pricing

from $1.20 / 1,000 job listings

Go to Apify Store
Lever Jobs Scraper: Any Company's Job Board API

Lever Jobs Scraper: Any Company's Job Board API

Get every open job from any company's Lever job board through the official public postings API: title, team, location, workplace type, pay range, posting date and description. Filter by keyword and location, and schedule it to get only new jobs. USD 1.50 per 1,000 jobs.

Pricing

from $1.20 / 1,000 job listings

Rating

0.0

(0)

Developer

JT Palms

JT Palms

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Lever Jobs Scraper: every open job from any company on Lever

Give it a list of companies that hire with Lever (Spotify, Palantir, Zoox and thousands more) and get back every open job as clean rows: title, department, team, locations, workplace type, remote flag, employment type, salary range, posting date, apply link and the description as plain text. It reads the official Lever Postings API, finds EU-hosted boards on its own, and needs no browser or proxy. Hundreds of jobs take a few seconds.

USD 1.50 per 1,000 jobs. Companies that cannot be found are reported free.

What people use it for

  • Sales signals from hiring. A company opening five data engineering roles is about to buy data tools. Pull the open jobs of your target accounts every week, filter by team or keyword, and send new roles to your CRM, Clay or Slack.
  • Job boards and newsletters. Fill a niche job board (remote, AI, fintech, climate) or a weekly jobs newsletter straight from the source, with salary ranges where the company publishes them and a direct apply link.
  • Recruiting market research. Compare hiring across competitors by department, team, location, workplace type and pay. Track how a company's open headcount changes over time.
  • Job alerts. Schedule it with Only new jobs turned on and receive only postings that appeared since the last run, for example "remote engineering jobs at these 50 companies".

Sample output

A real row (description trimmed):

{
"source": "lever",
"company": "zoox",
"companyName": null,
"jobId": "f4746da4-8eb8-43e2-b7ce-bf3c7cf9640d",
"title": "Autonomy System Test Engineer",
"department": "Software",
"team": "Software Platforms and Product",
"location": "Foster City, CA",
"locations": ["Foster City, CA"],
"workplaceType": "hybrid",
"isRemote": false,
"employmentType": "full_time",
"compensation": {
"min": 144000,
"max": 193000,
"currency": "USD",
"interval": "year",
"summary": "USD 144,000 - 193,000 per year"
},
"postedAt": "2026-05-04T23:11:01.125Z",
"updatedAt": null,
"jobUrl": "https://jobs.lever.co/zoox/f4746da4-8eb8-43e2-b7ce-bf3c7cf9640d",
"applyUrl": "https://jobs.lever.co/zoox/f4746da4-8eb8-43e2-b7ce-bf3c7cf9640d/apply",
"descriptionText": "Autonomous vehicles have some of the largest, most complex software ever shipped in a safety-critical environment. ...",
"scrapedAt": "2026-09-28T18:45:00.000Z"
}

Real runs: Palantir returned 321 jobs, Zoox 242 (229 with a salary range), SEB 140 from its EU board, Spotify 82.

How to use it

  1. Add companies to Companies, one per line. Any of these work:
    • a company name: spotify
    • a board URL: https://jobs.lever.co/spotify, https://jobs.eu.lever.co/seb
    • a job or apply URL: https://jobs.lever.co/palantir/6ed76ce8-4156-4b60-b120-403538bd66cd/apply
  2. Optionally narrow the results:
    • Title keywords: engineer, AI, /product (manager|owner)/
    • Locations: London, New York, Remote, or a country like Sweden
    • Remote jobs only
    • Departments: Engineering, Sales (matches department or team)
    • Posted within (days): 7
    • Max jobs per company: newest first
  3. Click Start, then export as CSV, JSON or Excel, or read the dataset through the Apify API.

Finding the company name. Open the company's careers page and click a job. If the address starts with jobs.lever.co/<name> or jobs.eu.lever.co/<name>, that is the name.

Job alerts on a schedule

  1. Turn on Only new jobs and set your filters.
  2. Save the input as a task and add a schedule (daily or weekly).
  3. Connect the results to email, Slack, Google Sheets or a webhook in the task's Integrations tab.

The first run returns all matching jobs. Every later run returns only jobs that were not delivered before.

Input

FieldWhat it does
companiesCompany names or careers page URLs. Required.
keywordsKeep jobs whose title matches any keyword. Words match at their start (engineer finds "Engineering"); keywords of 3 letters or fewer must be a whole word (AI does not match "Chair"). /regex/ is supported.
locationsKeep jobs whose location or country contains any of these texts.
remoteOnlyKeep only jobs that can be done remotely.
departmentsKeep jobs whose department or team contains any of these texts.
postedWithinDaysKeep jobs created in the last N days. 0 = any date.
maxJobsPerCompanyNewest jobs first, at most this many per company. 0 = no limit.
onlyNewJobsOutput only jobs not delivered by an earlier run (see FAQ).
includeDescriptionAdd the description, its lists (responsibilities, requirements) and closing text as plain text, up to 5,000 characters. Default on.
maxConcurrencyCompanies fetched in parallel. Default 5.

Output fields

FieldNotes
companyThe Lever company name. companyName is null: the Lever API does not return a display name.
jobId, titleLever posting ID and title.
department, teamAs the company categorizes the job.
location, locationsThe main location, and all locations when the job lists several.
workplaceType, isRemoteremote, hybrid, onsite or null (Lever's own field). isRemote is also true when a location or the title says remote.
employmentTypefull_time, part_time, contract, temporary, internship or null, mapped from Lever's commitment field ("Permanent", "Fixed-Term", "Intern" and so on).
compensationmin, max, currency, interval, summary, when the company publishes a salary range.
postedAtWhen the posting was created, ISO 8601 in UTC. updatedAt is null (not in the API).
jobUrl, applyUrlThe Lever job page and application form.
descriptionTextPlain text, HTML removed, capped at 5,000 characters.
errorOnly on rows for companies that could not be read. These rows are free.

A SUMMARY record in the run's key-value store lists every company with its number of open jobs, matches, new jobs and errors.

Pricing

WhatPrice
Job listing in the resultsUSD 0.0015 (USD 1.50 per 1,000)
Company not found, wrong URL, or unreadable boardFree

Example: 20 companies with 150 open jobs each is 3,000 jobs, USD 4.50. With Only new jobs on a daily schedule you pay only for new postings, usually a few cents a day.

Set a maximum cost per run in the run options and the actor stops cleanly when it gets there; everything saved so far stays in the dataset. Max jobs per company also caps the spend on very large boards.

Limits

  • The actor identifies itself. Every request carries the user agent Mozilla/5.0 (compatible; lever-jobs/1.0; +https://apify.com/JTPalms/lever-jobs), with plain request headers. It never pretends to be a browser. Some sites block bots; a blocked request is reported as an error, not hidden.
  • Only jobs the company publishes on its Lever board. Internal or unlisted postings are not in the API.
  • Salary ranges appear only when the company adds them to the posting.
  • Some companies use Lever's commitment field for something else (for example a job family). Those values are not guessed, so employmentType stays null.
  • A company whose board exists but has no open postings returns no rows and a note in SUMMARY. Companies that moved to another system return a not-found row. Use the Greenhouse Jobs Scraper or Ashby Jobs Scraper for companies on those platforms; they give the same output format.

FAQ

Is it legal? Yes. The actor reads Lever's official Postings API (api.lever.co and api.eu.lever.co), the public, no-login feed Lever provides so companies can publish their open jobs on careers sites and syndicate them to job boards. It only sees published job postings. It collects no personal data, and it does not log in or submit anything. If you republish jobs, link to the applyUrl or jobUrl so candidates apply with the company.

How does Only new jobs work? The actor keeps, per company, the IDs of the jobs it has already delivered, in a key-value store named lever-jobs-monitor in your own Apify account. Each run outputs only matching jobs whose ID is not in that list, then adds them. Jobs left out only by Max jobs per company are marked as seen too, so they do not come back later. Jobs cut off by your cost limit stay new for the next run. Closed jobs are dropped from the list automatically. If you add a filter later, older jobs that now match and were never delivered are delivered once. To start over, delete the store in Storage.

Does it work with EU boards? Yes. Give the jobs.eu.lever.co URL, or just the name: when a company is not on the global host the actor checks the EU host automatically.

Why is companyName empty? The Lever Postings API has no company display name, only the board name in company.

Something missing or wrong? Open an issue with the company name and what you expected.

Is this an official Lever product? No. It is an independent tool that reads Lever's public postings API. It is not affiliated with or endorsed by Lever.