Job Board Scraper: Greenhouse, Lever, Ashby, Workable + more avatar

Job Board Scraper: Greenhouse, Lever, Ashby, Workable + more

Pricing

Pay per usage

Go to Apify Store
Job Board Scraper: Greenhouse, Lever, Ashby, Workable + more

Job Board Scraper: Greenhouse, Lever, Ashby, Workable + more

Extract every open job from a company's ATS job board. One actor covers Greenhouse, Lever, Ashby, Workable and SmartRecruiters, returning a single unified table.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

LAIKESI YI

LAIKESI YI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Most job scrapers will tell you Toloka has 1,404 open roles. It has 293.

Workable returns the same posting once for every location it accepts. Count the rows and you are wrong by 4.8x. This actor reports both numbers on every run and lets you merge them with one switch — because a number that looks right and is wrong is worse than no number at all.

That is the whole design brief: be correct in the places where being wrong is invisible.

One actor, five ATS platforms

PlatformPaste thisVerified
Greenhouseboards.greenhouse.io/<company>548 jobs from Stripe in 0.35s
Leverjobs.lever.co/<company>302 from Palantir in 1.45s
Ashbyjobs.ashbyhq.com/<company>126 from Ramp in 0.25s
Workableapply.workable.com/<company>1,404 rows / 293 jobs in 0.26s
SmartRecruiterscareers.smartrecruiters.com/<company>paginated, full account

2,380 rows across four boards in about 2.3 seconds. Measured, not estimated. You can also write platform:slug directly, e.g. greenhouse:stripe.

No browser. No API key. No proxies.

These five vendors publish their job boards as public JSON. This actor reads that JSON. It does not drive a headless browser, does not need residential proxies, and does not break when a careers page gets redesigned — because it never looked at the page in the first place.

That is also why it is cheap to run and why it does not silently rot.

Field completeness, measured on 2,380 live rows

FieldFilled
title · url · location · posted_at100%
department77%
employment_type77%
remote68%

Published as-is. The gaps are the vendors' — we do not invent values to make a table look full.

Output

One shape, regardless of which board it came from:

{
"board": "greenhouse",
"company": "stripe",
"job_id": "6203386",
"title": "Backend Engineer, Payments",
"location": "San Francisco",
"department": "Engineering",
"employment_type": "",
"remote": "",
"posted_at": "2026-07-28T10:12:03Z",
"url": "https://boards.greenhouse.io/stripe/jobs/6203386",
"source": "boards-api.greenhouse.io"
}

JSON, CSV, Excel, or straight into your pipeline.

Three things it refuses to do

  1. It does not guess. Hand it a URL that is not a recognised job board and it returns a clear error. It will never quietly return zero rows — because "no jobs" and "wrong URL" must never look the same.
  2. It does not hide failures. A board that fails is reported separately from a board that is genuinely empty. Both appear in the log; neither disappears.
  3. It does not touch personal data. Job postings only. No candidates, no applicants, no contact scraping. Every endpoint it reads is published publicly by the ATS vendor, and it never logs in or bypasses authentication.

Typical uses

  • greenhouse job board scraper
  • lever jobs scraper
  • ashby jobs api
  • workable jobs scraper
  • smartrecruiters scraper
  • ats job scraper
  • company careers page scraper
  • job listings api

Options

  • Merge duplicate postings — one row per job, locations joined. Off by default so you keep full fidelity; the run summary always shows both counts.
  • Max jobs — hard cap across all boards. 0 means no limit.