Greenhouse Jobs Scraper
Pricing
from $0.03 / 1,000 result extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 minutes ago
Last modified
Categories
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
| Field | Type | Description |
|---|---|---|
boardTokens | array | Greenhouse board tokens such as airbnb, okta, or discord. |
boardUrls | array | Public Greenhouse board URLs. The actor extracts tokens automatically. |
includeContent | boolean | Include full job description HTML as descriptionHtml. |
department | string | Optional case-insensitive department filter. |
location | string | Optional case-insensitive location filter. |
limit | integer | Maximum jobs to save across all boards. |
proxyConfiguration | object | Optional 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.
| Field | Description |
|---|---|
boardToken | Greenhouse board token used for the request. |
companyName | Company name returned by Greenhouse. |
jobId | Public Greenhouse job ID. |
title | Job title. |
location | Primary job location. |
departments | All department names returned for the job. |
department | First department name for table-friendly exports. |
offices | Office names returned for the job. |
absoluteUrl | Public application or job detail URL. |
updatedAt | Greenhouse updated timestamp. |
firstPublished | First published timestamp when available. |
requisitionId | Requisition ID when available. |
internalJobId | Internal Greenhouse job ID when available. |
applicationDeadline | Application deadline when available. |
language | Job language code when available. |
descriptionHtml | Full job description HTML when enabled. |
metadata | Custom Greenhouse metadata fields as key-value pairs. |
scrapedAt | Timestamp 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 ApifyClientimport osclient = 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().itemsprint(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.
Related scrapers
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
-
Open the actor input.
-
Enter one or more board tokens.
-
Keep the default low limit for the first run.
-
Run the actor.
-
Review the dataset table.
-
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.