Greenhouse Jobs Scraper
parseforge/greenhouse-jobs-scraper
JobsLead generationAutomation
Scrapes job listings from a single company's Greenhouse board. Returns each listing as a flat row with title, department, location, and full description.
- Total users
- 14
- Monthly active
- 2
- Total runs
- 254
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 9 days ago
Overview
Greenhouse Jobs Scraper
Scrape job listings from any company's Greenhouse board by slug, up to a million per run. Each listing returns the title, department, location, and full description. No API key or login required. Export to CSV, JSON, Excel, or XML.
Greenhouse hosts career pages for thousands of companies, but browsing them one by one or building a custom integration takes time. This scraper reads the public job board for any company slug you provide and returns every active listing in a clean, flat schema. It works directly from the board URL, so you skip the overhead of official APIs.
| Who uses it | What they scrape Greenhouse for |
|---|---|
| Recruiters | Monitor a competitor's open roles to benchmark hiring activity. |
| Job board aggregators | Pull fresh listings from a target company into a central feed. |
| Market analysts | Track which departments a company is expanding this quarter. |
| Job seekers | Export every open role from a favorite employer into a spreadsheet. |
What it does
This Actor collects job listings from a single company's Greenhouse board and returns each one as a flat row with its title, department, location, and full description.
- ๐ข Company slug input: provide the board token from the URL (e.g. 'airbnb') and the Actor handles the rest.
- ๐ Configurable limit: set a maximum number of listings to collect, from one to a million per run.
- ๐ Full job descriptions: each row includes the complete HTML description as published on the board.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Greenhouse data
๐ Monitor competitor hiring.
A talent intelligence team pulls all open roles from a competitor's Greenhouse board every Monday to spot new departments and senior hires.
๐ฐ Build a niche job board.
An aggregator scrapes listings from ten target companies and combines them into a single searchable feed for their audience.
๐ Audit a company's career page.
A consultant exports every listing to check for consistent formatting, salary bands, and department naming before a rebrand.
๐ Archive a job search.
A job seeker scrapes all current roles from a dream employer into a CSV so they can track which ones they applied to.
Why choose this scraper
| What you get | |
|---|---|
| No API registration | Reads the public board directly, so you never deal with OAuth or rate limits. |
| Fixed output schema | Every run returns the same fields, making it safe for automated pipelines. |
| Runs on Apify | Schedule it, integrate with webhooks, or call it from the API without managing servers. |
How it compares
This Actor focuses on scraping a single Greenhouse board deeply. The competitors below cover many ATS platforms at once, which is useful for broad aggregation but may not return the same depth of fields from a specific Greenhouse board.
| Feature | ParseForge | Career Site Job Listing API | Career Site Job Listing Feed |
|---|---|---|---|
| Scrapes a single Greenhouse board by slug | Yes | Not listed | Not listed |
| Returns full job description HTML | Yes | Not listed | Not listed |
| No API key or registration required | Yes | Not listed | Not listed |
| Covers 175k+ company career sites | No, single company per run | Yes | Yes |
| Enriched with AI and LinkedIn company data | Not listed | Yes | Yes |
Configure the run
Drive the Actor with a single company slug and an optional maximum item count. The scraper reads every active listing on the board and stops when it hits your limit. The Input tab lists every parameter.
A first run with the defaults:
{
"companySlug": "airbnb",
"maxItems": 10
}
A larger pull:
{
"companySlug": "airbnb",
"maxItems": 200
}
Pricing
Pay-per-result: $0.0095 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.95 |
| 1,000 results | $9.50 |
| 10,000 results | $95.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Greenhouse Jobs Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Greenhouse through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/greenhouse-jobs-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Double-check the company slug. It must match exactly what appears in the URL. Also confirm the company has active listings on their public board.
The run failed with an error.
First, verify the slug is correct. If it is, the board may be temporarily unreachable. Wait a few minutes and retry. If the problem persists, check the Apify log for a detailed error message.
I only got a few results but I know there are more.
Check the maxItems setting in your input. If it is set lower than the total number of listings, the Actor stops early. Increase the limit and run again.
The job description looks like raw HTML.
The description field preserves the HTML from the board. You can render it in a browser or use a tool to strip the tags if you need plain text.
Can I scrape a board that uses a custom domain?
Some companies map their Greenhouse board to a custom URL. Find the underlying boards.greenhouse.io URL and use the slug from that address.
FAQ
| Question | Answer |
|---|---|
| How do I find the company slug? | Look at the company's Greenhouse jobs URL. The slug is the part right after boards.greenhouse.io/. For example, in boards.greenhouse.io/airbnb the slug is 'airbnb'. |
| Does this scraper handle multiple companies at once? | Each run targets one company slug. To scrape several companies, run the Actor once per slug or use multiple tasks. |
| Can I filter by department or location? | The Actor collects every active listing on the board. You can filter the results after the run in a spreadsheet or with Apify's dataset tools. |
| What output formats are supported? | You can export your dataset to CSV, JSON, Excel, XML, or RSS from the Apify console. |
| Is there a risk of getting blocked? | The Actor reads the public job board that Greenhouse serves to browsers. It uses standard Apify proxy rotation to keep requests reliable. |
| Does it include salary information? | It captures whatever the company publishes. If a listing includes a salary range in the description, that text will appear in the output. |
| Can I schedule this to run daily? | Yes. Once you set up a task, you can schedule it to run on any interval through the Apify scheduler. |
| What happens if the company has no open roles? | The run completes with an empty dataset. You will not be charged for any results. |
| Does this work with Greenhouse's internal API? | No, it reads the public-facing job board HTML. You do not need a Greenhouse account or API key. |
| Can I get the apply link for each job? | Yes, the output includes the full URL to the job listing on Greenhouse, which contains the application form. |
Related actors
- google-jobs-scraper: Use this when you want to scrape job listings from Google's search results instead of a single company board.
- glassdoor-jobs-scraper: Use this when you need company reviews and salary data alongside job listings from Glassdoor.
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Greenhouse Software, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| companySlug required | string | Greenhouse board token for the company (e.g. 'airbnb', 'stripe', 'notion'). Find it in the company's jobs page URL: boards.greenhouse.io/{slug} | airbnb |
| maxItems | integer | How many job listings to collect per run. | 10 |
Pricing
from $9.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.009 to $0.0095 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~greenhouse-jobs-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
