Lever logo

Job boards & ATS · Live on Apify

Lever jobs scraper for public company boards

Add a Lever company name or board link. You get each published job once, with a stable ID. Global and EU boards both work.

About $0.30 for 1,000 jobs$0.0003 per job + $0.002 per run. Apify bills you, not us.One job in a run of its own: about $0.0023.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

sourceJobIdad208490-4052-4f91-a57e-433f2d1e484b
boardSlugleverdemo
titleCustomer Success Manager

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: leverdemo in Lever boards or job URLs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Lever job scraper for current published jobs from the public Lever boards you provide. Add a board slug, board URL, or one exact job URL. Get one row per unique job, ready for recruiting market research or job listings export.

Who uses it

Recruiting researchers

Study hiring by team or place at known companies.

Job aggregators

Export company jobs into your own job feed.

Data teams

Save public job text for your own pipeline.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Unique job result$0.0003One unique useful job row saved to the default Dataset.
Start fee$0.002Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.

Examples

  • One job: about $0.0023.
  • 1,000 jobs: about $0.30.
  • Every day 100 jobs, for 30 days: about $0.96 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 16,000 jobs.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need a Lever account or API key?

No. The tool reads public published postings through the Lever Postings API.

Can I search jobs across every Lever company?

No. You must give known boards. There is no company search.

Can I get one single job?

Yes. Paste the exact job URL. You get that job if it is still public.

Does a second run show only new jobs?

No. Each run returns the current jobs. Compare IDs in your own system.

Can I get EU jobs or one job URL?

Yes. Use an EU hosted board/job URL for EU mode. An exact posting URL returns that job if it remains public.

Does a repeat run return only new jobs?

No. It returns a fresh snapshot. Duplicate jobs are removed within a run, not across runs.

Can descriptions or locations be missing?

Yes. The source controls those fields. Check nulls, empty arrays and includeContent; do not treat missing fields as guessed values.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep the filled targets example, leverdemo, or enter your public Lever board URL.
  3. Keep Include descriptions and lists on for the full content.
  4. Click Start.
  5. Open the default Dataset. Check sourceJobId, title, hostedUrl and descriptionText in the first row.
  6. Open Key-value store → RUN_SUMMARY to check the target status and counts.
Use cases
TaskInputKey fieldsNext step
Export company job listingsBoard slugs in targetssourceJobId, title, hostedUrl, applyUrlExport Dataset as JSON or CSV
Study hiring by team or placefilters.teams, filters.locationIncludesteam, department, locations, commitmentGroup rows in your own sheet
Save public job contentincludeContent: truedescriptionHtml, descriptionText, listsUse the content in your own pipeline
Recheck a known postingExact job URL in targetsStable id, observedAt, source fieldsCompare snapshots in your own system
Tips for better results
  • The slug is the name in jobs.lever.co/name. Use an EU link for EU boards.
  • Turn on continue after error when you check many boards in one run.
  • Store job IDs yourself to spot new jobs. Each run is a fresh snapshot.
Recent updates
  1. Version 0.1.12 · 17 September 2026

    • Verified the owner-published public Store page, public Actor state, current latest build, price, copy, existing icon and exact source parity.
    • Ran one bounded public default canary on ZEZrMcrKQuvEHs6iA: 11 Dataset rows, 11 settled events, and $0.0035969828223089374 total spend.
    • Reconciled Dataset, RUN_SUMMARY, Run.output, charged events and Git/GitHub state; no release defect was found.
  2. Update

    • Added safer handling for a failed charge call so already accepted rows are flushed before the run reports a technical outcome.
    • Added deterministic checks for redirects, oversized responses, repeated pages, aborts and charge failures.
    • Aligned the public name and description with the Lever job scraper search phrase and kept the customer README focused on use and limits.
  3. Update · 9 October 2026

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "id": "lever:global:leverdemo:ad208490-4052-4f91-a57e-433f2d1e484b",
  "sourceJobId": "ad208490-4052-4f91-a57e-433f2d1e484b",
  "boardSlug": "leverdemo",
  "title": "Customer Success Manager",
  "location": "Atlanta, Georgia",
  "locations": [
    "Atlanta, Georgia"
  ],
  "department": "Customer Success",
  "team": "Customer Success Team",
  "commitment": "Regular Full Time (Salary)",
  "workplaceType": "hybrid",
  "hostedUrl": "https://jobs.lever.co/leverdemo/ad208490-4052-4f91-a57e-433f2d1e484b",
  "applyUrl": "https://jobs.lever.co/leverdemo/ad208490-4052-4f91-a57e-433f2d1e484b/apply"
}

Use it from code

Actor ID: cliqtomedia/lever-jobs-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/lever-jobs-scraper").call(run_input={
    "targets": [
        "leverdemo"
    ],
    "includeContent": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~lever-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"targets": ["leverdemo"], "includeContent": true}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/lever-jobs-scraper")
result = tool.invoke({"run_input": {"targets": ["leverdemo"], "includeContent": True}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (31)
FieldTypeMeaning
idstringStable ID: lever:{region}:{board}:{postingId}.
sourcestringThe public source name.
idRuleVersionstringVersion of the stable identifier rule.
regionstringGlobal or EU public Lever instance.
boardSlugstringNormalized public Lever site slug.
boardUrlstringCanonical public hosted board URL.
sourceJobIdstringUpstream Lever posting ID.
titlestringPublished job title.
locationstringPrimary source location, when present.
locationsarraySource location values.
departmentstringSource department, when present.
teamstringSource team, when present.
commitmentstringSource commitment, when present.
countrystringSource ISO-2 country, when present.
workplaceTypestringSource workplace type or unspecified.
openingHtmlstringSource opening HTML when content is included.
openingTextstringPlain opening text when content is included.
descriptionHtmlstringSource combined description HTML.
descriptionTextstringPlain combined description.
descriptionBodyHtmlstringSource body HTML.
descriptionBodyTextstringPlain body text.
listsarraySource list sections with title, HTML and text.
additionalHtmlstringSource additional HTML.
additionalTextstringPlain additional text.
salaryRangeobjectSource salary range when provided.
salaryDescriptionHtmlstringSource salary note HTML.
salaryDescriptionTextstringPlain salary note.
hostedUrlstringCanonical public job page.
applyUrlstringSource application URL; never submitted by the Actor.
createdAtstringSource creation time in ISO format.
observedAtstringTime this Actor observed the row.
Input settings (7)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Lever boards or job URLs requiredtargetsarray["leverdemo"]
Include descriptions and listsincludeContentbooleantrue
Filtersfiltersobject
Maximum jobs per targetmaxJobsPerTargetinteger0
Maximum total jobsmaxTotalJobsinteger5000
Source page sizepageSizeinteger0
Continue after a target errorcontinueOnErrorbooleantrue

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure