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.

Data fields

FieldTypeDescription
companySlugtextCompany slug exported in the dataset view.
titletextJob title exported in the dataset view.
departmenttextDepartment exported in the dataset view.
teamtextTeam exported in the dataset view.
locationtextLocation exported in the dataset view.
workTypetextWork type exported in the dataset view.
workplaceTypetextWorkplace exported in the dataset view.
hostedUrllinkJob URL exported in the dataset view.

Input preview

companySlugsLever company slugs *
limitMaximum job postings
departmentsDepartments
locationsLocations
teamsTeams
workTypesWork types / commitments

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Scrape public job postings from Lever-hosted company career pages and export clean hiring data for recruiting, lead generation, job-board ingestion, labor-market research, and workflow automation.

What does Lever Jobs Scraper do?

Lever Jobs Scraper collects public roles from companies that publish openings on Lever.

It accepts one or more Lever company slugs, such as spotify, and returns structured job records.

You can also paste full Lever board URLs such as https://jobs.lever.co/spotify.

The actor returns job titles, job IDs, application URLs, hosted URLs, locations, departments, teams, work type, descriptions, and timestamps.

Who is it for?

Lever Jobs Scraper is for teams that need current hiring data from public company career pages.

๐Ÿ‘” Recruiters use it to monitor which companies are hiring and where headcount is growing.

๐Ÿ“ˆ Sales teams use it to find companies expanding specific departments.

๐Ÿง‘โ€๐Ÿ’ป Job-board operators use it to import live roles from company career pages.

๐Ÿ”Ž Labor-market analysts use it to compare hiring patterns across multiple companies.

๐Ÿค– AI agent builders use it to feed fresh job data into matching, alerts, and enrichment workflows.

Why use this actor?

Lever pages are widely used by startups, scale-ups, and larger technology companies.

Manual monitoring is slow when you need to watch dozens or hundreds of companies.

This actor turns public job pages into a normalized dataset that is easy to export, filter, and connect to other tools.

What data can you extract?

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
department Department category
team Team category
workType Commitment or work type
workplaceType Remote, hybrid, or workplace category when available
country Country field when available
createdAt Posting creation time in ISO format
descriptionPlain Plain text description
descriptionHtml Optional HTML description
lists Structured sections from the posting
additionalPlain Additional plain text content
scrapedAt Time the actor saved the item

How much does it cost to scrape Lever jobs?

The actor uses pay-per-event pricing.

There is a small start charge per run and a per-job charge for each job posting saved to the dataset.

For a typical company board with 100 jobs, the default target price is around $0.50 per 1,000 job postings before final tiered pricing is set on the Apify platform.

You can keep costs predictable by setting a low limit while testing.

How to use Lever Jobs Scraper

  1. Open the actor on Apify.
  2. Add one or more Lever company slugs.
  3. Set a maximum number of job postings.
  4. Optionally add department, team, location, or work-type filters.
  5. Run the actor.
  6. Download the dataset as JSON, CSV, Excel, XML, or HTML.

Input example

{
  "companySlugs": ["spotify", "netflix"],
  "limit": 50,
  "departments": ["Engineering"],
  "locations": ["Remote"],
  "includeDescriptionHtml": false
}

Input options

companySlugs is required.

Use the slug from the Lever job board URL.

For https://jobs.lever.co/spotify, the slug is spotify.

limit controls the maximum number of jobs saved across all companies.

departments filters by Lever department category.

locations filters by partial location text.

teams filters by Lever team category.

workTypes filters by commitment values such as Full-time or Internship.

includeDescriptionHtml adds original HTML description fields when you need formatting.

Output example

{
  "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",
  "createdAt": "2026-06-20T00:00:00.000Z",
  "descriptionPlain": "About the role...",
  "scrapedAt": "2026-06-20T05:00:00.000Z"
}

Tips for best results

โœ… Start with one company slug and a small limit.

โœ… Use company slugs exactly as they appear in the Lever URL.

โœ… Use location filters like Remote, London, or New York for broad matching.

โœ… Leave filters empty if you want the full board.

โœ… Enable HTML descriptions only when your workflow needs formatted text.

Common use cases

Track new roles at target accounts.

Build a job-alert feed for specific companies.

Monitor engineering hiring by location.

Create company expansion signals for sales outreach.

Collect clean job data for market maps.

Feed job descriptions into an AI matching workflow.

Integrations

Connect the dataset to Google Sheets for a live hiring tracker.

Export CSV into a CRM to create account expansion alerts.

Use Apify webhooks to trigger Slack notifications when a run finishes.

Use Make or Zapier to route new jobs to downstream systems.

Use the Apify API to schedule daily or weekly 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
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('fetch_cat/lever-jobs-scraper').call(run_input={
    'companySlugs': ['spotify'],
    'limit': 25,
})
print(run['defaultDatasetId'])

cURL

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

MCP usage

You can use this actor from Claude Desktop, Claude Code, or other MCP clients through Apify MCP.

Use an MCP URL with the actor tool selected:

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

Add it in Claude Code with:

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

Claude Desktop JSON configuration example:

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

Example prompts:

  • "Run the Lever Jobs Scraper for spotify and summarize engineering roles."
  • "Check whether these target companies are hiring in London."
  • "Export the latest Lever jobs for my sales account list."

Scheduling

Schedule this actor daily, weekly, or monthly from Apify Console.

For monitoring, use a small company list per run and keep limit aligned with your expected board sizes.

Use webhooks when you want a downstream process to start as soon as the dataset is ready.

Handling invalid or empty boards

If a company slug is invalid, the actor logs the failure and records it in the RUN-SUMMARY key-value store record.

If one slug fails but another succeeds, the run still completes and returns available jobs.

If every supplied slug fails, the run fails so you can notice the input problem.

If a valid company has no open jobs, the actor can finish with zero items.

Data quality notes

Lever company boards may use different department, team, and commitment values.

Some postings may omit optional fields such as country or workplace type.

Descriptions are returned as plain text by default.

HTML fields can be enabled for workflows that preserve formatting.

Legality

This actor extracts publicly available job postings.

You are responsible for using the data lawfully and respecting applicable terms, privacy rules, and data protection requirements.

Do not use scraped data for spam, discrimination, or unlawful profiling.

Troubleshooting

If a slug fails, try opening the corresponding Lever jobs page in a browser and confirm it exists.

If filters remove too many rows, run once without filters and inspect the department, team, and location values in the dataset.

If your automation needs every field, export JSON rather than CSV so nested lists stay intact.

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape multiple Lever companies in one run?

Yes. Add multiple values to companySlugs and set a limit that matches your expected volume.

What is a Lever company slug?

It is the part after jobs.lever.co/ in a Lever board URL.

For https://jobs.lever.co/spotify, use spotify.

Why did I get zero results?

The company may have no public roles, the filters may be too strict, or the slug may not be a Lever board slug.

Check the run log and RUN-SUMMARY record for failed slugs.

Can I include HTML job descriptions?

Yes. Set includeDescriptionHtml to true.