ATS Job Postings Scraper (Greenhouse, Lever, Ashby, Workable) avatar

ATS Job Postings Scraper (Greenhouse, Lever, Ashby, Workable)

Pricing

from $1.50 / 1,000 job results

Go to Apify Store
ATS Job Postings Scraper (Greenhouse, Lever, Ashby, Workable)

ATS Job Postings Scraper (Greenhouse, Lever, Ashby, Workable)

Pricing

from $1.50 / 1,000 job results

Rating

0.0

(0)

Developer

LowfieldLabs

LowfieldLabs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

ATS Job Postings Scraper — Greenhouse, Lever, Ashby, Workable

What does ATS Job Postings Scraper do?

Give it a list of companies — as careers-page URLs, provider:slug pairs, or even bare company slugs — and it returns one clean, identically-shaped JSON record per job posting, no matter which of the four supported applicant-tracking systems (ATS) the company uses: Greenhouse, Lever, Ashby, or Workable. It auto-detects the ATS when you don't specify one, so you don't need to know which system each company runs.

Typical uses: job-board aggregation, hiring-signal lead generation ("which of these 200 companies are hiring sales engineers right now?"), recruiting market research, competitor hiring intel, and feeding structured job data to AI agents and workflows. Because every provider is normalized to the same schema, downstream code handles one format instead of four.

Input

FieldTypeDescription
companiesarray (required)One entry per company: careers URL (https://boards.greenhouse.io/stripe, https://jobs.lever.co/…, https://jobs.ashbyhq.com/…, https://apply.workable.com/…), explicit provider:slug (greenhouse:stripe, lever:plaid, ashby:ramp, workable:blueground), or a bare slug to auto-detect.
keywordsarrayKeep only jobs whose title (or description, if fetched) contains ANY of these, case-insensitive.
locationContainsstringKeep only jobs whose location contains this text, e.g. "new york" or "remote".
remoteOnlybooleanKeep only jobs the board explicitly marks remote.
maxAgeDaysintegerDrop postings older than this many days (jobs with no date are kept).
maxJobsPerCompanyintegerSafety cap per company (default 200).
includeDescriptionbooleanAlso fetch the full job description where the ATS provides it.

Example input:

{
"companies": ["greenhouse:stripe", "https://jobs.ashbyhq.com/ramp"],
"keywords": ["engineer"],
"remoteOnly": false,
"maxJobsPerCompany": 100
}

Output

One dataset record per job posting, always in this shape (download as JSON, CSV or Excel from the run's Dataset tab, or via the Apify API):

{
"provider": "greenhouse",
"company": "stripe",
"id": "7954688",
"title": "Backend Engineer, Payments",
"url": "https://stripe.com/jobs/search?gh_jid=7954688",
"location": "New York, NY",
"remote": null,
"department": "Engineering",
"employment_type": null,
"published_at": "2026-06-12T18:30:00+00:00",
"description_html": null,
"description_text": null
}

Fields the source board doesn't expose are null rather than guessed. remote is true or false only when the board says so explicitly.

This Actor reads only the public, documented job-board APIs that Greenhouse, Lever, Ashby and Workable themselves publish for exactly this purpose — the same postings shown on each company's public careers page. There are no logins, no paywalls, no personal data, and no bot-evasion tricks: it makes a single request per company per run. If a company's board is private or removed, the Actor simply reports it as unresolved.

Pricing

Pay-per-event: a small flat Actor start fee per run plus a per-job job result fee — you pay only for jobs actually returned, never for unresolved companies or filtered-out postings. Exact prices are shown on this Actor's page.

FAQ

Which ATS platforms are supported? Greenhouse, Lever, Ashby and Workable. More (SmartRecruiters, Recruitee) are planned — tell us via the Issues tab if you need one.

How do I find a company's slug? From its careers-page URL: in https://boards.greenhouse.io/stripe the slug is stripe. Or just pass the whole URL.

A company comes back "unresolved" — why? Its board may be private, empty, hosted on an unsupported ATS, or use a different slug than you guessed. The run's status message and log list every unresolved entry.

Can I run this on a schedule? Yes — use Apify Schedules to run it hourly/daily and diff new postings downstream.

Who maintains this? Lowfield Labs — a small automation studio. This Actor is built and maintained with AI-assisted engineering; issues filed on the Actor's Issues tab are triaged continuously.