Greenhouse Jobs Scraper avatar

Greenhouse Jobs Scraper

Pricing

from $0.03 / 1,000 result extracteds

Go to Apify Store
Greenhouse Jobs Scraper

Greenhouse Jobs Scraper

Scrape public Greenhouse job boards by token or URL. Export job titles, locations, departments, dates, metadata, descriptions, and application links.

Pricing

from $0.03 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 minutes ago

Last modified

Share

Scrape public Greenhouse job boards and export clean job-opening data from companies that use Greenhouse for hiring.

Use this actor when you need current roles, locations, departments, application links, posting dates, requisition IDs, custom metadata, and optional full job description HTML from public Greenhouse boards.

Job data workflow

Use LinkedIn Jobs Scraper for marketplace job postings by keyword and location.

Use Workday Jobs Scraper and Greenhouse Jobs Scraper for company ATS boards.

Join outputs by company, title, location, and job URL to build recruiting research, hiring-signal, and labor-market datasets.

What does Greenhouse Jobs Scraper do?

Greenhouse Jobs Scraper collects job openings from public Greenhouse-hosted career boards.

It accepts either board tokens, such as airbnb, or board URLs, such as https://boards.greenhouse.io/airbnb.

The actor returns one dataset item per job.

Each item includes the job title, company name, location, departments, offices, Greenhouse job URL, timestamps, requisition identifiers, metadata, and scrape timestamp.

You can also include the full job description HTML for enrichment, search indexing, or downstream parsing.

Who is it for?

Recruiters use this scraper to monitor hiring activity at target companies.

Talent intelligence teams use it to build competitive hiring dashboards.

Lead generation teams use it to identify companies and teams that are growing.

Job-market analysts use it to track role volume by department, location, and date.

Sales teams use it to find hiring signals before outreach.

Developers use it to feed job data into warehouses, CRMs, BI tools, and internal workflows.

Why use this actor?

✅ Simple inputs: use board tokens or board URLs.

✅ Fast HTTP runs: no browser automation is required for public Greenhouse boards.

✅ Clean output: normalized fields are ready for exports and APIs.

✅ Optional descriptions: include or skip full HTML content depending on your use case.

✅ Filters: narrow results by department and location.

✅ Multiple boards: scrape many Greenhouse boards in one run.

✅ Low-cost design: lightweight requests keep test runs inexpensive.

Example use cases

Track all open jobs at a list of target accounts.

Monitor engineering hiring by company.

Build a weekly alert for new sales or customer success roles.

Collect job description text for keyword analysis.

Compare hiring by city, country, or remote status.

Enrich company lead lists with current hiring signals.

Export Greenhouse jobs to Google Sheets or BigQuery.

Input overview

You can provide board tokens, board URLs, or both.

If both are provided, the actor deduplicates board tokens before scraping.

A board token is the part after boards.greenhouse.io/.

For example, https://boards.greenhouse.io/airbnb uses the token airbnb.

Input fields

FieldTypeDescription
boardTokensarrayGreenhouse board tokens such as airbnb, okta, or discord.
boardUrlsarrayPublic Greenhouse board URLs. The actor extracts tokens automatically.
includeContentbooleanInclude full job description HTML as descriptionHtml.
departmentstringOptional case-insensitive department filter.
locationstringOptional case-insensitive location filter.
limitintegerMaximum jobs to save across all boards.
proxyConfigurationobjectOptional proxy settings. Usually not needed.

Example input

{
"boardTokens": ["airbnb", "discord"],
"includeContent": true,
"limit": 100
}

Example input with board URLs

{
"boardUrls": [
{ "url": "https://boards.greenhouse.io/airbnb" },
{ "url": "https://boards.greenhouse.io/okta" }
],
"includeContent": false,
"limit": 50
}

Example input with filters

{
"boardTokens": ["discord"],
"department": "Engineering",
"location": "San Francisco",
"includeContent": true,
"limit": 25
}

Output data

The actor saves one item per Greenhouse job.

FieldDescription
boardTokenGreenhouse board token used for the request.
companyNameCompany name returned by Greenhouse.
jobIdPublic Greenhouse job ID.
titleJob title.
locationPrimary job location.
departmentsAll department names returned for the job.
departmentFirst department name for table-friendly exports.
officesOffice names returned for the job.
absoluteUrlPublic application or job detail URL.
updatedAtGreenhouse updated timestamp.
firstPublishedFirst published timestamp when available.
requisitionIdRequisition ID when available.
internalJobIdInternal Greenhouse job ID when available.
applicationDeadlineApplication deadline when available.
languageJob language code when available.
descriptionHtmlFull job description HTML when enabled.
metadataCustom Greenhouse metadata fields as key-value pairs.
scrapedAtTimestamp when the actor saved the job.

Example output

