Lever Jobs Scraper & Salary API avatar

Lever Jobs Scraper & Salary API

Pricing

from $1.50 / 1,000 job listings

Go to Apify Store
Lever Jobs Scraper & Salary API

Lever Jobs Scraper & Salary API

Lever jobs scraper and API. Get every open position from any Lever job board (jobs.lever.co, EU-hosted included) as clean JSON: title, team, location, employment type, workplace type, pay range and full description. No proxies, pay per job.

Pricing

from $1.50 / 1,000 job listings

Rating

0.0

(0)

Developer

Aditya Sapra

Aditya Sapra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Lever Jobs Scraper turns any company's Lever job board into clean, structured data: one consistent JSON record per open position, with pay ranges where they exist. Use it as a Lever jobs API for job aggregators, recruiting and sales-intelligence tools, hiring-signal tracking and labour-market research.

It reads the public data behind Lever career pages, so it is fast and stable: no browser, no proxies, no blocked requests.

Not affiliated with, endorsed by or sponsored by Lever. "Lever" is used only to describe which public job boards this Actor reads.

What is it good for?

  • Job boards and aggregators: fill your board straight from company career pages.
  • Recruiting and talent teams: see which competitors are hiring for which roles, and where.
  • Sales and RevOps: hiring is a buying signal, so list the companies hiring for the roles your product serves.
  • Analysts and researchers: build salary benchmarks and labour-market trends from the pay ranges employers publish.

Try it in 30 seconds

  1. Press Start: the input is prefilled with real examples.
  2. Open the Output tab and download JSON, CSV or Excel.
  3. Replace the examples with your own and run again. You pay about $1.50 per 1,000 jobs.

A taste of the output

CompanyTitleLocationPay
LeverdemoCustomer Success ManagerAtlanta, Georgia85,000 to 175,000 USD/year

The full record has more fields; see the example output further down.

What does Lever Jobs Scraper do?

Give it Lever career-page links or company names and it returns every open position as JSON, CSV or Excel, or through the API. Filter by job-title keywords, location, department, employment type, remote only or posting date, and schedule it to receive only newly posted jobs.

What data can I scrape from Lever job boards?

  • title
  • department and team
  • location(s)
  • country
  • employment type (commitment)
  • workplace type (remote, hybrid, on-site)
  • pay range when the employer fills it in
  • posting date
  • full description

Every record uses the same fields across platforms, so you can combine this data with other job sources.

Example output

One record per job:

{
"id": "lever:leverdemo:ad208490-4052-4f91-a57e-433f2d1e484b",
"ats": "lever",
"companySlug": "leverdemo",
"companyName": "Leverdemo",
"title": "Customer Success Manager",
"department": "Customer Success",
"departments": [
"Customer Success"
],
"team": "Customer Success Team",
"location": "Atlanta, Georgia",
"locations": [
"Atlanta, Georgia"
],
"country": "US",
"workplaceType": "hybrid",
"isRemote": false,
"employmentType": "full_time",
"postedAt": "2026-08-31T18:12:19Z",
"updatedAt": null,
"url": "https://jobs.lever.co/leverdemo/ad208490-4052-4f91-a57e-433f2d1e484b",
"applyUrl": "https://jobs.lever.co/leverdemo/ad208490-4052-4f91-a57e-433f2d1e484b/apply",
"salary": {
"min": 85000,
"max": 175000,
"currency": "USD",
"interval": "year",
"summary": null,
"source": "api"
},
"description": "This is a test job - created by Alex Haugan, for testing candidate insights. Join a scaling, tight-knit team that’s working directly with i..."
}
FieldDescription
title, companyName, url, applyUrlBasics. companyName is taken from the platform where it is published, otherwise derived from the board name
department, departments, teamDepartment or team as published
location, locations, countryPrimary location, all locations, and country where the platform provides it
workplaceTyperemote, hybrid or onsite when the platform provides it
isRemotetrue if the role is remote, or lists a remote option among its locations
employmentTypefull_time, part_time, contract, internship, temporary or other (original in employmentTypeRaw)
postedAt, updatedAtISO 8601 UTC
salarymin, max, currency, interval (year, hour, ...), summary and source
description, descriptionHtmlFull job description as text and/or HTML
id, ats, companySlug, matchedByStable unique id, source platform, board name, and whether you gave an exact link (explicit) or a name we matched (slug-probe)

