Lever Jobs Scraper · Job Postings, Teams, Locations & Salary avatar

Lever Jobs Scraper · Job Postings, Teams, Locations & Salary

Pricing

from $2.00 / 1,000 job returneds

Go to Apify Store
Lever Jobs Scraper · Job Postings, Teams, Locations & Salary

Lever Jobs Scraper · Job Postings, Teams, Locations & Salary

Scrape open job postings, departments, locations, remote status, compensation and application URLs from any Lever company job board.

Pricing

from $2.00 / 1,000 job returneds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

reapX — public sources in, addressable records out

Lever Jobs Scraper · Job Postings, Teams, Locations & Salary

Scrape every open job posting from any Lever company job board. Give this Lever jobs scraper a list of company slugs — spotify, palantir, qonto, ro — or paste full board URLs, and get back one clean row per opening: job title, company name, department, team, location, workplace type, remote status, full job description, application links, and publication dates. It fetches Lever's public postings API over plain HTTP, so there is no browser, no login, no API key, and no blocking.

Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/lever-jobs-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me

What this Lever jobs scraper returns

One row per open job posting, formatted into a standardized dataset with these fields:

FieldDescription
companyNameName of the hiring employer (aggregates multiple postings per employer)
jobIdUnique Lever UUID for this job posting
titleJob title as published by the employer
commitmentEmployment type (e.g., Permanent, Full-time, Contract, Internship)
departmentMain department or functional unit
teamSpecific internal team or sub-department
locationPrimary location published for the position
allLocationsComplete array of all locations offered for the role
countryCountry code (ISO 3166-1 alpha-2) when available
workplaceTypeWorkplace model: remote, hybrid, or on-site
isRemoteBoolean flag indicating whether the job is remote-friendly
createdAt, publishedAt, publishedDateEpoch timestamp (ms), ISO 8601 timestamp, and publication date (YYYY-MM-DD)
descriptionTextPlain text job description
descriptionHtmlFull HTML job description with formatting
hostedUrl, applyUrlPublic Lever posting page URL and direct application link
scrapedAtISO 8601 timestamp when the posting was collected

How to find a Lever company board slug

The company slug is the identifier in a Lever job board URL. For example:

  • In https://jobs.lever.co/spotify, the company slug is spotify.
  • In https://api.lever.co/v0/postings/palantir, the company slug is palantir.

You can paste either form — full URLs or bare company slugs. Both are automatically parsed and normalized.

Scrape jobs from multiple Lever boards at once

Pass up to 200 company board slugs in a single run to gather postings across an entire cohort — venture portfolios, competitor sets, or industry verticals. The results are aggregated into a single, unified dataset sorted across all companies.

Filter Lever job postings by department, location and remote status

Optionally filter job postings using flexible parameters:

  • Job title keywords: Filter by required or excluded keywords in job titles.
  • Department & team keywords: Match against department or team names (e.g. engineering, sales, product).
  • Location keywords: Match against primary or alternative office locations (e.g. London, San Francisco, Remote).
  • Remote jobs only: Restrict results to remote-friendly opportunities.
  • Posted within N days: Keep only recent postings published within a specified number of days.
  • Full-text description keywords: Search inside job descriptions for specific skills, tech stacks, or qualifications.

Extract job postings with compensation and salary data

Lever job descriptions frequently publish compensation ranges, salary bands, and benefits. Setting includeDescription to true extracts the complete text for salary analysis, LLM processing, or job market intelligence.

By combining postedWithinDays with scheduled daily or weekly runs, you can track hiring velocity, new opening announcements, and team expansions across your target company list.

Pricing

Pay per event: $0.003 per job returned, with tiered volume discounts on every Apify plan tier. You are billed only for completed rows returned to your dataset. Unreachable boards, empty results, or queries that match no filters cost nothing.

❓ FAQ

Do I need a Lever API key or account? No. This scraper accesses Lever's public job board endpoints over plain HTTP. No authentication, API key, or credentials are required.

How many company boards can I scrape in one run? You can include up to 200 company board slugs per run.

Why does each dataset row use companyName as its identifier? companyName identifies the employer hiring for the role, allowing dataset items to be aggregated cleanly per employer across pages.

Can an AI agent or LLM invoke this Actor? Yes. The input and dataset schemas are fully typed and documented for agentic integration via the Apify platform and MCP.

What happens if a company board slug is invalid or closed? If a board is 404 or inactive, it is skipped cleanly and noted in the status log without failing the run or charging any fee.


Unofficial - not affiliated with Lever. Collects public data only. reapx. Contact reapxdev@proton.me.

⬇️ Input

Every field is optional unless marked. Run it with no input at all to get a sensible default slice.