{
"boardToken": "airbnb",
"companyName": "Airbnb",
"jobId": 7995153,
"title": "Acquisition Manager",
"location": "Berlin, Germany",
"departments": [],
"department": null,
"offices": [],
"absoluteUrl": "https://careers.airbnb.com/positions/7995153?gh_jid=7995153",
"updatedAt": "2026-06-10T08:50:56-04:00",
"firstPublished": "2026-06-10T08:50:56-04:00",
"requisitionId": "ONE",
"internalJobId": 3468206,
"applicationDeadline": null,
"language": "en",
"metadata": {
"Workplace Type": "Hybrid"
},
"scrapedAt": "2026-06-15T20:40:14.391Z"
}

How much does it cost to scrape Greenhouse jobs?

The actor uses pay-per-event pricing.

There is a $0.005 start charge per run and a tiered per-job charge for each saved dataset item.

The BRONZE per-job price is $0.000027257 per saved job, with lower prices on higher Apify tiers.

A small test run with a low limit is recommended before running a long list of boards.

Final platform pricing is shown on the Apify Store page before you start a run.

Tips for best results

Use board tokens when you already know them.

Use board URLs when copying directly from a company careers page.

Keep includeContent enabled if you need full job descriptions.

Disable includeContent if you only need titles, URLs, locations, and timestamps.

Set a low limit for first tests.

Use department filters only when you know the company uses matching department names.

Use location filters for broad terms such as Remote, London, or Germany.

Integrations

Export jobs to CSV for spreadsheet review.

Send dataset items to Google Sheets using Apify integrations.

Load JSON into BigQuery, Snowflake, or a data lake.

Connect the actor to Zapier or Make for hiring alerts.

Use webhooks to notify a Slack channel after each run.

Feed job descriptions into text classification or keyword extraction pipelines.

API usage

You can run the actor from the Apify API, Apify Client, or command line.

Use the actor ID format shown on the Store page.

Node.js example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/greenhouse-jobs-scraper').call({
boardTokens: ['airbnb'],
includeContent: true,
limit: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python example

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/greenhouse-jobs-scraper').call(run_input={
'boardTokens': ['airbnb'],
'includeContent': True,
'limit': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL example

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~greenhouse-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"boardTokens":["airbnb"],"includeContent":true,"limit":25}'

MCP usage

Use Apify MCP Server to run this actor from AI tools that support MCP.

Claude Code users can connect the Apify MCP server and ask for Greenhouse hiring data.

Claude Desktop users can add Apify MCP in their MCP configuration.

Example MCP URL:

https://mcp.apify.com/?tools=fetch_cat/greenhouse-jobs-scraper

Claude Code CLI setup:

$claude mcp add apify-greenhouse-jobs "https://mcp.apify.com/?tools=fetch_cat/greenhouse-jobs-scraper"

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-greenhouse-jobs": {
"url": "https://mcp.apify.com/?tools=fetch_cat/greenhouse-jobs-scraper"
}
}
}

Example prompts:

  • "Run the Greenhouse Jobs Scraper for Airbnb and summarize engineering roles."
  • "Get the latest Discord Greenhouse jobs and group them by department."
  • "Find jobs from these Greenhouse boards that mention data engineering."

FAQ and troubleshooting

If a board returns zero jobs, check that the board token is correct and publicly available.

If department filtering returns zero jobs, run once without the filter and inspect the exact department names.

If location filtering returns zero jobs, try a broader location term.

If you do not need descriptions, set includeContent to false to reduce output size.

Limitations

The actor only collects public jobs from public Greenhouse boards.

It does not access private recruiter dashboards or applicant data.

It does not apply to jobs or submit forms.

Some companies use custom career pages that are not backed by a public Greenhouse board token.

Legality and ethical use

This actor collects publicly available job posting data.

Use the data responsibly and comply with applicable laws, website terms, and privacy requirements.

Do not use the actor to collect personal applicant data.

Do not overload source websites with excessive schedules or unnecessary repeated runs.

Use this actor with other Anna recruiting and company-data scrapers as they become available.

Related actor links should use the official Anna Apify account once published.

Changelog

Initial version supports public Greenhouse board tokens, board URLs, content toggle, department filters, location filters, and normalized job output.

Support

If you need a field that is visible on public Greenhouse jobs but not included in the dataset, open an issue with an example board token and the field you need.

If a public board does not work, include the exact board URL and run ID so it can be reproduced.

Quick start checklist

  1. Open the actor input.

  2. Enter one or more board tokens.

  3. Keep the default low limit for the first run.

  4. Run the actor.

  5. Review the dataset table.

  6. Increase the limit or add more boards when the output looks right.

Field notes

department is a convenience field for tables.

departments preserves all department names returned by Greenhouse.

metadata preserves custom company-specific fields.

descriptionHtml is optional because job descriptions can be long.

absoluteUrl is the best link to use for users and downstream systems.

Scheduling ideas

Run daily to monitor new roles at target accounts.

Run weekly to build historical hiring trends.

Run monthly to refresh company hiring snapshots.

Use webhooks after scheduled runs to update dashboards.

Data quality checks

Check jobId for stable deduplication.

Check updatedAt for changed postings.

Check firstPublished for newly opened jobs.

Check absoluteUrl before sharing links externally.

Check custom metadata fields because every company can define them differently.