Lever Jobs Scraper API - With Salaries, No Login avatar

Lever Jobs Scraper API - With Salaries, No Login

Pricing

from $1.20 / 1,000 jobs

Go to Apify Store
Lever Jobs Scraper API - With Salaries, No Login

Lever Jobs Scraper API - With Salaries, No Login

Scrape all open jobs from Lever job boards (jobs.lever.co) by company name, domain or URL (Palantir, Spotify), or search 1,500+ verified Lever boards by title, location, remote and minimum salary. Salaries, remote type, descriptions, new & closed job feed. No login. $1.50 per 1,000 jobs.

Pricing

from $1.20 / 1,000 jobs

Rating

0.0

(0)

Developer

HireWatch

HireWatch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Security

Limited permissions

Share

Lever Jobs Scraper API: jobs by company name, with salaries

Get all open jobs from any company's Lever job board (jobs.lever.co) as clean JSON, CSV or Excel, with no login and no API key. Type a company name (e.g. Palantir), a website domain (e.g. zoox.com) or the board URL, or search all 1,528 verified Lever boards at once by job title, location, remote and minimum salary. You get salary ranges where the company publishes them, remote / hybrid / on-site type, team and department, and full descriptions, and every run labels jobs new / unchanged / closed, so a daily schedule becomes a new-jobs feed. Works from the Apify API and from AI agents through MCP.

Independent tool: not affiliated with, endorsed by or sponsored by Lever (Employ Inc.). "Lever" is used only to describe which job boards this works with.

Two ways to use it

  1. Name the companies. Type company names, website domains or job-board URLs, and get every open job at those companies.
  2. Search all companies. Turn on searchAllCompanies and the Actor searches a built-in directory of 1,528 verified Lever job boards, biggest employers first, with your filters: title keywords, location, remote only, posted date and minimum salary. It works like a live job search API across company career sites. There's no cached database: every board is read at run time, so closed jobs never show up.
{
"searchAllCompanies": true,
"titleKeywords": ["account executive"],
"locationKeywords": ["Remote", "United States"],
"minSalary": 100000,
"salaryCurrency": "USD",
"postedWithinDays": 14,
"maxItems": 200
}
  • maxCompanies sets how many boards are searched (default 100, about 1–3 minutes). Raise it for wider coverage.
  • Search-all runs stop at maxItems matching jobs (500 if you leave it at 0) and output job rows only, without company summaries.
  • Every board in the directory was checked live against its public jobs API on 2026-10-20 and had at least one open job. Boards that close later are skipped and listed in RUN_REPORT, so they never fail the run.
  • For a daily new-jobs feed, schedule a search with "outputMode": "changesOnly". After the first run, each run returns only jobs that are new (or closed) since the previous one.

How to scrape Lever jobs

  1. Click Try for free (or Start) on this page. Apify's free plan includes monthly credit, so a first test costs nothing.
  2. In Companies, type company names, domains or careers-page URLs, e.g. Palantir and Spotify. Or leave it empty and turn on Search all companies.
  3. Optional: add title keywords, location keywords, remote only, posted within N days or a minimum salary.
  4. Click Start. Small runs finish in seconds; a whole large company takes a few minutes.
  5. Download the jobs as JSON, CSV, Excel or HTML, or read them through the API. Add a schedule to get new jobs every day.

What you can use it for

  • Sales and recruiting signals. See which companies are hiring, in which teams, and how fast.
  • Salary research. Lever's pay ranges come back as salaryMin, salaryMax, salaryCurrency and salaryInterval, plus a short salaryText such as "USD 157,000 - 245,000 per year".
  • Job boards and newsletters. Get complete listings straight from the source, with descriptions included.
  • Candidates. Get new roles at your target companies as soon as they're posted.

Why this Lever scraper

  • Company-name lookup. Palantir, Spotify and zoox.com all work. Names are matched against 1,528 verified boards first; otherwise the Actor tries the usual board spellings, then the company's /careers page.
  • Accepts any Lever link: jobs.lever.co/<company>, a link to a single job, EU boards (jobs.eu.lever.co/<company>), or a careers page that links to Lever.
  • Remote / hybrid / on-site from Lever's workplace type, plus team, department, commitment (full time, part time, contract) and all locations.
  • Filters: title keywords, location keywords, remote only, posted within N days, max jobs per company, and an overall maxItems cap.
  • New / closed tracking between runs, plus an optional hiring-signal summary per company: open jobs, new and closed jobs, trend, jobs posted in the last 7 and 30 days, top departments and locations.
  • Fast and polite. A whole board comes back in one request, and descriptions add no extra requests. It uses Lever's public postings API, needs no login, and respects robots.txt. Contact details are never collected, and e-mails and phone numbers in descriptions are masked.