FieldTypeRequiredWhat it does
companiesarraynoOne entry per company. Paste the board slug (e.g. "spotify") or full URL (e.g. "https://jobs.lever.co/spotify"). Example: spotify, palantir, coins,…
titleKeywordsarraynoCase-insensitive filter. Keeps postings whose title contains at least one of these keywords. Example: engineer, developer. Leave this field empty to…
excludeTitleKeywordsarraynoCase-insensitive exclusion filter. Drops postings whose title contains any of these keywords. Example: intern, contract. Leave this field empty to…
departmentKeywordsarraynoMatched against department and team names. Example: engineering, sales, product. Leave this field empty to include every option.
locationKeywordsarraynoMatched against location and allLocations fields. Example: San Francisco, London, Remote. Leave this field empty to include every option.
descriptionKeywordsarraynoFull-text keyword search inside the job description. Example: Python, Kubernetes, React. Leave this field empty to include every option.
workplaceTypesarraynoFilter by workplace environment as published by Lever. Example: remote, hybrid, on-site. Leave this field empty to include every option.
remoteOnlybooleannoKeep only postings whose workplace type or location indicates remote work. Example: true.
postedWithinDaysintegernoFilter by posting creation date in days. Example: 30 for jobs posted in the past month. The higher the number, the longer the run takes and the more…
includeDescriptionbooleannoAdds descriptionText to every output row. Turn off for a compact feed. Example: true.
includeDescriptionHtmlbooleannoAdds descriptionHtml with original HTML formatting. Example: false.
maxItemsintegernoMaximum number of total job postings returned across all company boards. Example: 200. The higher the number, the longer the run takes and the more you…
maxItemsPerCompanyintegernoCap the number of postings returned per single company board. Example: 50. The higher the number, the longer the run takes and the more you are…

⬆️ Output

One row per record, as JSON, CSV, Excel or XML — and through the API.

FieldWhat it gives you
titleJob title
companyNameCompany
locationLocation
departmentDepartment
commitmentCommitment
workplaceTypeWorkplace
publishedDatePublished
hostedUrlPosting link
teamTeam
jobIdJob ID
applyUrlApply link
isRemoteRemote
countryCountry
descriptionTextDescription
scrapedAtScraped at

🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

{
"companies": [
"coins",
"finix",
"capital",
"nium",
"anchorage",
"ro"
],
"maxItems": 200,
"includeDescription": true,
"includeDescriptionHtml": false
}

📄 Sample output

One real row from a real run of this Actor, unedited.

{
"jobId": "890b2c0f-f46f-4a4b-bb73-3a6af6e0edd5",
"companyName": "Spotify",
"title": "Advertiser Solutions Vendor Lead - Programmatic and Direct Support",
"commitment": "Permanent",
"department": "Advertising",
"team": "Advertising Sales - Emerging and Scaled Sales",
"location": "London",
"allLocations": [
"London"
],
"country": "GB",
"workplaceType": "hybrid",
"isRemote": false,
"createdAt": 1784569799619,
"publishedAt": "2026-07-20T17:49:59.619000Z",
"publishedDate": "2026-07-20",
"descriptionText": "Sell what you love. For us and millions of users across the globe, that’s Spotify. Join the Sales team and you’ll build the relationships that help grow our business in existing markets and beyond. We don’t just sell creative solutions to our clients and partners, we help to shape them; using our expert knowledge of ad products, sales channels and the industry to impact the way the world experiences music and podcasts.",
"descriptionHtml": null,
"hostedUrl": "https://jobs.lever.co/spotify/890b2c0f-f46f-4a4b-bb73-3a6af6e0edd5",
"applyUrl": "https://jobs.lever.co/spotify/890b2c0f-f46f-4a4b-bb73-3a6af6e0edd5/apply",
"scrapedAt": "2026-08-03T10:53:09.506383Z"
}

How it works

  1. You set the filters below, or none at all.
  2. The Actor calls the source's own public endpoint and pages through the results.
  3. Every row is pushed to the dataset as it is built, not buffered to the end — so a run that hits its time limit still returns everything it collected up to that point.
  4. You are charged per row returned, so the maximum-results field is also your cost cap.

💬 Your feedback

Found a bug, or need a field this does not return yet? Open an issue on the Actor's Issues tab, or write to reapxdev@proton.me. Bugs get fixed and reasonable field requests get added.

⚠️ Run outcomes and error handling

This Actor reports what happened in the run's status message, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.

OutcomeWhat it means
SuccessRows were returned and you were charged job-returned at $0.003 per row.
No matchesThe source returned nothing for your filters. Nothing is charged. Widen the date window or drop a filter.
Partial - source refusedThe source rate-limited or refused some requests. The affected items are skipped and named in the log, and everything already collected is still pushed. A block never discards a run's work.

What is guaranteed either way

  • Every row is pushed as it is built, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
  • A field absent from the source is absent from the row. Nothing is inferred, modelled or filled in to make a row look complete.