Greenhouse Job Listings API – Careers Board Scraper avatar

Greenhouse Job Listings API – Careers Board Scraper

Pricing

Pay per event

Go to Apify Store
Greenhouse Job Listings API – Careers Board Scraper

Greenhouse Job Listings API – Careers Board Scraper

Scrape live job postings from any company's Greenhouse board. Clean JSON per job with dedup, so scheduled runs only return newly-posted roles. For recruiters, ATS aggregators and hiring-signal feeds.

Pricing

Pay per event

Rating

0.0

(0)

Developer

K O

K O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Greenhouse Jobs Scraper – New Postings Feed API

Scrape live job postings from any company's Greenhouse job board and get one clean JSON record per role — title, location, departments, offices, requisition id, post/update dates and a direct apply URL. Built-in deduplication means a scheduled run only returns newly-posted jobs, so you can wire it straight into a hiring-signal feed, a niche job board, or a sourcing tool.

Who uses it

Recruiters and sourcers, job-board and ATS aggregators, sales teams tracking a target account's hiring, labor-market analysts, and anyone building a "new roles at companies I follow" alert.

Why this is worth charging for

Greenhouse exposes a public board API, but you still have to discover each company's board token, page through boards one at a time, decode HTML-entity job descriptions, and diff runs yourself to find what's actually new. This actor does all of that: pass a list of companies, get a normalized, deduplicated feed you can schedule.

Input

FieldDescription
companiesOne or more Greenhouse board tokens — the slug in job-boards.greenhouse.io/<token> (e.g. airbnb, stripe, gitlab).
includeDescriptionFetch each posting's full HTML description. Off by default for lean records.
onlyNewSinceLastRunRecommended for schedules — skips jobs already returned by a previous run, so you're only charged for genuinely new postings.
maxItemsStop after this many normalized records.

Output

Each dataset item is one normalized job:

{
"jobId": "7996480",
"company": "airbnb",
"title": "Acquisition Manager",
"location": "Milan, Italy",
"departments": ["Sales"],
"offices": ["Milan"],
"updatedAt": "2026-06-10T09:22:20-04:00",
"firstPublished": "2026-01-02T00:00:00-05:00",
"requisitionId": "R-123",
"url": "https://careers.airbnb.com/positions/7996480",
"descriptionHtml": null,
"source": "Greenhouse"
}

Pricing (Pay-Per-Event)

  • query — charged once per run for the board poll.
  • job-record — charged per normalized job pushed. This is the primary event.
  • apify-actor-start (Apify-managed) — covers baseline compute per run.

A daily monitor of a handful of companies returns a few new roles for pennies; a full-board pull of a large employer is a larger one-time run you control with maxItems.

Source & reliability

Data comes from Greenhouse's public boards-api.greenhouse.io service. No API key, no proxy needed. Run npm test for the offline self-test covering the normalizer and its edge cases.

FAQ

Where do I find a company's board token?

Open the company's Greenhouse careers page — the token is the slug in the URL, e.g. job-boards.greenhouse.io/airbnbairbnb.

Can I get full job descriptions?

Yes — set includeDescription to true and each record includes the decoded HTML description.

How does it avoid charging me for the same job twice?

With onlyNewSinceLastRun on (the default), the actor persists the ids it has already returned and skips them next run, so a schedule only bills for new postings.


SEO keywords: Greenhouse jobs scraper, Greenhouse board API, job posting scraper, ATS scraper, new jobs feed, hiring signals, recruiting data API, job board aggregator