Input examples

By company name, domain or URL:

{
"targets": ["Palantir", "zoox.com", "https://jobs.lever.co/spotify"],
"maxJobsPerCompany": 0
}

Engineering roles from the last 60 days, with descriptions:

{
"targets": ["Palantir", "Spotify", "Zoox"],
"titleKeywords": ["engineer"],
"postedWithinDays": 60,
"includeDescriptions": true
}

Daily change feed (schedule it daily):

{
"targets": ["Palantir", "Spotify", "Zoox"],
"maxJobsPerCompany": 0,
"outputMode": "changesOnly"
}

Output

One row per job (real example from a test run, trimmed):

{
"recordType": "job",
"platform": "lever",
"companySlug": "zoox",
"companyName": "Zoox",
"jobId": "7980e9a3-99f3-4988-ae6d-355c9199d8fb",
"globalId": "lever:zoox:7980e9a3-99f3-4988-ae6d-355c9199d8fb",
"title": "Body Structures Engineer",
"department": "Vehicle Development",
"team": "Body, Closures and Chassis",
"employmentType": "full_time",
"remoteType": "onsite",
"location": "Foster City, CA",
"country": "US",
"postedAt": "2026-09-10T20:41:07Z",
"salaryText": "USD 170,000 - 204,000 per year",
"salaryMin": 170000,
"salaryMax": 204000,
"salaryCurrency": "USD",
"salaryInterval": "year",
"url": "https://jobs.lever.co/zoox/7980e9a3-99f3-4988-ae6d-355c9199d8fb",
"changeStatus": "new",
"firstSeenAt": "2026-10-11T23:29:13Z"
}

Every row has the same fields (missing values are null), including applyUrl, locations, descriptionText and descriptionHtml. globalId stays the same across runs, so use it as your key. changeStatus is new, unchanged or closed (with closedAt). Optional company_summary rows hold the hiring signals, which are also saved as COMPANY_SUMMARIES. A per-company RUN_REPORT shows status and errors, such as a name with no matching board.

Pricing (pay per event)

  • $1.50 per 1,000 job records on the Free plan, $1.40 on Bronze, $1.30 on Silver and $1.20 on Gold and higher Apify plans (per job, including jobs labelled closed)
  • $0.01 per company summary (optional; turn off includeCompanySummary to skip it)

Examples: all ~310 Palantir jobs ≈ $0.48. 50 companies with ~100 jobs each ≈ $8. You pay only for results. Set Maximum cost per run (or maxItems) to cap spending.

Tips & limits

  • Name lookups use the built-in directory first, then check a few spellings (e.g. Scale AI → scaleai, scale-ai). If the board found isn't the one you meant, pass the URL instead. EU-hosted boards need the jobs.eu.lever.co URL.
  • Posted date is when the posting was created on Lever.
  • Closed jobs are only reported when the whole board was fetched in both runs, so use maxJobsPerCompany: 0 for tracking.

Use with AI agents / MCP

This Actor is built to be called by AI agents (Grok Bot, Claude, ChatGPT, Cursor, LangChain and others) through the Apify MCP server or the Apify API.

  • Add only this tool: https://mcp.apify.com?tools=hirewatch/lever-jobs-scraper. You can also let your agent find it through search-actors.
  • Keep calls small so they finish fast. The MCP call-actor tool waits up to 45 seconds, so set maxItems (e.g. 50) and maxJobsPerCompany (e.g. 100), and leave includeDescriptions off unless you need the text. Cap spend with maxTotalChargeUsd in callOptions.
  • Read results with get-dataset-items using the run's datasetId. Each row has recordType: job rows share one flat schema, and company_summary rows hold the hiring signals. Per-company errors are in the RUN_REPORT key-value record, so one bad input never fails the whole run.
  • Pay without an Apify account. The Actor uses pay-per-event pricing with limited permissions, so agents can pay per run with agentic payments (x402 / MPP prepaid tokens or Skyfire).

Job search across many companies (no company names needed; maxCompanies: 20 keeps it to roughly 30 seconds, inside the MCP 45-second wait):

{"searchAllCompanies": true, "titleKeywords": ["data engineer"], "remoteOnly": true, "maxCompanies": 20, "maxItems": 50}

