ATS Jobs Monitor · Greenhouse, Lever & Ashby
Pricing
from $1.50 / 1,000 job records
ATS Jobs Monitor · Greenhouse, Lever & Ashby
Monitor job postings across Greenhouse, Lever & Ashby in one unified schema. Track any companies, filter by title, location & remote, and get only what changed — new, updated & removed jobs on every run. Built on official public job APIs: fast, reliable, no proxies needed.
Pricing
from $1.50 / 1,000 job records
Rating
0.0
(0)
Developer
ScrapeFlux
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
ATS Jobs Monitor — Greenhouse, Lever & Ashby
Monitor job postings across the three most popular startup ATS platforms — Greenhouse, Lever, and Ashby — in one unified, normalized schema. Track any number of company boards, filter by title/location/remote, and (the killer feature) run in monitor mode to get only what changed since the last run: new postings, updated postings, and removed postings.
Built on the platforms' public job-board APIs — no browser, no proxies, fast and reliable.
Use cases
- Recruiting & sourcing: watch competitors' hiring across all three ATSs from one schedule
- Hiring signals for sales/VC: a company opening 10 engineering roles is a buying/growth signal — get
change_type: "new"rows the day it happens - Job aggregators & alerts: clean, deduplicated, cross-ATS feed with salary data where published
- Labor-market research: normalized departments, locations, remote flags, and salary ranges
Input
| Field | Type | Required | Description |
|---|---|---|---|
greenhouseBoards | Array | * | Greenhouse board tokens (boards.greenhouse.io/<slug>) |
leverCompanies | Array | * | Lever company slugs (jobs.lever.co/<slug>) |
ashbyBoards | Array | * | Ashby board names (jobs.ashbyhq.com/<slug>) |
titleIncludes | Array | No | Keep jobs whose title contains any keyword (case-insensitive) |
locationIncludes | Array | No | Keep jobs whose location matches any keyword |
remoteOnly | Boolean | No | Keep only remote jobs |
postedAfter | String | No | Keep jobs posted on/after this ISO date |
includeDescription | Boolean | No | Include full descriptions (HTML + text), default false |
monitorMode | Boolean | No | Output only deltas vs. the previous run (default false) |
snapshotKey | String | No | State namespace for monitor mode (default "default") |
maxResults | Integer | No | Cap on output rows |
* At least one of the three board lists is required.
Output
One record per job posting (or per changed job posting in monitor mode), in a unified snake_case schema across all three sources:
{"source": "greenhouse","company_slug": "stripe","company_name": "Stripe","job_id": "7954688","title": "Account Executive, AI Sales","department": "Sales","team": null,"location": "San Francisco, CA","all_locations": ["San Francisco, CA"],"location_type": null,"remote": false,"employment_type": null,"posted_at": "2026-06-02T12:58:57.000Z","updated_at": "2026-06-26T21:05:44.000Z","salary_text": null,"salary_min": null,"salary_max": null,"salary_currency": null,"description_text": null,"description_html": null,"url": "https://stripe.com/jobs/search?gh_jid=7954688","apply_url": "https://stripe.com/jobs/search?gh_jid=7954688","change_type": "new","scraped_at": "2026-07-13T10:00:00.000Z"}
change_type is "new", "updated", or "removed" in monitor mode, null otherwise. Salary fields are populated when the source publishes them (Lever salaryRange, Ashby compensation tiers, Greenhouse pay ranges).
Monitor mode
Set monitorMode: true and run the actor on a schedule (e.g. daily). The first run outputs every matching job as "new" and saves a snapshot; subsequent runs output only differences and update the snapshot. State is kept per snapshotKey, so separate watchlists don't interfere. A board that fails to fetch is skipped without generating false "removed" records.
Pricing
Pay Per Event — you are charged per job record written to the dataset. In monitor mode you only pay for actual changes, which makes scheduled monitoring extremely cheap.