
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape every open job from any company's Lever career site (global and EU): title, team, department, location, remote or hybrid, commitment, salary range, full description and apply link. Filter by keyword, location, team and more.
Pull every open job from any company that hires through Lever, the applicant tracking system behind career sites like jobs.lever.co/spotify. Paste company slugs or Lever links and get clean, structured rows: title, team, department, location, remote or hybrid, employment type, salary range, full description and apply link. No login, no browser, and it works for both Lever's global and EU hosts.
jobs.lever.co or jobs.eu.lever.co.spotify, a board link like https://jobs.lever.co/zoox, or even a filtered board link such as https://jobs.lever.co/spotify?department=Engineering&workplaceType=remote.The company slug is the first part of the path on the career site: https://jobs.lever.co/spotify/....
| Field | What it does |
|---|---|
companies | Lever slugs or URLs (board, EU board, filtered board, single job, or api.lever.co postings URL). |
maxResults | Total jobs to save across all companies (0 means no limit, up to 100,000). |
keywords / excludeKeywords | Keep or drop jobs by words in the title. searchInDescription also searches the description. |
locations / countries | Whole-word match on any job location (London, CA, Remote), or two-letter country codes (US, DE). |
workplaceTypes | remote, hybrid, onsite. |
teams / commitments | Words in the team or department, or in the employment type (Full-time, Contract, Intern). |
postedWithinDays | Only jobs created in the last N days. |
onlyWithSalary | Only jobs that publish pay information. |
maxResultsPerCompany | Cap per company, so one big employer does not fill the whole run. |
includeDescription / includeHtml | Turn descriptions or the HTML copy off for lighter data. |
{
"companies": ["spotify", "https://jobs.lever.co/zoox", "https://jobs.eu.lever.co/yourcompany"],
"maxResults": 200,
"keywords": ["engineer", "data"],
"workplaceTypes": ["remote", "hybrid"],
"locations": ["United States", "Remote"],
"postedWithinDays": 30,
"maxResultsPerCompany": 50
}
One row per open job.
| Field | Description |
|---|---|
title, company, companySlug, companyLogo | Job title, company name from its career site, slug and logo. |
location, allLocations, country | Main location, every listed location, two-letter country code. |
workplaceType, isRemote | remote, hybrid or onsite, and a simple remote flag. |
team, department, commitment, level | Lever categories as the company set them. |
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText | Published pay range and text (empty when the company does not publish pay). |
descriptionText, descriptionHtml, lists, openingText, additionalText | Full description, its bullet lists as {title, items}, and the closing section. |
postedAt, jobUrl, applyUrl, region, id | Creation time (UTC), job page, apply page, global or eu, Lever posting id. |
Example (trimmed):
{
"id": "e8a190f0-7a89-4c11-a6a0-452ff6234749",
"title": "Administrative Business Partner, Floater",
"company": "Zoox",
"companySlug": "zoox",
"location": "Foster City, CA",
"allLocations": ["Foster City, CA"],
"country": "US",
"workplaceType": "hybrid",
"isRemote": false,
"team": "Executive Office",
"department": "Executive Office",
"commitment": "Full-time",
"level": null,
"salaryMin": 123000,
"salaryMax": 168000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"postedAt": "2026-10-06T17:27:44.000Z",
"jobUrl": "https://jobs.lever.co/zoox/e8a190f0-7a89-4c11-a6a0-452ff6234749",
"applyUrl": "https://jobs.lever.co/zoox/e8a190f0-7a89-4c11-a6a0-452ff6234749/apply",
"region": "global",
"descriptionText": "Zoox is building the future of transportation. ...",
"lists": [
{ "title": "Responsibilities", "items": ["Scheduling team and cross-functional meetings", "Assisting with team off-sites and events"] }
],
"source": "lever"
}
You pay $1.00 per 1,000 jobs saved ($0.001 per job), plus the small platform usage of the run (compute and datacenter proxy traffic). Example: 1,000 jobs with descriptions cost about $1.00 in job fees plus roughly 1–2 cents of usage. Jobs removed by your filters are not charged, and the run stops cleanly when it reaches your maximum total charge.
Is it legal? The actor reads only public job postings that companies publish on their Lever career sites for anyone to see. No personal data about candidates is collected. Check your own use case against local law and the sites' terms.
Do I need a Lever account, login or proxy? No. Lever's postings feed is public. The default datacenter proxy is enough.
How many jobs can I get? Every open job a company has on Lever; large boards with thousands of jobs are paged through completely. One run can cover many companies, up to 100,000 jobs.
Why is a field empty? Lever fields are optional. Salary, level, department and workplace type only appear when the company fills them in.
Which companies use Lever? Any career site on jobs.lever.co or jobs.eu.lever.co. If a company's own careers page embeds Lever, its job links point to jobs.lever.co/<slug>/...; use that slug.
Can I schedule it or use the API? Yes. Schedule daily runs (for example with postedWithinDays: 1) and read the dataset through the API, webhooks or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
companiesarrayRequiredCompanies (slugs or Lever URLs)
Lever company slugs (the part after jobs.lever.co/, like spotify) or any Lever link: a job board (https://jobs.lever.co/zoox), an EU board (https://jobs.eu.lever.co/), a board with filters (?department=Engineering&workplaceType=remote), a single job page, or an api.lever.co postings URL. The region (global or EU) is detected automatically.
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all companies. Use 0 for no limit (up to 100,000).
All filters are optional and combine with AND. Within one filter, any listed value matches. Matching ignores case.
keywordsarrayOptionalKeywords
Keep jobs whose title contains any of these words or phrases (word-start match, so engineer also matches engineering).
searchInDescriptionbooleanOptionaldefault falseAlso search keywords in the description
Match keywords against the full job description too, not only the title.
excludeKeywordsarrayOptionalExclude keywords
Drop jobs whose title contains any of these words, for example intern or senior.
locationsarrayOptionalLocations
Keep jobs in any of these places (city, state, country or Remote). Matched as whole words against all of the job's locations, for example London, CA, Remote.
countriesarrayOptionalCountry codes
Keep jobs whose country is one of these two-letter codes, for example US, GB, DE.
workplaceTypesarrayOptionalWorkplace type
Keep only remote, hybrid or on-site jobs. Leave empty for all.
teamsarrayOptionalTeams or departments
Keep jobs whose team or department contains any of these words, for example Engineering, Sales, Data.
commitmentsarrayOptionalCommitment
Keep jobs whose commitment (employment type) contains any of these words, for example Full-time, Part-time, Contract, Intern.
postedWithinDaysintegerOptionalPosted within the last N days
Keep jobs created in the last N days. Leave empty for any date.
onlyWithSalarybooleanOptionaldefault falseOnly jobs with a salary
Keep only jobs that publish a salary range or pay information.
maxResultsPerCompanyintegerOptionaldefault 0Max results per company
Cap the number of jobs saved per company, so one large employer does not use up the whole limit. 0 means no per-company cap.
includeDescriptionbooleanOptionaldefault trueInclude job descriptions
Save the full description text, the bullet lists (responsibilities, requirements and so on) and the closing section. Turn off for a lighter metadata-only dataset.
includeHtmlbooleanOptionaldefault trueInclude description HTML
Also save the description as HTML, ready to display. Needs job descriptions to be on.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default and work well for Lever's public job API.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | Lever posting id |
| title | string | null | Job title |
| company | string | null | Company name |
| companySlug | string | null | Lever company slug |
| companyLogo | string | null | Company logo URL |
| location | string | null | Primary location |
| allLocations | array | Every location listed on the job |
| country | string | null | Two-letter country code |
| workplaceType | string | null | remote, hybrid or onsite |
| isRemote | boolean | null | True for remote jobs |
| team | string | null | Team |
| department | string | null | Department |
| commitment | string | null | Employment type, for example Full-time |
| level | string | null | Seniority level when the company sets it |
| salaryMin | number | null | Lowest salary in the published range |
| salaryMax | number | null | Highest salary in the published range |
| salaryCurrency | string | null | Salary currency code |
| salaryPeriod | string | null | year, month, week, day, hour or one-time |
| salaryText | string | null | Pay information text published with the job |
| postedAt | string | null | When the job was created (ISO 8601, UTC) |
| jobUrl | string | null | Public job page |
| applyUrl | string | null | Application page |
| region | string | null | Lever region: global or eu |
| source | string | null | Always lever |
| descriptionText | string | null | Full description as plain text, including lists and closing section |
| lists | array | null | Description bullet lists, each with a title and items |
| openingText | string | null | Opening paragraph when the company uses one |
| additionalText | string | null | Closing section text |
| descriptionHtml | string | null | Full description as HTML |
| scrapedAt | string | null | When the job was saved (ISO 8601, UTC) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved Lever job posting. | $0.001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/lever-jobs-scraper').call({
"companies": [
"spotify",
"https://jobs.lever.co/zoox"
],
"maxResults": 20,
"keywords": [],
"excludeKeywords": [],
"locations": [],
"countries": [],
"teams": [],
"commitments": [],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/lever-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/lever-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Keyword and country filters across company job boards.
Job list from a Lever board URL without descriptions.
Only postings that list a salary, up to 4 per company.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.