Lever Jobs Scraper
Pricing
from $1.50 / 1,000 jobs
Lever Jobs Scraper
Returns every open job from a company's Lever job board, for job boards, recruiters and hiring research: title, department, team, locations, workplace type, salary range when published, description and apply link. Paste a board URL or company name. Can return only postings new since the last run.
Pricing
from $1.50 / 1,000 jobs
Rating
0.0
(0)
Developer
Enis Bodlli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Get every open job from a company's Lever job board as clean, structured data: title,
department, team, all locations, workplace type, employment type, salary range when published, full
description and apply link. Paste a board address such as https://jobs.lever.co/palantir, or
just the board name. The easiest way to try it is to keep the example input and press Start: you
get the first 25 jobs from two example boards.
The Actor reads the postings endpoint Lever offers for showing a company's jobs on other sites. It does not use a browser or proxies, so runs are fast and stable. Boards hosted on Lever's EU site work too.
What you can do with Lever job data
- Monitor companies for new openings. Turn on Only jobs that are new since the last run, add a schedule, and each run returns just the postings that appeared since the previous one.
- Build a remote or hybrid job list. Lever states the workplace type of a posting as remote, hybrid or on-site, so you can filter on it instead of guessing from the location text.
- Track hiring as a signal. Department and team show which groups a company is growing, for sales prospecting, investing or competitor research.
- Feed an AI agent or a spreadsheet with current job postings in one fixed format.
How to scrape Lever job postings
- Add one entry per company under Lever job boards. Any of these work:
- a board address:
https://jobs.lever.co/palantir, or the same onjobs.eu.lever.cofor a board hosted in the EU - the address of a single job on a board; the Actor reads the whole board
- a company careers page that links to a Lever board
- just the board name:
palantir
- a board address:
- Optionally narrow the results with title keywords, location keywords or Remote jobs only.
- Run the Actor and export the results as JSON, CSV or Excel, or read them through the API.
The board name is the word after jobs.lever.co/ in the address of a company's job pages. A plain
name is looked up on the global Lever site first and on the EU site second.
How much does it cost to scrape Lever jobs?
You pay per job returned: $2.50 per 1,000 jobs ($0.0025 each) on the Free and Starter (Bronze) plans, $2.00 on Scale (Silver) and $1.50 on Business (Gold) and above, plus $0.00005 per run start. Platform usage is included, so there is nothing else to pay.
- 30 boards with 20 open jobs each: 600 jobs, $1.50.
- One large board with 900 open jobs: $2.25.
- Daily monitoring with Only jobs that are new since the last run: you pay only for new postings. 15 new jobs a day is about $0.04 a day.
- A run that finds nothing new costs $0.00005.
You can set a maximum charge per run. The Actor stops when it is reached, and the jobs it held back are returned by a later run.
Input
| Field | What it does |
|---|---|
| Lever job boards | Board addresses, careers pages that link to a board, or board names. Required. |
| Title keywords | Keep jobs whose title contains any of these. Not case sensitive. |
| Location keywords | Keep jobs with a location that contains any of these. Not case sensitive. |
| Remote jobs only | Keep only jobs whose workplace type is remote. |
| Exclude title keywords | Drop jobs whose title contains any of these. |
| Department keywords | Keep jobs whose department or team contains any of these. |
| Employment types | Keep full-time, part-time, contract, temporary or internship jobs. Jobs whose type the job system does not state are kept. |
| Seniority levels | Keep jobs whose title states one of the chosen ranks, such as senior, staff or director. |
| Posted within days | Keep jobs published in the last N days. |
| Only jobs with a salary | Keep jobs that state pay. |
| Include job description | Add the description as plain text and HTML. Default: on. |
| Only jobs that are new since the last run | Return only postings that appeared since the previous run. |
| Monitor name | A name for this search's memory of seen jobs, so two searches on the same company do not share it. |
| Maximum jobs per company | Stop after this many jobs for each board. 0 means no limit. |
Example:
{"companies": ["https://jobs.lever.co/palantir", "spotify"],"titleKeywords": ["engineer"],"locationKeywords": ["london", "stockholm"],"remoteOnly": false,"maxJobsPerCompany": 50}
Output
One item per job posting. Two items from test runs, with the descriptions shortened:
[{"company": "spotify","companyName": null,"ats": "lever","jobId": "2193db3f-77c5-43b8-b030-8f92c9882bf1","title": "Android Engineer - Experience","seniority": null,"department": "Engineering","team": "Experience","location": "London","locations": ["London","Stockholm"],"isRemote": false,"workplaceType": "hybrid","employmentType": "full_time","employmentTypeText": "Permanent","salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryInterval": null,"salaryText": null,"salarySource": null,"publishedAt": "2026-06-23T11:29:45.805Z","updatedAt": null,"jobUrl": "https://jobs.lever.co/spotify/2193db3f-77c5-43b8-b030-8f92c9882bf1","applyUrl": "https://jobs.lever.co/spotify/2193db3f-77c5-43b8-b030-8f92c9882bf1/apply","descriptionText": "We design Spotify’s consumer experience—end to end, moment to moment, across every screen ...","descriptionHtml": "<div> <p>We design Spotify’s consumer experience—end to end, moment to ...","scrapedAt": "2026-10-04T11:37:03.781Z"},{"company": "palantir","companyName": null,"ats": "lever","jobId": "d33e0c31-ac7e-4f57-ba74-36f2df6ae2f5","title": "Backend Software Engineer - Defense","seniority": null,"department": null,"team": "Dev","location": "New York, NY","locations": ["New York, NY"],"isRemote": false,"workplaceType": "onsite","employmentType": "full_time","employmentTypeText": "Full-time","salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryInterval": null,"salaryText": null,"salarySource": null,"publishedAt": "2025-02-24T22:19:35.088Z","updatedAt": null,"jobUrl": "https://jobs.lever.co/palantir/d33e0c31-ac7e-4f57-ba74-36f2df6ae2f5","applyUrl": "https://jobs.lever.co/palantir/d33e0c31-ac7e-4f57-ba74-36f2df6ae2f5/apply","descriptionText": "A World-Changing Company Palantir builds the world’s leading software for data-driven ...","descriptionHtml": "<div><strong><span style=\"font-size: 18px;\">A World-Changing Company ...","scrapedAt": "2026-10-04T11:43:01.862Z"}]
A field is null when Lever does not provide it. What to expect from a Lever board:
| Field | What Lever provides |
|---|---|
company | The board name, for example spotify. |
companyName | Always null. Lever sends no display name. |
jobId | The Lever posting ID. |
department, team | Both, when the company fills them in. Some companies use only the team. |
location, locations | The main location, then every other location of the posting. |
isRemote, workplaceType | From Lever's workplace type: remote, hybrid or onsite. Both are null when the company left it unspecified. |
employmentType | The commitment as the company wrote it, for example Full-time or Permanent. |
| Salary fields | Minimum, maximum, currency, interval and a text summary when the company publishes a salary range on the posting. Otherwise null. |
publishedAt | When the posting was created. |
updatedAt | Always null. |
descriptionText, descriptionHtml | The opening text, the requirement lists and the closing section, joined in the order they appear on the posting. |
How to monitor a Lever job board for new jobs
Turn on Only jobs that are new since the last run and put the Actor on a schedule. It keeps the
IDs of the jobs that were open on the previous run in a key-value store named
lever-jobs-scraper-state in your account, and returns only postings whose ID is not in that list.
The first run returns everything. Delete that store to start over.
Postings held back by Maximum jobs per company, or by the maximum charge you set for a run, are not marked as seen, so a later run returns them.
Each board has its own record, saved as soon as its jobs are stored, so a run that is stopped halfway does not report the same jobs as new the next time. Runs started from different saved tasks keep separate memories; set Monitor name to keep several searches apart within one task or through the API. If a board that had postings suddenly returns none, the list is kept as it was.
Limits
-
Lever gives no company display name and no updated date.
-
Salary is filled only where the company publishes a salary range on the posting. In a test run on two boards, none of the 50 postings had one.
-
Remote jobs only uses the workplace type. A posting with "Remote" in its location text but no workplace type is not kept; use a location keyword such as
remoteto catch those. -
Postings are read 100 at a time, up to 10,000 per board.
-
A careers page on the company's own domain works when its HTML links to the Lever board. Pages that load the board only through JavaScript may not be detected; use the board address in that case.
-
No AI-written fields. Skills, benefits, visa sponsorship and requirement summaries are not returned; seniority, employment type and pay are read by fixed rules from what the posting states.
-
No company profile from LinkedIn or Crunchbase (size, industry, funding) and no hiring-manager name or email. The Actor returns what the company publishes on its own job board, and no personal data.
-
Seniority comes from words in the title (senior, staff, lead, director and so on). A title that states no rank has no seniority, and level numbers such as II or L4 are not interpreted, because they mean different ranks at different companies.
-
When the job system publishes no pay figures, the Actor reads a pay range from the description if one is written there, and sets
salarySourcetodescription. Bonuses, budgets and single figures are not read as pay. -
Changing a filter does not bring back postings an earlier run already marked as seen. Use a new Monitor name for a new search.
FAQ
A company was "not found". Why?
The name did not match a Lever board on the global or the EU site. Open the company's careers page,
click a job, and check the address. If it contains jobs.lever.co or jobs.eu.lever.co, paste
that address instead of the name. If it does not, the company may use a different system.
The Actor says my URL runs on another system. Why? This Actor reads Lever only. A Greenhouse, Ashby or Workday address is reported as a failed company; see Other systems below.
The board was found but returned 0 jobs. The company has a Lever board with nothing open on it right now. The run still succeeds.
Is it legal to scrape Lever job postings? The Actor reads public job postings through the endpoint Lever offers for displaying a company's jobs on other sites. It collects no personal data. You are responsible for how you use the results.
Something broke or a field is missing. Open an issue on the Issues tab with the company you ran. Fixes usually ship within two days.
What happens if a run is interrupted?
Progress is saved after every batch of jobs. If Apify moves or restarts the run, it continues where it
stopped, and no job is stored or charged twice. Every run also writes a RUN_SUMMARY record to its
key-value store with the result for each company: saved, not found or failed, and why. You pay for the
jobs a run stored, whether or not it finished; a company that failed or was not reached costs nothing.
Other systems
For Workday, Greenhouse, Lever and Ashby together in one run and one format, use ATS Job Postings by the same developer. It accepts the same addresses and returns the same fields.
More Actors from this developer
Jobs:
- Company Jobs Search
- ATS Job Postings: Workday, Greenhouse, Lever & Ashby
- Workday Jobs Scraper
- Greenhouse Jobs Scraper
- Ashby Jobs Scraper
Company registers:
- Handelsregister Scraper: German Company Register
- North Data Scraper: German & European Companies
- European Company Registry Search
- US Business Entity Search & New Business Filings
- Brazil CNPJ Scraper: Company Search & Lookup
Contacts and lists: