Lever Jobs Scraper & Hiring Signals avatar

Lever Jobs Scraper & Hiring Signals

Pricing

from $0.30 / 1,000 job postings

Go to Apify Store
Lever Jobs Scraper & Hiring Signals

Lever Jobs Scraper & Hiring Signals

Export public global and EU Lever jobs with salary ranges, remote status, all locations, descriptions, requirements, benefits, recency, departments, teams, and direct application URLs.

Pricing

from $0.30 / 1,000 job postings

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Lever Jobs Scraper

Export public jobs from global and EU Lever career pages, including salaries, remote status, all published locations, descriptions, structured requirements and benefits, recency, departments, teams, and direct application links.

Use this Actor to monitor company hiring, collect Lever job descriptions, build job-board feeds, enrich account research, and automate recruiting or labor-market workflows. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Global and EU boards: Enter a slug such as spotify, or paste a jobs.lever.co or jobs.eu.lever.co URL.
  • Richer job rows: Export salaries, remote flags, country codes, every published location, openings, requirements, benefits, descriptions, and application URLs.
  • Useful filters: Narrow by keyword, department, team, location, work type, workplace type, date, or rolling age.
  • Fair multi-company collection: Optionally interleave results so a large first company cannot consume the whole output limit.
  • Hiring signals: Track which companies are opening roles, where teams are growing, and which functions are active.
  • API export: Send Lever job data to spreadsheets, CRMs, BI tools, job boards, alerts, or AI agents.

Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

What can it do?

Lever Jobs Scraper collects public roles from companies that publish openings on Lever and saves one dataset row per job posting.

  • Scrape one or many companies: Use a single slug or a list of target company slugs.
  • Reuse global or EU URLs: Paste https://jobs.lever.co/spotify or a https://jobs.eu.lever.co/... board URL; the correct public API region is selected automatically.
  • Filter public roles: Limit results by keyword, department, team, any published location, commitment, workplace type, exact date, or rolling daysBack window.
  • Monitor recent hiring: Schedule a task with daysBack to collect only newly posted roles in the chosen window.
  • Export descriptions: Save plain-text descriptions and optionally original HTML descriptions.
  • Build repeatable workflows: Run one-off exports or schedule recurring company monitoring.

Common workflows

  • Recruiting research: Monitor roles at target companies, competitors, or talent pools.
  • Sales lead generation: Identify companies expanding departments that match your product or service.
  • Job-board ingestion: Collect public Lever postings for review and downstream publishing.
  • Labor-market analysis: Compare hiring patterns across companies, functions, teams, and regions.
  • Account enrichment: Add current open roles to CRM account profiles and sales research.
  • AI matching: Feed clean job descriptions into matching, classification, or alerting pipelines.

What data can you extract?

The Actor returns one dataset row per public Lever job posting.

FieldDescription
companySlugLever company slug supplied in the input
jobIdLever posting identifier
titleJob title
hostedUrlPublic Lever job page
applyUrlApplication URL
locationJob location category
allLocationsEvery location published for the role
normalizedLocationWhitespace-normalized primary location
departmentDepartment category
teamTeam category
workTypeCommitment or work type
workplaceTypeRemote, hybrid, or workplace category when available
isRemoteNormalized boolean derived from workplace type and locations
countryCountry field when available
createdAtPosting creation time in ISO format
ageDaysWhole days between creation and collection
openingPlainPlain-text opening section
descriptionPlainPlain-text job description
descriptionHtmlOptional HTML description
listsStructured sections with original and plain text content
requirementsPlainRequirement-like sections combined for matching
benefitsPlainBenefit/perk sections combined for matching
salaryRangeLever's structured currency, interval, minimum, and maximum
salaryDescriptionPlainPublished salary explanation when available
leverRegionglobal or eu source region
additionalPlainAdditional plain-text content
scrapedAtTime the Actor saved the item

Pricing

This Actor uses pay-per-event pricing: a small fee when a valid run starts, plus one event for each job row actually saved. Filtering happens before job rows are saved, so unmatched jobs are not charged as items.

ChargeFreeBronzeSilverGoldPlatinumDiamond
Run start (once per valid run)$0.005$0.005$0.005$0.005$0.005$0.005
1,000 saved job postings$0.575$0.50$0.39$0.30$0.20$0.14

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

Input configuration

SettingJSON keyUse it forExample
Lever company slugscompanySlugsRequired list of company slugs or Lever board URLs.["spotify"]
Maximum job postingslimitCap saved job rows and spend across all companies.25
Maximum per companymaxJobsPerCompanyPrevent one board from dominating a multi-company export.50
Collection modecollectionModeKeep sequential behavior or interleave companies fairly."balanced"
KeywordkeywordMatch title, descriptions, openings, and structured sections."machine learning"
DepartmentsdepartmentsKeep roles in matching Lever departments.["Engineering"]
LocationslocationsKeep roles whose location contains the value.["Remote"]
TeamsteamsKeep roles in matching Lever teams.["Platform"]
Work types / commitmentsworkTypesKeep full-time, part-time, internship, contract, or similar commitments.["Full-time"]
Workplace typesworkplaceTypesKeep remote, hybrid, on-site, or unspecified roles.["remote"]
Recent daysdaysBackKeep roles created within a rolling monitoring window.7
Created aftercreatedAfterKeep roles on or after an ISO date/time."2026-07-01"
Include HTML descriptionsincludeDescriptionHtmlAdd original HTML description fields when formatting matters.false