How is salary data handled?

  • Lever publishes a structured pay range (minimum, maximum, currency, interval) when the employer fills it in; that is passed through (salary.source = "api"). Otherwise the Actor looks for a range stated in the job text.
  • We only return a value when a currency, a range and a pay-related keyword are all present, and we leave it empty instead of guessing.
  • Values are exactly what the employer published. If a yearly range looks like it was typed without the "K" (for example 230 to 350), the record carries "suspect": true.

How do I scrape Lever jobs?

  1. Add companies, one per line. Any of these work:

    • https://jobs.lever.co/palantir
    • https://jobs.eu.lever.co/acme
    • lever:spotify
    • Short form: lever:spotify

    A plain company name or website (for example spotify.com) is also accepted: the Actor guesses the board name.

  2. Optionally filter by job title keywords, location, department, employment type, remote only or posting date.

  3. Run it, then download the data as JSON, CSV or Excel, or read it through the API.

How do I find a company's Lever board name?

Open the company's careers page. If its address looks like jobs.lever.co/<name> (or jobs.eu.lever.co/<name> for EU-hosted boards), <name> is the board name.

Example input

{
"companies": [
"https://jobs.lever.co/palantir",
"https://jobs.eu.lever.co/acme"
],
"keywords": [
"engineer",
"data"
],
"locations": [
"United States",
"Remote"
],
"postedWithinDays": 14,
"maxJobsTotal": 500
}

How do I get only new Lever jobs?

Turn on Only jobs not returned before and schedule the Actor (hourly, daily, ...). The first run returns everything and saves a baseline; every later run returns only openings that were not returned before for the same company list.

How much does it cost to scrape Lever jobs?

You pay per job returned: $0.0015 per job, about $1.50 per 1,000 jobs, plus a tiny fixed fee per run. Apify bills the platform usage of the run (compute) on top, which is normally a small fraction of the per-job price. Max jobs in total is a hard cap on the cost of a run, and the run also stops if it reaches the maximum charge you set in the run options. The Pricing tab always shows the current rate.

Can I use Lever Jobs Scraper through the API?

Yes. Like every Apify Actor it can be started from code, scheduled in the Apify Console, or connected to Make, Zapier, n8n, Google Sheets and webhooks through Apify integrations.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run_input = {
"companies": [
"https://jobs.lever.co/spotify",
"https://jobs.lever.co/leverdemo"
],
"keywords": [
"engineer"
],
"maxJobsTotal": 25
}
run = client.actor("cyborg_cell/lever-jobs-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const input = {
"companies": [
"https://jobs.lever.co/spotify",
"https://jobs.lever.co/leverdemo"
],
"keywords": [
"engineer"
],
"maxJobsTotal": 25
};
const run = await client.actor('cyborg_cell/lever-jobs-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL

curl -X POST "https://api.apify.com/v2/acts/cyborg_cell~lever-jobs-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://jobs.lever.co/spotify", "https://jobs.lever.co/leverdemo"], "keywords": ["engineer"], "maxJobsTotal": 25}'

FAQ

This Actor reads only the public job-postings data that Lever career pages publish so that employers can show their own openings. It does not log in to anything, bypass any protection or collect candidate or other personal data, and it sends modest, rate-limited requests. Laws and website terms differ by country and by use, so you are responsible for how you use the data. This is not legal advice.

Do I need proxies or a browser?

No. The data comes from public endpoints, so there is nothing to unblock and no browser to run.

Which companies does it work for?

Companies whose careers page runs on Lever. Companies on other platforms are not covered; if you need several platforms in one run, use the ATS Job Scraper (Greenhouse, Lever, Ashby, Workday and four more platforms).

What is not available on Lever?

Lever does not publish a last-updated date. isRemote is true when the role is remote or lists a remote option among its locations.

A company should work but does not. What now?

Open an issue on the Actor page with the company link and we will look at it.

Other Actors by the same author