Lever Jobs Scraper & Hiring Signals
Pricing
from $0.30 / 1,000 job postings
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
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 ajobs.lever.coorjobs.eu.lever.coURL. - 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.
- Remote Product Jobs
- EMEA Hiring Monitor
- Support Jobs
- Data Analytics Jobs
- Devrel Jobs
- Company Expansion Monitor
- View all ready-to-run examples (30 examples)
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/spotifyor ahttps://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
daysBackwindow. - Monitor recent hiring: Schedule a task with
daysBackto 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.
| Field | Description |
|---|---|
companySlug | Lever company slug supplied in the input |
jobId | Lever posting identifier |
title | Job title |
hostedUrl | Public Lever job page |
applyUrl | Application URL |
location | Job location category |
allLocations | Every location published for the role |
normalizedLocation | Whitespace-normalized primary location |
department | Department category |
team | Team category |
workType | Commitment or work type |
workplaceType | Remote, hybrid, or workplace category when available |
isRemote | Normalized boolean derived from workplace type and locations |
country | Country field when available |
createdAt | Posting creation time in ISO format |
ageDays | Whole days between creation and collection |
openingPlain | Plain-text opening section |
descriptionPlain | Plain-text job description |
descriptionHtml | Optional HTML description |
lists | Structured sections with original and plain text content |
requirementsPlain | Requirement-like sections combined for matching |
benefitsPlain | Benefit/perk sections combined for matching |
salaryRange | Lever's structured currency, interval, minimum, and maximum |
salaryDescriptionPlain | Published salary explanation when available |
leverRegion | global or eu source region |
additionalPlain | Additional plain-text content |
scrapedAt | Time 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.
| Charge | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| 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
| Setting | JSON key | Use it for | Example |
|---|---|---|---|
| Lever company slugs | companySlugs | Required list of company slugs or Lever board URLs. | ["spotify"] |
| Maximum job postings | limit | Cap saved job rows and spend across all companies. | 25 |
| Maximum per company | maxJobsPerCompany | Prevent one board from dominating a multi-company export. | 50 |
| Collection mode | collectionMode | Keep sequential behavior or interleave companies fairly. | "balanced" |
| Keyword | keyword | Match title, descriptions, openings, and structured sections. | "machine learning" |
| Departments | departments | Keep roles in matching Lever departments. | ["Engineering"] |
| Locations | locations | Keep roles whose location contains the value. | ["Remote"] |
| Teams | teams | Keep roles in matching Lever teams. | ["Platform"] |
| Work types / commitments | workTypes | Keep full-time, part-time, internship, contract, or similar commitments. | ["Full-time"] |
| Workplace types | workplaceTypes | Keep remote, hybrid, on-site, or unspecified roles. | ["remote"] |
| Recent days | daysBack | Keep roles created within a rolling monitoring window. | 7 |
| Created after | createdAfter | Keep roles on or after an ISO date/time. | "2026-07-01" |
| Include HTML descriptions | includeDescriptionHtml | Add 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
- Open the Actor on Apify.
- Add one or more Lever company slugs.
- Set
limitto the number of jobs you want to save. - Add optional keyword, department, team, location, work-type, workplace, or date filters.
- Choose whether to include HTML descriptions.
- Start the run and download the dataset.
Search tips
- Use the exact slug: For
https://jobs.lever.co/spotify, usespotify. - Paste EU URLs: A full
jobs.eu.lever.coURL is required to select Lever's EU API; a plain slug remains global for backward compatibility. - Balance batches: Choose
balancedwhen a fixed limit should include several companies. - Monitor with a window: Match
daysBackto a task's schedule, such as 2 days for a daily task with overlap. - Start small: Test one company with
limit: 20before 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, orNew Yorkare 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 asEMPTY_FILTEREDinRUN_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 ApifyClientimport osclient = 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().itemsprint(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.
Related Actors
- Greenhouse Job Board Scraper
- Workday Jobs Scraper
- SmartRecruiters Jobs Scraper
- LinkedIn Jobs Scraper
- RemoteOK Jobs Scraper
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.