Greenhouse, Lever & Ashby Jobs API – New Job Alerts avatar

Greenhouse, Lever & Ashby Jobs API – New Job Alerts

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Greenhouse, Lever & Ashby Jobs API – New Job Alerts

Greenhouse, Lever & Ashby Jobs API – New Job Alerts

Greenhouse, Lever and Ashby job scraper built on their official public job-board APIs. Get every open job in one schema, salary where published, title/location/remote filters, and a new-since-last-run mode for daily job alerts. $1 per 1,000 jobs. No proxy, no login.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Haydon Apolinar

Haydon Apolinar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

A job scraper for company career boards on Greenhouse, Lever and Ashby. It pulls every open job through the Greenhouse jobs API, the Lever job board API and the Ashby job board API, the official public endpoints each ATS provides. You get one clean, standard schema for all three, published salary ranges, filters, and a new-since-the-last-run mode for daily job alerts.

No HTML scraping, no proxy, no login: these are the same public JSON endpoints the companies' own career pages use.

ATSOfficial public endpoint
Greenhousehttps://boards-api.greenhouse.io/v1/boards/<board>/jobs
Leverhttps://api.lever.co/v0/postings/<company>?mode=json (EU: api.eu.lever.co)
Ashbyhttps://api.ashbyhq.com/posting-api/job-board/<board>?includeCompensation=true

Use cases: job alerts, job boards, recruiting and hiring signals

  • Recruiters and sourcers tracking openings at target companies.
  • Job boards and newsletters aggregating roles from many company boards.
  • Sales and market-intel teams using hiring as a buying signal (new team, new market, new tool).
  • Job seekers running a daily "new roles at my 50 favourite companies" alert.

How to find a company's Greenhouse, Lever or Ashby board

Open the company's careers page and look at where the job links point:

Job link looks likeBoard to enter
boards.greenhouse.io/acme or job-boards.greenhouse.io/acmegreenhouse:acme
jobs.lever.co/acmelever:acme
jobs.ashbyhq.com/acmeashby:acme

You can also paste the full URL. Not sure which ATS a company uses? Enter just the name (e.g. acme) and the Actor tries Greenhouse, then Lever, then Ashby. Every board is checked first, and missing or misspelled boards are reported for free in the Board status output.

Input

Give boards in any of these forms:

  • greenhouse:gitlab, lever:palantir, ashby:ashby
  • board URLs: https://boards.greenhouse.io/gitlab, https://job-boards.greenhouse.io/gitlab, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ashby
  • a bare name such as gitlab: the Actor tries Greenhouse, then Lever, then Ashby
{
"boards": ["greenhouse:gitlab", "https://jobs.lever.co/palantir", "ashby"],
"titleKeywords": ["engineer", "manager"],
"locations": ["Remote", "London"],
"remoteOnly": false,
"postedWithinDays": 30,
"includeDescription": false,
"onlyNew": true,
"maxJobs": 1000
}

Company names: Greenhouse returns the company name. The Lever and Ashby job-board APIs don't, so the board token is turned into a name (acme-labs → "Acme Labs"); companySource tells you which was used, and companySlug always holds the token. To set exact names, add "companyNames": {"lever:palantir": "Palantir Technologies"}.

Board-exists check: each board is checked first. Missing or misspelled boards are listed in the Board status output (the BOARDS record) with the reason. They cost nothing.

Output (one standard schema)

Real record from GitLab's Greenhouse board (description fields omitted):

{
"jobId": "greenhouse:gitlab:8860302002",
"ats": "greenhouse",
"board": "gitlab",
"company": "GitLab",
"companySlug": "gitlab",
"companySource": "api",
"id": "8860302002",
"title": "Account Executive - France",
"department": "EMEA - Commercial",
"location": "Remote, France",
"locations": ["Remote, France", "France"],
"workplaceType": "remote",
"isRemote": true,
"postedAt": "2026-10-02T15:31:50.000Z",
"updatedAt": "2026-10-02T15:31:50.000Z",
"jobUrl": "https://job-boards.greenhouse.io/gitlab/jobs/8860302002",
"isNew": true,
"scrapedAt": "2026-10-09T22:00:00.000Z"
}

Ashby and some Lever boards also publish pay. You get salaryMin, salaryMax, salaryCurrency and salaryInterval, plus Ashby's compensationSummary (e.g. "€110K – €185K • Offers Equity • Offers Bonus").

With includeDescription you also get descriptionHtml and descriptionText (clean text with bullet points).

The dataset has three views: Jobs, Salary and Descriptions.

Greenhouse, Lever & Ashby job alerts (new jobs only)

Turn on onlyNew and schedule the Actor daily. Each run remembers the job IDs it has seen in a key-value store named job-boards-state in your account, keyed by your board list or by stateKey. The next run outputs only jobs that are new since the last run, and every job also carries isNew.

  • The first run outputs everything and records it.
  • Use a different stateKey for each separate schedule.
  • If a run stops early (max jobs or your spending limit), the state isn't advanced, so nothing gets skipped.

To get alerts:

  1. Save your input as a task and turn on onlyNew.
  2. Create an Apify schedule for the task (e.g. daily at 8:00).
  3. Send each run's results to Slack, email, Google Sheets or your own endpoint with Apify integrations or webhooks.

How much does it cost?

EventPricePer 1,000
Job (job)$0.001$1.00
Full description add-on (job-description)$0.0005+$0.50
Missing boards, filtered-out and already-seen jobsfreefree

Example (illustrative): 50 boards × ~100 open jobs = 5,000 jobs ≈ $5.00 on the first run. With onlyNew, later runs bill only the new jobs, often just a few dollars a month.

Set a max cost per run to cap your spend; the Actor stops cleanly when the cap is reached.

Limits & good to know

  • Only boards hosted on Greenhouse, Lever or Ashby are supported (not Workday, iCIMS, SmartRecruiters, etc.).
  • postedAt is the ATS's own date: Greenhouse first_published, Lever createdAt, Ashby publishedAt.
  • Greenhouse doesn't expose salary in the public jobs list. Lever only does when the company publishes a salary range.
  • Each board is 1–2 API requests, so even large boards finish in seconds.

Why not call the Greenhouse API yourself?

You can: the job-board APIs are free and public. This Actor saves you the glue code:

  • one standard schema across Greenhouse, Lever and Ashby;
  • title, location, department, remote and date filters;
  • salary fields normalised where the ATS publishes them;
  • state for new-jobs-only output, so schedules don't repeat jobs;
  • board-exists checks, retries, and maintenance when an API changes.

Comparison with other ATS job scrapers

This Actor
ATS coverageGreenhouse, Lever, Ashby
Price$1.00 per 1,000 jobs, +$0.50 per 1,000 for full descriptions
New-jobs-only modeYes (onlyNew)
Board discoveryBare-name fallback + free board-exists check (no company directory)

Other Actors in the Store cover more ATSs (some cover Workday, SmartRecruiters and many more) or include company directories. If you only need the big three, this one keeps it simple.

Responsible use

This Actor reads public job postings that companies publish through their ATS's official public job-board API. It doesn't log in, submit applications, or collect candidate data. Postings belong to the companies that published them:

  • link back to the original jobUrl / applyUrl;
  • don't present postings as your own;
  • remove jobs when they close (re-run, or use onlyNew plus your own expiry).

Check each ATS's terms for your use case. Recruiter or contact names aren't collected, but if a description contains personal data, handle it under the laws that apply to you (e.g. GDPR).


Built and maintained by Hapol Data (Web Data. Automated.). More Actors: apify.com/hapol.