jobs.lever.co APIjobs.lever.co ↗
Access job postings from any Lever-hosted company board. List, filter, search, and group roles, get full posting details, and extract application form questions.
curl -X GET 'https://api.parse.bot/scraper/1d3e03ad-4684-456a-a278-b06b36e15b58/get_company_job_postings?limit=5&company=netflix' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch all active job postings for a given company from the Lever public API. Returns an array of job objects. The location filter requires an exact match to the location string as stored by Lever (e.g. 'New York, NY' not 'New York').
| Param | Type | Description |
|---|---|---|
| team | string | Filter by team/department name. Requires exact match to the team value in the posting. |
| limit | integer | Max results to return. |
| offset | integer | Pagination offset. |
| companyrequired | string | The company slug (e.g. 'palantir'). |
| location | string | Filter by location. Requires exact match to the full location string (e.g. 'New York, NY', 'Washington, D.C.'). |
| commitment | string | Filter by commitment type (e.g. 'Full-time', 'Scholarship'). |
{
"type": "array",
"fields": {
"id": "string — UUID of the job posting",
"text": "string — job title",
"lists": "array of requirement/responsibility sections with text and content fields",
"applyUrl": "string — URL to the application page",
"createdAt": "integer — timestamp in milliseconds",
"hostedUrl": "string — URL to the job posting on Lever",
"categories": "object containing commitment, location, team, and allLocations",
"description": "string — HTML job description",
"descriptionPlain": "string — plain text job description"
},
"sample": {
"data": [
{
"id": "a543d82a-a089-4b1c-afd1-4f30d3d8ee23",
"text": "Administrative Business Partner",
"applyUrl": "https://jobs.lever.co/palantir/a543d82a-a089-4b1c-afd1-4f30d3d8ee23/apply",
"createdAt": 1679955575647,
"hostedUrl": "https://jobs.lever.co/palantir/a543d82a-a089-4b1c-afd1-4f30d3d8ee23",
"categories": {
"team": "Administrative",
"location": "New York, NY",
"commitment": "Full-time",
"allLocations": [
"New York, NY"
]
}
}
],
"status": "success"
}
}About the jobs.lever.co API
This API exposes 6 endpoints covering Lever-hosted company job boards at jobs.lever.co. Use get_company_job_postings to list all active roles for a company with filters for team, location, commitment type, and pagination, or call get_job_application_form_questions to extract every field label, input type, required flag, and answer options from a posting's application form.
Job Listings and Filtering
get_company_job_postings accepts a company slug and returns an array of job objects, each containing a UUID id, job text (title), HTML and plain-text description fields, applyUrl, hostedUrl, a categories object with commitment, location, team, and allLocations, and a createdAt millisecond timestamp. Optional filters include team, location, commitment, limit, and offset. Location and team filters require exact string matches as stored by Lever — for example, 'New York, NY' not 'New York'. get_job_posting_detail returns the same shape for a single posting identified by its UUID posting_id.
Grouping and Search
get_job_postings_grouped fetches all postings for a company and returns them keyed by a field you specify via group_by: accepted values are department, team, location, or commitment. Each key maps to an array of full posting objects. search_jobs performs case-insensitive substring matching against job title, plain-text description, and categories fields, returning matching posting objects with id, text, hostedUrl, and categories.
Job Board Page and Application Form
get_company_job_board retrieves the public-facing Lever job board for a company, returning company_name, logo_url, and a postings array where each item includes title, location, commitment, url, department, and id — structured as grouped on the board page. get_job_application_form_questions targets a specific posting by company and posting_id and returns a questions array; each question object includes label, type (e.g. text, select, checkbox), required status, and an options array for select, radio, or checkbox fields.
- Aggregate open engineering roles across multiple Lever-hosted companies into a single job feed, using
teamandcommitmentfilters. - Build a job alert system that monitors
createdAttimestamps fromget_company_job_postingsto surface newly posted roles. - Analyze application form complexity across companies by comparing question counts and required fields from
get_job_application_form_questions. - Group a company's postings by
locationordepartmentviaget_job_postings_groupedto power a filterable careers directory. - Pre-fill or validate application workflows by mapping field
typeandoptionsreturned for each posting's form questions. - Search a company's Lever board by keyword with
search_jobsto surface relevant roles for a given skill or job function. - Extract company logo and structured department-grouped listings from
get_company_job_boardto embed in a third-party careers portal.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Lever have an official public API?+
What does the `categories` field contain and how does it differ from `allLocations`?+
categories is an object with four keys: commitment (e.g. 'Full-time'), location (the primary location string), team (department name), and allLocations (an array listing every location associated with the posting). A posting with multiple office options will have them in allLocations while location holds the primary one.Why do location and team filters sometimes return no results even when matching postings exist?+
location and team parameters in get_company_job_postings require an exact string match to the value Lever stores for that posting. A query for 'New York' will not match a posting stored as 'New York, NY'. Use get_company_job_postings without filters first to inspect the exact strings, then apply them as filter values.