Example input

{
"companySlugs": ["spotify", "https://jobs.eu.lever.co/example"],
"limit": 50,
"collectionMode": "balanced",
"keyword": "data",
"departments": ["Engineering"],
"locations": ["Remote"],
"daysBack": 30,
"includeDescriptionHtml": false
}

Example output

{
"companySlug": "spotify",
"jobId": "abc123",
"title": "Data Engineer",
"hostedUrl": "https://jobs.lever.co/spotify/...",
"applyUrl": "https://jobs.lever.co/spotify/.../apply",
"location": "New York",
"team": "Platform",
"department": "Engineering",
"workType": "Full-time",
"commitment": "Full-time",
"workplaceType": "remote",
"isRemote": true,
"country": "US",
"createdAt": "2026-06-20T00:00:00.000Z",
"ageDays": 2,
"salaryRange": {
"currency": "USD",
"interval": "year",
"min": 120000,
"max": 160000
},
"descriptionPlain": "About the role...",
"scrapedAt": "2026-06-20T05:00:00.000Z"
}

How to run it

  1. Open the Actor on Apify.
  2. Add one or more Lever company slugs.
  3. Set limit to the number of jobs you want to save.
  4. Add optional keyword, department, team, location, work-type, workplace, or date filters.
  5. Choose whether to include HTML descriptions.
  6. Start the run and download the dataset.

Search tips

  • Use the exact slug: For https://jobs.lever.co/spotify, use spotify.
  • Paste EU URLs: A full jobs.eu.lever.co URL is required to select Lever's EU API; a plain slug remains global for backward compatibility.
  • Balance batches: Choose balanced when a fixed limit should include several companies.
  • Monitor with a window: Match daysBack to a task's schedule, such as 2 days for a daily task with overlap.
  • Start small: Test one company with limit: 20 before adding many companies.
  • Filter lightly first: Empty filters return the full board; add filters after you confirm the company slug works.
  • Use partial locations: Values like Remote, London, or New York are often enough.
  • Enable HTML only when needed: Plain text is easier for CSV, matching, and analytics.

Limits and caveats

  • The Actor extracts public Lever job postings only.
  • It does not access private, internal, draft, or login-gated openings.
  • Filter values depend on the categories each company publishes on its Lever board.
  • Some optional fields are empty when the company does not publish that data.
  • An empty board is reported as EMPTY_SOURCE; a board with jobs excluded by filters is reported as EMPTY_FILTERED in RUN_SUMMARY.

Integrations

You can connect Lever job data to downstream tools:

  • Send CSV or Excel exports to spreadsheets for hiring reports.
  • Trigger Slack, email, or webhook alerts after scheduled runs.
  • Enrich CRM accounts with current openings and department growth signals.
  • Load JSON rows into a database, warehouse, or BI dashboard.
  • Combine Lever outputs with other ATS scrapers for broader company monitoring.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/lever-jobs-scraper').call({
companySlugs: ['spotify'],
limit: 25
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/lever-jobs-scraper').call(run_input={
'companySlugs': ['spotify'],
'limit': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~lever-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"companySlugs":["spotify"],"limit":25}'

Apify CLI

$apify call fetch_cat/lever-jobs-scraper -p '{"companySlugs":["spotify"],"limit":25,"daysBack":30}'

MCP and AI agents

This Actor can be used through the official Apify MCP server at https://mcp.apify.com.

For a focused single-Actor tool setup, use:

https://mcp.apify.com?tools=fetch_cat/lever-jobs-scraper

Use the same JSON keys shown in the input configuration table, such as companySlugs, limit, departments, locations, teams, and workTypes.

Example MCP client configuration:

{
"mcpServers": {
"leverJobs": {
"url": "https://mcp.apify.com?tools=fetch_cat/lever-jobs-scraper"
}
}
}

Claude Code CLI:

$claude mcp add --transport http lever-jobs 'https://mcp.apify.com?tools=fetch_cat/lever-jobs-scraper'

Example prompts:

  • "Run the Lever scraper for these five company board URLs, balance the output, and return remote engineering roles posted in the last 14 days."
  • "Export salary-bearing Lever product roles in Europe and summarize the hiring signals by company."

FAQ

Can I scrape multiple Lever companies in one run?

Yes. Add multiple values to companySlugs and set a limit that matches the size of the run you want.

What is a Lever company slug?

It is the part after jobs.lever.co/ in a public Lever board URL. For https://jobs.lever.co/spotify, the slug is spotify.

Can I export Lever jobs to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, HTML, or accessed through the API.

Why did I get zero results?

Open RUN_SUMMARY. EMPTY_SOURCE means Lever returned a valid empty board; EMPTY_FILTERED means the board had jobs but none matched. Check the slug or region, remove strict filters, and test with a small limit.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses job-search inputs and public job-posting results to produce the output dataset and sends requests to public Lever Jobs pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.