Greenhouse Jobs Scraper: Export Any Greenhouse Job Board avatar

Greenhouse Jobs Scraper: Export Any Greenhouse Job Board

Pricing

$2.00 / 1,000 job scrapeds

Go to Apify Store
Greenhouse Jobs Scraper: Export Any Greenhouse Job Board

Greenhouse Jobs Scraper: Export Any Greenhouse Job Board

Scrape all open jobs from any Greenhouse job board: title, location, remote flag, department, employment type, posting date, salary when published, full description and apply URL. Paste a board URL or just the board token. No API key. $2.00 per 1,000 jobs.

Pricing

$2.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Greenhouse Jobs Scraper exports every open job from one or more Greenhouse job boards as JSON, CSV or Excel. You give it board URLs or just board tokens such as stripe, and it returns one record per job with title, location, offices, department, posting and update dates, the full description and the job URL. It costs $2.00 per 1,000 jobs, so a 500-job board costs about $1.00.

Features

  • Scrape Greenhouse job boards by URL or by board token. A bare token like airbnb is expanded to https://job-boards.greenhouse.io/airbnb.
  • Export Greenhouse jobs to CSV, JSON or Excel with the full description as HTML and plain text.
  • Scrape EU Greenhouse boards on boards.eu.greenhouse.io and job-boards.eu.greenhouse.io (pass the full URL for those).
  • Find the Greenhouse board behind a company careers page. Paste https://company.com/careers and the actor looks in the page HTML for a Greenhouse embed or link.
  • Filter Greenhouse jobs by keyword, office location, remote and posting date before they are saved.
  • Monitor new Greenhouse job postings on a schedule with postedWithinDays.
  • No API key, no login and no proxy. Greenhouse publishes every board through its public Job Board API, which is what this actor reads.

Use cases

  • Job board aggregation: keep a list of 200 Greenhouse companies in one input and refresh your own board daily.
  • Recruiting and sourcing: see which departments a competitor is hiring into and in which offices.
  • Market research: count open roles by Greenhouse department over time to track team growth at a set of companies.
  • Lead generation: a company opening several "Data Engineer" roles is a likely buyer of data tooling. Put those titles in keywords and run weekly.

Input

{
"startUrls": [
"https://job-boards.greenhouse.io/stripe",
"airbnb",
"https://job-boards.eu.greenhouse.io/examplecompany"
],
"keywords": ["engineer", "analyst"],
"locations": ["Dublin", "London", "Remote"],
"remoteOnly": false,
"postedWithinDays": 14,
"includeDescription": true,
"maxJobsPerCompany": 0
}
FieldTypeDefaultWhat it does
startUrlsarray of strings(required)Greenhouse board URLs or bare board tokens, one per line.
keywordsarray[]Keep only jobs whose title contains one of these words (case-insensitive).
locationsarray[]Keep only jobs whose location or office names contain one of these strings.
remoteOnlybooleanfalseKeep only jobs whose location text mentions remote, anywhere or similar.
postedWithinDaysinteger0Keep only jobs first published in the last N days (the update date is used when there is no publish date). 0 means no limit.
includeDescriptionbooleantrueInclude descriptionHtml and descriptionText. Greenhouse returns them in the same request, so this adds no extra requests.
maxJobsPerCompanyinteger0Cap per board, applied after the filters. 0 means no limit.
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy.

Accepted Greenhouse URL formats:

  • https://job-boards.greenhouse.io/stripe
  • https://boards.greenhouse.io/stripe
  • https://boards.greenhouse.io/embed/job_board?for=stripe (the embed URL)
  • https://job-boards.eu.greenhouse.io/company and https://boards.eu.greenhouse.io/company (EU-hosted boards, read from the EU API)
  • stripe (bare token, always expanded to the US host, so use the full URL for EU boards)
  • https://company.com/careers (a page that embeds or links a Greenhouse board)

The board token is the last part of the board URL: for https://job-boards.greenhouse.io/stripe it is stripe.

Output

One item per job:

{
"title": "Abuse Investigator",
"company": "Stripe",
"location": "Dublin",
"locations": ["Dublin", "Dublin, Ireland"],
"country": null,
"remote": false,
"workplaceType": null,
"department": "8611 Security Analytics",
"team": null,
"employmentType": null,
"seniority": null,
"salary": null,
"postedAt": "2026-09-03T17:32:53.000Z",
"updatedAt": "2026-09-18T09:04:11.000Z",
"url": "https://stripe.com/jobs/search?gh_jid=8172508",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8172508",
"descriptionHtml": "<h2>Who we are</h2><p>…</p>",
"descriptionText": "Who we are\n\nStripe is a financial infrastructure platform…",
"ats": "greenhouse",
"atsJobId": "8172508",
"sourceUrl": "https://job-boards.greenhouse.io/stripe",
"scrapedAt": "2026-09-25T08:15:02.000Z"
}

What Greenhouse exposes, and how it maps:

  • company is the company name Greenhouse returns for the board (falls back to the token).
  • location is the job's location text; locations adds the names of every office the job is attached to.
  • department joins all Greenhouse departments of the job with commas.
  • postedAt is Greenhouse's first published date and updatedAt its last update.
  • url and applyUrl are Greenhouse's absolute URL for the job. Many companies point this at their own careers site, as Stripe does above.
  • employmentType is filled only if the company has a custom Greenhouse field whose name contains "employment" or "type".
  • Greenhouse has no salary field in its public API. salary is filled only when a pay range appears near the start of the description text.
  • team, country, workplaceType and seniority are not published by Greenhouse and stay null.

If a token does not exist, the dataset gets one row with sourceUrl, ats, slug and an error message such as HTTP 404. Error rows are not charged.

Pricing

Pay per event: $0.002 per job saved to the dataset ($2.00 per 1,000 jobs). There is no start fee.

Worked example: you track 40 Greenhouse boards with about 150 open roles each, so 6,000 jobs per full run cost $12.00. Filter with keywords: ["engineer"] and keep, say, 1,800 of them, and the run costs $3.60, because jobs removed by filters are never charged. A daily run with postedWithinDays: 1 over the same boards typically returns a few dozen jobs and costs cents.

FAQ

Do I need an API key or a Greenhouse account? No. Greenhouse job boards are public and the actor reads them through the public Job Board API.

How many jobs can it get from one board? All of them. Greenhouse returns the whole board in one response, so there is no pagination limit. Use maxJobsPerCompany if you want fewer.

What can it not do? It only sees jobs the company publishes on its external board. Internal postings, application questions, hiring managers and candidate data are not available. It does not render JavaScript, so if a careers page loads Greenhouse through a script the actor cannot see, paste the board URL or the token instead.

Do I need proxies? Normally no. The actor retries rate limits and server errors with backoff. Enable proxyConfiguration only for very large lists that hit HTTP 429.

Can I paste boards from other ATS here? This actor is set up for Greenhouse. For mixed lists (Lever, Ashby, Workday, Workable and others) use the Career Page Jobs Scraper, which auto-detects 12 systems.

How do I export or automate the results? Download the dataset as JSON, CSV, Excel, XML or HTML, call the actor through the Apify API or SDKs, or connect it to Google Sheets, Make, Zapier or n8n.

Can I run it on a schedule? Yes. Create a schedule in Apify Console and set postedWithinDays so each run only returns new postings.