Lever Jobs Scraper - Postings, Salary & Apply Links
Pricing
from $2.00 / 1,000 results
Lever Jobs Scraper - Postings, Salary & Apply Links
Scrape every open role from any company's Lever (jobs.lever.co) board: title, team, department, location, remote/hybrid/onsite, salary, full description & direct apply URL. No API key, no login. Filter by keyword, location, team, workplace type & country.
Lever Jobs Scraper — Postings, Salary, Locations & Apply Links
Extract every open role from any company's Lever careers board in one fast, reliable run. This high-performance Lever jobs scraper ingests public company career boards hosted on Lever (jobs.lever.co) and extracts flat, structured job records — including job title, hiring team, department, location, workplace arrangement (remote, hybrid, on-site), compensation bands, full job description text, structured requirements, and direct one-click apply links.
Export every posting directly to JSON, CSV, Excel, or consume via REST API and Webhooks.
Built for technical recruiters, executive search agencies, job aggregators, HR-tech platforms, compensation analysts, sales intelligence teams, and private equity investors monitoring hiring signals and talent velocity across tech companies worldwide.
⚡ At a glance
| Feature | Specification |
|---|---|
| Target ATS | Lever.co (jobs.lever.co/{company}) |
| Input Methods | Company slugs (spotify, ro, gopuff) or full Lever board URLs |
| Data Formats | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS |
| Speed & Runtime | Direct lightweight HTTP (~500 postings processed in 2–4 seconds) |
| Default Concurrency | 5 parallel company boards (configurable up to 15) |
| Deep Pagination | Automatic batch pagination (500 per call, 1,000+ roles unlocked) |
| Proxy Requirement | Apify Datacenter Proxy (anti-rate-limiting IP distribution) |
| Deduplication | Automatic deduplication across unique job posting IDs |
| Salary Intelligence | Dual-mode: Structured ATS ranges + NLP pay band regex extraction |
🔎 Why scrape Lever career boards?
Lever is among the most widely adopted enterprise applicant tracking systems (ATS) globally, powering the career sites of thousands of fast-growing startups, technology unicorns, and publicly traded organizations. Every company's board represents a real-time index of corporate growth priorities and headcount allocations:
- Hiring Signals & Expansion Clues: Which teams (Engineering, Sales, Product, AI Research) are adding headcount, and which locations are receiving executive budget.
- Pay Transparency & Compensation Benchmarking: Live salary ranges disclosed under mandatory US and EU pay transparency statutes (California, New York, Colorado, Washington, EU Pay Transparency Directive).
- Skill Requirements & Tech Stack Insights: Deep job description texts reveal exact programming languages, frameworks, cloud vendors, and tooling used internally.
- Remote vs. On-Site Workforce Policies: Detailed tracking of remote flexibility, hybrid schedules, and mandatory in-office hubs.
Because Lever does not offer a unified global search directory across all tenant companies, individual boards must be accessed per company slug. This Lever scraper eliminates the manual toil by ingesting hundreds of company slugs in parallel, normalizing every posting into a unified data schema.
Key business use cases
- 🎯 Headhunting & Talent Sourcing: Continuously monitor competitor career pages to identify newly opened leadership and engineering roles for recruitment poaching.
- 💼 Job Board Syndication & Aggregation: Ingest live, verified job listings directly from corporate ATS boards into niche job boards without expired postings.
- 💰 Labor Economics & Salary Benchmarking: Extract and normalize base salaries, hourly rates, and equity bands across tech job titles and geographic regions.
- 🔍 B2B Sales Prospecting & Account-Based Marketing: Detect buying intent by tracking companies hiring for roles that manage or implement specific enterprise software categories.
- 📈 Venture Capital & Market Intelligence: Track portfolio company headcount growth and observe competitive scaling dynamics between competing startups.
✨ Features & capabilities
- 🏢 Multi-Company Batch Extraction: Supply dozens or hundreds of company slugs or URLs; the actor scrapes them concurrently using worker pools.
- 🔄 Unlocked 1,000+ Pagination: Multi-page pagination (
skip/limitarchitecture) walks through boards with hundreds or thousands of postings without truncation. - 💵 Advanced Salary Extraction Engine:
- Ingests native structured compensation parameters when published.
- Automatically runs an advanced regex parser over job descriptions to capture pay transparency bands (e.g.
$145,000 - $185,000/yr,$65.00/hr).
- 📝 Full Text & Structured Requirements: Captures both full plain text descriptions and parsed requirement sections (responsibilities, qualifications, benefits).
- 🧹 Robust Client-Side Filtering: Slice boards precisely by keyword, location, team, department, commitment type (Full-time, Contract, Intern), workplace flexibility, or ISO country code.
- ⚡ Zero Headless Browser Overhead: Executes via pure HTTP calls, delivering blisteringly fast execution and minimal compute unit consumption.
- 🔒 Clean Deduplication: Internal hash sets guarantee zero duplicate posting IDs across boards, even when roles are cross-listed in multiple locations.
🏢 Popular tech companies using Lever
Need inspiration for company slugs? Here is a representative list of companies known to host or have hosted active careers boards on Lever:
| Company Slug | Company Name | Industry / Vertical | Primary Locations |
|---|---|---|---|
spotify | Spotify | Digital Audio & Streaming | Stockholm, London, New York, Remote |
ro | Ro (Roman Health) | Digital Healthcare & Telehealth | New York, San Francisco, Remote US |
gopuff | Gopuff | Instant Grocery & Delivery | Philadelphia, Chicago, London, Remote |
palantir | Palantir Technologies | Enterprise Big Data & AI | Denver, New York, London, Washington |
affirm | Affirm | FinTech & Buy Now Pay Later | San Francisco, Chicago, Remote |
brex | Brex | Corporate Card & Spend Management | San Francisco, New York, Remote |
canva | Canva | Design & Visual Communication | Sydney, London, Austin, Remote |
plaid | Plaid | Financial Data Infrastructure | San Francisco, New York, London |
📥 Input parameters
The scraper accepts flexible JSON input configurations. All parameters are optional, with smart demo fallbacks enabled when inputs are blank:
| Parameter | Type | Default | Description |
|---|---|---|---|
companies | Array | ["spotify", "ro"] | List of Lever company slugs (e.g., spotify, ro, gopuff) or full career URLs (https://jobs.lever.co/spotify). |
searchTerm | String | "" | Filter postings containing this keyword in title, team, department, or description. |
location | String | "" | Substring match against location strings (e.g. New York, London, Remote). |
team | String | "" | Case-insensitive filter matching hiring team (e.g. Engineering, Marketing). |
department | String | "" | Case-insensitive filter matching corporate department. |
commitment | String | "" | Filter by commitment type (e.g. Full-time, Contract, Intern). |
workplaceType | String | "any" | Workplace arrangement filter: any, remote, hybrid, or onsite. |
country | String | "" | 2-letter ISO country code filter (e.g. US, GB, DE, CA). |
includeDescription | Boolean | true | When true, includes full job description text and section breakdowns. |
maxItems | Integer | 0 | Total maximum postings to save. Set to 0 for unlimited scraping. Fast prefill is set to 100. |
maxConcurrency | Integer | 5 | Number of company boards to process in parallel (1 to 15). |
proxyConfiguration | Object | Datacenter | Proxy configuration. Apify Proxy prevents transient rate limits across large batches. |
Example input configurations
1. Fast multi-company engineering sweep
{"companies": ["spotify", "ro", "gopuff"],"team": "Engineering","workplaceType": "remote","maxItems": 100}
2. Compensation benchmarking across US sales roles
{"companies": ["ro", "gopuff"],"searchTerm": "Account Executive","country": "US","includeDescription": true,"maxItems": 200}
3. Deep harvest of large corporate boards
{"companies": ["https://jobs.lever.co/gopuff"],"includeDescription": false,"maxItems": 0,"maxConcurrency": 5}
📊 Output data structure
Each scraped record provides a rich, flat schema designed for direct analytical querying or relational database storage:
👔 Role & categorization attributes
| Field | Type | Coverage | Description |
|---|---|---|---|
id | String | 🟢 High | Unique Lever posting UUID identifier. |
company | String | 🟢 High | Lever company slug identifier (e.g. "spotify"). |
title | String | 🟢 High | Official job posting title. |
team | String | 🟢 High | Internal team assignment (e.g. "Backend Engineering"). |
department | String | 🟡 Conditional | Broader department classification (e.g. "Technology"). |
commitment | String | 🟢 High | Employment classification (e.g. "Full-time", "Intern"). |
workplaceType | String | 🟢 High | Standardized workplace model: "remote", "hybrid", or "onsite". |
isRemote | Boolean | 🟢 High | True if the role permits remote work. |
📍 Location & geography attributes
| Field | Type | Coverage | Description |
|---|---|---|---|
location | String | 🟢 High | Primary job location string (e.g. "New York, NY"). |
allLocations | Array | 🟢 High | List of all eligible working locations and offices. |
country | String | 🟢 High | Standardized 2-letter ISO country code (e.g. "US"). |
💰 Compensation & timing attributes
| Field | Type | Coverage | Description |
|---|---|---|---|
salaryMin | Float | 🟡 Conditional | Minimum annual or hourly salary rate. |
salaryMax | Float | 🟡 Conditional | Maximum annual or hourly salary rate. |
salaryCurrency | String | 🟡 Conditional | Currency ISO code (e.g. "USD", "GBP", "EUR"). |
salaryInterval | String | 🟡 Conditional | Rate frequency: "per-year-salary" or "per-hour". |
salarySource | String | 🟡 Conditional | Origin of salary data: "structured" or "description". |
postedAt | String | 🟢 High | ISO-8601 UTC timestamp when the job was published. |
postedTimestamp | Integer | 🟢 High | Posting timestamp in epoch milliseconds. |
🔗 Links & content attributes
| Field | Type | Coverage | Description |
|---|---|---|---|
url | String | 🟢 High | Direct public candidate posting URL (https://jobs.lever.co/...). |
applyUrl | String | 🟢 High | Direct one-click application form URL. |
descriptionText | String | 🟢 High | Full job description text normalized without messy HTML tags. |
sections | Array | 🟢 High | Structured array of job sections (title and text content). |
scrapedAt | String | 🟢 High | ISO-8601 execution timestamp. |
Example JSON output item
{"id": "e4f8a319-278b-491c-8b82-93cb128b9410","company": "ro","title": "Senior Data Engineer, Platform","team": "Data Engineering","department": "Engineering","commitment": "Full-time","workplaceType": "remote","isRemote": true,"location": "New York, NY","allLocations": ["New York, NY", "Remote US"],"country": "US","salaryMin": 165000,"salaryMax": 195000,"salaryCurrency": "USD","salaryInterval": "per-year-salary","salarySource": "description","postedAt": "2026-11-08T14:22:15.000Z","postedTimestamp": 1794147735000,"url": "https://jobs.lever.co/ro/e4f8a319-278b-491c-8b82-93cb128b9410","applyUrl": "https://jobs.lever.co/ro/e4f8a319-278b-491c-8b82-93cb128b9410/apply","descriptionText": "About the Role: We are seeking an experienced Senior Data Engineer...","sections": [{"title": "What You'll Do","content": "• Architect distributed data pipelines using dbt and Snowflake.\n• Partner with product analysts..."}],"scrapedAt": "2026-11-10T13:38:00.000Z"}
📈 Pagination & scale guide
- Board Batching: Lever publishes postings in batches of 500 items per call.
- Deep Pagination: Setting
maxItems: 0automatically paginates deep corporate boards spanning thousands of roles until all postings are collected. - Batch Processing: When supplying dozens of company slugs, workers scrape boards concurrently up to your specified
maxConcurrencylevel. - Lean Scraping: Disabling
includeDescriptionomits lengthy textual sections, speeding up transfers and reducing storage consumption by ~85% for headline-only monitoring.
💡 Practical scraping tips
- How to Find Lever Slugs: Look at any company's job link. If the URL points to
https://jobs.lever.co/netflixor redirects fromcareers.company.comto Lever, the final path component is the slug (e.g.netflix). - Handle Multi-Location Roles: Companies often advertise a single engineering role across multiple cities. The actor captures the primary location in
locationand keeps all alternatives inallLocations. - Filter by Workplace Arrangement: To surface exclusively work-from-home opportunities, configure
workplaceType: "remote". The actor checks both explicit Lever badges and location tags. - Compensation Intelligence: Many tech companies now embed salary brackets inside the body text to comply with local laws. The actor's NLP parser automatically isolates these numbers and tags them with
"salarySource": "description".
🛠️ Step-by-step workflow guide
Step 1: Input target companies
Open the actor on the Apify Console. Enter one or more company slugs or URLs into companies:
spotifyrogopuffpalantir
Step 2: Configure extraction filters
- Select your target team (
Engineering), workplace arrangement (remote), or keyword (Staff Software Engineer). - Toggle
includeDescriptionbased on whether you require full textual job descriptions.
Step 3: Run the scraper
Click Start. Workers fetch boards concurrently in seconds. Real-time run logs display progress per company.
Step 4: Export your dataset
Download collected listings in JSON, CSV, or Excel formats, or configure a webhook to sync directly into Airtable, Notion, or your candidate tracking system.
🔗 Compatible tools & export formats
- File Downloads: Direct one-click export to JSON, CSV, Excel, XML, or TSV.
- No-Code Automation: Trigger runs or pipe newly posted jobs into Make.com, Zapier, n8n, or Google Sheets.
- Programmatic API: Ingest roles dynamically using Python or Node.js:
Python example
from apify_client import ApifyClientimport pandas as pdclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/lever-jobs-scraper").call(run_input={"companies": ["spotify", "ro", "gopuff"],"workplaceType": "remote","maxItems": 150})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())df = pd.DataFrame(items)print(f"Extracted {len(df)} remote roles. Sample titles:\n{df['title'].head()}")
Node.js example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/lever-jobs-scraper').call({companies: ['spotify', 'ro'],searchTerm: 'engineer',maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Fetched ${items.length} engineering roles from Lever.`);
🗄️ Dataset storage & retention
Postings collected by the scraper are stored securely inside your Apify default dataset:
- Zero Schema Drift: Every job object strictly respects the dataset schema for direct integration into BI tools like Snowflake, BigQuery, or PostgreSQL.
- Export Formats: Export anytime in CSV, JSON, Excel, XML, or TSV formats with a single click.
- Persistent Data Archives: Connect the actor to an Apify Named Dataset to maintain a persistent historical archive of all seen corporate roles over time.
- Automated Webhooks: Configure run-level webhooks that post a payload to your custom API whenever a new job crawl completes.
❓ Frequently Asked Questions
Do I need a Lever API key or employer credentials?
No. Lever publishes public career boards openly for job candidates. This scraper accesses public board feeds without credentials, tokens, or logins.
How many companies can I scrape in a single run?
There is no hard limit on company batch sizes. You can supply hundreds of company slugs in the input array; the actor queues and processes them using configurable concurrency workers.
Why is salary null on certain listings?
Companies are not universally required to publish compensation. When a company omits salary figures from both their structured data and description text, salary fields evaluate to null.
Does Lever have a global search across all companies?
No. Lever operates strictly on a tenant-by-tenant basis (jobs.lever.co/{slug}). You must supply the company slugs you wish to scrape.
What happens if a company slug is inactive or misspelled?
If a company slug returns a 404 error (no active Lever board), the actor logs a descriptive warning and moves immediately to the next company without failing the entire run.
How frequently should I monitor career boards?
Most high-growth companies post and close roles on a weekly or bi-weekly cycle. Setting up an Apify automated schedule to run every Monday and Thursday provides an optimal balance between fresh data and cost efficiency.
Can I differentiate between contract and permanent roles?
Yes. The actor populates the commitment field directly from Lever metadata (e.g., "Full-time", "Part-time", "Contract", "Internship"). You can also pre-filter roles by setting the commitment input parameter to "Contract" or "Full-time".
Does the scraper fetch archived or closed job postings?
No. Lever immediately removes unlisted or closed positions from its public career feeds. Scraped items represent exclusively active, open requisitions currently accepting candidate applications.
Can I extract salary data for UK or European postings?
Yes. When UK or European employers state compensation ranges in the job overview (e.g. £75,000 - £90,000 or €80.000 - €95.000), the scraper regex engine extracts the minimum, maximum, and respective currency code into salaryMin, salaryMax, and salaryCurrency.
📋 Changelog
v1.2 (2026-11)
- 1,000+ Deep Pagination Unlocked: Enhanced multi-page skip/limit iteration to effortlessly traverse enterprise boards with 1,000+ active openings.
- Fast Prefill Execution: Streamlined default validation run to 100 items for instant verification in under 15 seconds.
- Upgraded Salary Parser: Improved NLP regex extraction for multi-currency ranges, hourly brackets, and UK/EU salary disclosures.
- Enhanced Location Normalization: Added derived
isRemoteboolean and full multi-location array extraction.
v1.1 (2026-10)
- Added batch company ingestion with concurrent worker pools.
- Implemented structured sections parsing for requirements and benefits.
- Standardized ISO timestamp attributes.
v1.0 (2026-09)
- Initial release featuring lightweight HTTP job extraction from Lever ATS boards.