Job Board Scraper — Greenhouse, Lever & Ashby avatar

Job Board Scraper — Greenhouse, Lever & Ashby

Pricing

from $1.50 / 1,000 role-scrapeds

Go to Apify Store
Job Board Scraper — Greenhouse, Lever & Ashby

Job Board Scraper — Greenhouse, Lever & Ashby

Scrape open roles from any company's Greenhouse, Lever or Ashby job board, and see what changed: roles opened, roles closed, and how long each has been open. Job postings only, no candidate data.

Pricing

from $1.50 / 1,000 role-scrapeds

Rating

0.0

(0)

Developer

Daniel

Daniel

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Track open roles across any company's Greenhouse, Lever or Ashby board, and see what actually changed: which roles opened, which closed, and how long each has been sitting there.

Why this instead of a job list

A list of open roles is a commodity — the boards publish it themselves. What no single fetch can tell you is movement, and movement is the signal:

  • A company that opened 14 engineering roles this month is scaling, and is buying tools.
  • A role that has been open for 120 days is one they cannot fill.
  • A role that disappeared after 30 days was probably filled. One that disappeared after 4 was probably cancelled.

Getting that requires remembering the previous run, comparing against it, and reporting closures as first-class rows rather than silently dropping them. That is what this Actor does.

What you get

Per role — company, ATS, title, department, team, location, country, employment type, workplace type, remote flag, publication date, direct link and apply link. Description text is optional.

How long it has been opendaysOpen, computed from the board's own publication date. The single most useful field here, and the one a plain job list never carries.

What changed since your last run — every row carries a status:

StatusMeaning
openlisted last run and still listed
newappeared since the last run
closedwas listed last run, gone now — with daysOpenAtClose

A hiring summary per company — open roles, opened and closed since last run, net change, median days open, top departments and remote share. Written to the key-value store under HIRING_SUMMARY.

Sample output

{
"jobId": "8077887",
"company": "Stripe",
"ats": "greenhouse",
"title": "Account Executive, Bridge",
"department": "Sales",
"location": "SF, NYC, SEA, CHI",
"isRemote": false,
"status": "new",
"publishedAt": "2026-07-22T17:15:53.000Z",
"daysOpen": 30,
"daysSincePreviousRun": 7,
"url": "https://stripe.com/jobs/search?gh_jid=8077887"
}

Who uses this

  • Sales and go-to-market teams — hiring is a buying signal. A company staffing up a function is budgeting for it.
  • Recruiters and talent teams — watch competitor pipelines, and see which roles stay open longest in your market.
  • Investors and analysts — headcount demand as a growth proxy, tracked weekly without a data vendor.
  • Job aggregators — a clean, normalised feed across three ATS platforms in one call.

Input

FieldDefaultNotes
companies3 examples"ats:token" entries, e.g. greenhouse:stripe. A bare token means Greenhouse.
includeDescriptionfalseFull text per role. Multiplies payload ~12x.
maxJobsPerCompany100Caps results and cost per board. Raise it for a company's full pipeline — large employers list well over a thousand roles.
trackChangestrueStores a snapshot so the next run reports what moved.
reportClosedRolestrueEmit closed roles as rows. They are billed like any other row.

Finding a company's token: it is the last part of its careers URL — boards.greenhouse.io/stripe, jobs.lever.co/palantir, jobs.ashbyhq.com/ramp.

The defaults run as-is and return about 300 live roles across three well-known boards, so you can see the shape of the output before deciding what to track.

Pricing

Pay per event, $1.50 per 1,000 roles.

  • A default run — three boards, 100 roles each — costs $0.45.
  • Tracking those same three companies weekly costs about $1.95 a month.
  • Pulling a large employer's full pipeline (raise maxJobsPerCompany) costs proportionally more: Stripe alone lists over 500 open roles.

Days-open, change tracking and the hiring summary are included. You pay per role and for nothing else.

Change tracking

Snapshots are keyed by the exact set of companies you asked for. Add a company and the comparison restarts, because every one of its roles would otherwise look like this week's hiring surge.

Run it weekly against a fixed watchlist and you build a hiring history for those companies instead of a series of disconnected exports.

Limits, stated plainly

  • Greenhouse omits departments unless descriptions are included. Its lightweight endpoint returns location but not department; set includeDescription if you need it, and accept the larger payload.
  • A closed role is not proof of a hire. It means the posting is gone. It may have been filled, cancelled, or merged into another requisition. Treat it as a signal, not a record.
  • A board returning zero roles is treated as unverified. A mistyped token and a company with nothing open look identical from the outside, so no closures are inferred for it and it is listed in companiesFailed. This is deliberate: reporting an entire pipeline as closed because of a typo would be worse than reporting nothing.
  • Three platforms, not all of them. Greenhouse, Lever and Ashby are supported because all three were verified against live boards. Workable, Recruitee and SmartRecruiters expose similar endpoints and are not included until they are tested the same way.
  • Only public boards. If a company does not publish its roles openly, it does not appear here.

Data and privacy

This Actor returns job postings, which are company data. No candidate, applicant or recruiter personal information is fetched, derived or stored.

It reads the public job board APIs the platforms provide for exactly this purpose — the same endpoints that power each company's own careers page. No key, no login, no bypassed restriction.

FAQ

How many companies can I track at once? As many as you like. They are fetched concurrently and compared as one set.

Why is status never new on my first run? There is no previous run to compare against, so calling everything new would overstate hiring. Change fields fill in from the second run onwards.

Can I run it on a schedule? Yes, and it is built for it. Weekly against a fixed company list gives the cleanest signal.

What happens if one company's board breaks? That company is reported in companiesFailed and excluded from the run. The other companies are unaffected, and none of the failed company's roles are marked closed.