Greenhouse, Lever, Ashby & Workable Jobs Scraper API avatar

Greenhouse, Lever, Ashby & Workable Jobs Scraper API

Pricing

Pay per usage

Go to Apify Store
Greenhouse, Lever, Ashby & Workable Jobs Scraper API

Greenhouse, Lever, Ashby & Workable Jobs Scraper API

Job board scraper for Greenhouse, Lever, Ashby and Workable: get every open job from company careers pages, read from each system's public job board API. One row per job in the same fields for all four, with filters and a new-jobs-only mode.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sampon

Sampon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Categories

Security

Limited permissions

Share

Greenhouse, Lever, Ashby & Workable Jobs

Many companies host their careers page on Greenhouse, Lever, Ashby or Workable. Each of these systems publishes a public job board feed so the company can show its openings on its own website. This Actor reads those feeds and gives you every open job as one clean table, with the same columns no matter which system the company uses.

Typical uses: tracking who is hiring in your market, feeding a niche job board, watching a list of target companies for new roles, or sizing a team's growth by department.

What you put in

A list of companies, one per line. Any of these forms works:

You enterExample
The public board addresshttps://job-boards.greenhouse.io/gitlab, https://jobs.lever.co/spotify, https://jobs.ashbyhq.com/linear, https://apply.workable.com/huggingface/
A short name with the system in frontgreenhouse:gitlab, lever:spotify, lever-eu:companyname, ashby:linear, workable:huggingface
The company's own careers pagehttps://linear.app/careers

When you give the company's own careers page, the Actor reads it once and looks for a link to, or an embed of, one of the four boards. That works for most pages that link to their board. Pages that build their job list with their own code may not show the board at all; in that case, open one job on the page, copy the board address from your browser, and use that instead.

{
"sources": ["https://job-boards.greenhouse.io/gitlab", "lever:spotify", "https://linear.app/careers"],
"keywords": ["engineer", "designer"],
"locations": ["remote", "london"],
"postedWithinDays": 30,
"maxItemsPerBoard": 100
}

Optional settings:

SettingWhat it does
maxItemsPerBoardNewest jobs first, up to this many per company. Default 50.
keywordsKeeps jobs whose title contains one of the words. Case does not matter.
locationsKeeps jobs whose location (any of them, for multi-location jobs) contains one of the words.
departmentsKeeps jobs whose department or team contains one of the words.
remoteOnlyKeeps jobs the board marks as remote, or whose location says remote.
postedWithinDaysSkips jobs first published longer ago than this.
onlyNewReturns only jobs that were not on the board at the previous run. See below.
includeDescriptionAdds the job description as plain text. On by default.
maxDescriptionCharsCuts long descriptions at a word break. Default 4000, 0 for no limit.
includeGreenhousePayFetches the published pay range for Greenhouse jobs (one extra request per Greenhouse job).

What you get

One row per job. The same fields come back for every system; anything a system does not publish is null.

{
"source": "lever",
"board": "spotify",
"company": "spotify",
"jobId": "4852ad53-b028-4161-b53b-24c62759257f",
"title": "Staff Product Designer - Agentic Experiences",
"department": "Design and User Experience",
"team": "Experience",
"location": "London",
"locations": ["London", "Stockholm"],
"country": "GB",
"remote": true,
"workplaceType": "remote",
"employmentType": "Permanent",
"postedAt": "2026-10-09T17:54:45Z",
"updatedAt": null,
"url": "https://jobs.lever.co/spotify/4852ad53-b028-4161-b53b-24c62759257f",
"applyUrl": "https://jobs.lever.co/spotify/4852ad53-b028-4161-b53b-24c62759257f/apply",
"salary": null,
"salaryText": null,
"description": "We design Spotify's consumer experience end to end, moment to moment, across every screen ...",
"isNew": null,
"scrapedAt": "2026-10-10T08:03:50Z"
}

Notes on the fields:

  • source is the system (greenhouse, lever, ashby, workable) and board the company's name on it.
  • company is the company name when the system publishes one (Greenhouse, Workable). Lever and Ashby feeds do not include it, so you get the board name instead.
  • postedAt is the first publication time in UTC. Workable only publishes a date, so you get YYYY-MM-DD there. Greenhouse also gives updatedAt.
  • salary holds min, max, currency and interval when the company publishes a range: Ashby and Lever include it in the feed, Greenhouse only with includeGreenhousePay, Workable does not publish it in its public feed. salaryText keeps the range as the company wrote it.
  • isNew is true on every row returned with onlyNew turned on, and null otherwise.

The output describes jobs, not people. Recruiter or hiring-manager fields are never collected, custom fields are left out, and e-mail addresses, phone numbers and links to personal profiles (LinkedIn, X, GitHub and similar) inside descriptions are replaced with [email removed], [phone removed] and [profile link removed]. A name written in the running text of a description cannot be removed reliably and stays as written.

Watching companies for new jobs

Turn on onlyNew and schedule the Actor, for example daily. The first run returns everything and remembers which jobs each board had, in a key-value store called ats-job-board-jobs-seen in your Apify account. Every later run returns only jobs that were not on the board the previous time. Jobs held back by maxItemsPerBoard or by your filters are remembered too, so changing filters later does not flood you with old jobs.

Price

Free for now. You only pay Apify's usual platform usage, which is small because each company is one request to a feed: in our test on a local machine, the default three companies returned 131 jobs in about 3 seconds. A per-job price may be added later. If that happens, it will be shown on this page before it applies to you.

How it treats the sources

  • It only uses the public, read-only job board feeds that each system documents for showing jobs on a careers page. No login, no private data, no application forms.
  • It reads each host's robots.txt first and follows it, including any crawl delay.
  • By default it reads two boards at a time and waits at least one second between requests to the same host. On HTTP 429 or a server error it backs off and tries again.

Limits

  • Four systems are supported: Greenhouse, Lever, Ashby and Workable. SmartRecruiters is left out because its feed's robots.txt asks automated tools to stay away; Recruitee is left out because its documentation is contradictory about whether the feed is public.
  • Jobs a company has marked as internal or unlisted are not in the public feeds and so are not in the output.
  • A board name that does not exist returns nothing; the log says which ones could not be read.
  • Greenhouse boards hosted in its EU region have not been tested.

This Actor is an independent tool. It is not made by, endorsed by, or affiliated with Greenhouse, Lever, Ashby, Workable or the companies whose job boards it reads.