Minimal agent call for named companies:

{
"targets": [
"Palantir"
],
"titleKeywords": [
"engineer"
],
"maxItems": 50,
"includeCompanySummary": false
}

Other HireWatch jobs Actors

ActorBest for
Workday Jobs ScraperWorkday career sites (*.myworkdayjobs.com) by company name or URL, including sites with more than 2,000 jobs
Greenhouse Jobs ScraperGreenhouse boards by company name or domain, with published salary ranges
Lever Jobs ScraperLever boards (jobs.lever.co) by company name or domain, with salaries and remote/hybrid type
Ashby Jobs ScraperAshby boards (jobs.ashbyhq.com), popular with startups and AI companies, with salary ranges
Workday, Greenhouse, Lever, Ashby & Oracle Jobs ScraperMixed lists across all five platforms in one run and one schema, plus job search across all of them
Website Tech Stack Detector + DMARC/SPF CheckerFind out what the hiring companies' websites are built with

All of them use the same output schema and the same new/closed tracking, so you can combine their datasets.

How much does it cost to scrape Lever jobs?

You pay only for job records in your dataset. There is no monthly fee and no charge for jobs your filters remove.

Job recordsFree plan ($1.50 / 1,000)Gold+ plans ($1.20 / 1,000)Typical use
100$0.15$0.12a quick check of one company
1,000$1.50$1.20every job at a few mid-size companies
10,000$15.00$12.00a weekly market-wide search
100,000$150.00$120.00a large job board backfill

Optional company summaries cost $0.01 each. Set Maximum cost per run in the run options (or maxItems) and the run stops cleanly at your budget.

Integrations and API

Run it from your own code, a no-code tool or a schedule:

  • Schedules: run daily or hourly from the Schedules tab, with "outputMode": "changesOnly" for a new-jobs feed.
  • No-code: Make, Zapier, n8n, Google Sheets, Slack, Airbyte and webhooks are available under Integrations.
  • Export: JSON, CSV, Excel, XML, RSS or HTML from the dataset, or stream rows through the API.
  • AI agents: use it as an MCP tool (see below).

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("hirewatch/lever-jobs-scraper").call(run_input={"targets": ["Palantir", "Spotify"], "maxItems": 100})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["location"], job["url"])

JavaScript / Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('hirewatch/lever-jobs-scraper').call({ targets: ['Palantir', 'Spotify'], maxItems: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL (runs the Actor and returns the jobs in one request):

curl -X POST "https://api.apify.com/v2/acts/hirewatch~lever-jobs-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"targets": ["Palantir"], "maxItems": 50}'

FAQ

How do I get all open jobs at a company? Put its name in targets, e.g. ["Palantir", "Spotify"], and set maxJobsPerCompany to 0. A careers-page URL or the company's website domain works too.

Can I search jobs without knowing the companies? Yes. Turn on searchAllCompanies and add title keywords, a location or a minimum salary. The Lever Jobs Scraper searches the built-in directory of verified boards.

Do I need a login, cookies or an API key for the job site? No. Only public job postings are read, the same data the company's careers page shows to every visitor.

Can I get only new jobs every day? Yes. Schedule the Actor with "outputMode": "changesOnly". Each run then returns jobs that are new or closed since the previous run.

Can I filter by salary? Yes. minSalary (yearly; hourly and monthly pay is converted, full time), salaryCurrency and onlyWithSalary keep only jobs that publish pay.

How do I use it from code or an AI agent? Call hirewatch/lever-jobs-scraper through the Apify API with the JSON input shown above or the Apify MCP server. See the AI agents section above.

Is there an official Lever jobs API? Lever has a public job-board feed for each customer's board, but you need the exact board name for every company and you get raw, platform-specific fields. This Actor finds the board from a company name, reads it, and returns one clean schema with salaries, filters and new/closed tracking.

How is this different from LinkedIn or Indeed scrapers? Jobs come straight from the employer's own careers site, so they are complete, up to date and free of reposts and recruiter spam, and closed jobs are flagged closed on the next run.

Can I export to Excel or Google Sheets? Yes. Download CSV or Excel from the dataset, or use the Google Sheets integration to append new jobs automatically.

It reads only publicly available job postings from Lever's public postings API, which employers use to publish their jobs. It does not log in or bypass any access control, and it follows robots.txt. Job postings are not personal data, but you are responsible for how you use the results and for following the laws and site terms that apply to you.

Support

A company that doesn't resolve, or a board that fails? Open an issue on the Issues tab.