# Greenhouse Job Board Scraper — All Company Jobs (`hipersoft/greenhouse-scraper`) Actor

Scrape all open jobs from any company's Greenhouse job board: title, location, department, office, full description, apply link and dates. Bulk company input. Official public API, no key.

- **URL**: https://apify.com/hipersoft/greenhouse-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00085 / job scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Greenhouse Job Board Scraper — Jobs, Departments & Apply Links

Scrape **every open job** from any company that hosts its careers page on **Greenhouse** — title, location, department, office, full description, apply link and dates — into clean JSON, CSV, Excel or XML. Give it one or many company boards and get a complete, deduplicated job feed. Fast and reliable.

![Greenhouse Job Board Scraper input — companies, includeContent and maxJobsPerCompany in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/greenhouse-scraper-input.png)

### What does Greenhouse Job Board Scraper do?

The Greenhouse Job Board Scraper collects all open roles from the companies you list and exports each job as a structured record. Pass one or many Greenhouse board tokens or board URLs, choose whether to include full descriptions, and it returns a clean, deduplicated feed of jobs with titles, locations, departments, offices, apply links and publish dates.

### What data can you scrape from Greenhouse?

| Data | Fields |
| --- | --- |
| 🏢 Company | board token, company name |
| 📋 Job | job ID, title, location, department(s), office(s) |
| 🔗 Apply | direct apply URL, requisition ID |
| 🗓️ Dates | first published, last updated, application deadline |
| 📝 Content | full description (plain text) and original HTML |

### Use cases

- **Job aggregators** — feed thousands of live roles from company career pages into your board.
- **Recruiting intelligence** — track who's hiring, for which teams, and where.
- **Hiring-trend analysis** — monitor headcount growth by department and office over time.
- **Sales & lead lists** — spot companies expanding into a function you sell to.
- **ATS / market monitoring** — watch competitor and target-account hiring in near real time.
- **Talent sourcing** — build role-specific feeds for candidates and recruiters.

### How to scrape Greenhouse data

1. Add the **Greenhouse Job Board Scraper** to your Apify account.
2. Add one or many **companies** — a Greenhouse board token (the slug in `boards.greenhouse.io/<token>`) or a full board URL.
3. Toggle **includeContent** and set **maxJobsPerCompany** to control depth.
4. Click **Run** and watch jobs stream into the dataset.
5. Export to JSON, CSV, Excel or XML, or pull them through the Apify API.

### Input

List the boards you want, choose whether to include full descriptions, and cap jobs per company if needed.

#### Example input

```json
{
  "companies": ["stripe", "databricks", "https://boards.greenhouse.io/airbnb"],
  "includeContent": true,
  "maxJobsPerCompany": 0
}
```

`companies` accepts a Greenhouse **board token** (the slug in `boards.greenhouse.io/<token>`) or a full board URL.

| Field | Description |
| --- | --- |
| `companies` | Greenhouse board tokens or board URLs to scrape. |
| `includeContent` | Include each job's full description (text + HTML). Default true. |
| `maxJobsPerCompany` | Cap jobs per company. 0 = all. |

### Output

Each job is one clean record:

```json
{
  "board": "stripe",
  "companyName": "Stripe",
  "jobId": 7954688,
  "title": "Account Executive, AI Sales",
  "location": "San Francisco, CA",
  "departments": ["Account Executives"],
  "offices": ["San Francisco"],
  "updatedAt": "2026-07-28T12:03:00-04:00",
  "firstPublished": "2026-07-01T09:00:00-04:00",
  "applicationDeadline": "2026-08-31",
  "requisitionId": "REQ-4821",
  "applyUrl": "https://stripe.com/jobs/search?gh_jid=7954688",
  "description": "About the team…",
  "contentHtml": "<div>About the team…</div>"
}
```

![Greenhouse Job Board Scraper output example — job title, department and apply link as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/greenhouse-scraper-output.png?v=1)

#### Output schema

| Field | Type | Description |
| --- | --- | --- |
| `board` | string | Greenhouse board token (slug) the job came from. |
| `companyName` | string | Company name for the board. |
| `jobId` | integer | Unique Greenhouse job posting ID. |
| `title` | string | Job title. |
| `location` | string | Job location as posted. |
| `departments` | array | Department(s) the role belongs to. |
| `offices` | array | Office(s) associated with the role. |
| `updatedAt` | string (ISO date) | When the posting was last updated. |
| `firstPublished` | string (ISO date) | When the posting was first published. |
| `applicationDeadline` | string | Application deadline, when provided. |
| `requisitionId` | string | Employer's internal requisition ID, when provided. |
| `applyUrl` | string (URL) | Direct link to apply for the role. |
| `description` | string | Full job description as plain text. |
| `contentHtml` | string | Original job description HTML. |

### Need more job data?

- [Lever Job Board Scraper](https://apify.com/hipersoft/lever-scraper) — jobs from Lever-hosted boards.
- [Ashby Job Board Scraper](https://apify.com/hipersoft/ashby-scraper) — jobs from Ashby boards.
- [RemoteOK Scraper](https://apify.com/hipersoft/remoteok-scraper) — remote job listings.
- [Indeed Scraper](https://apify.com/hipersoft/indeed-scraper) — jobs across employers.

### FAQ

**Where do I find a company's board token?**
It's the slug in the careers URL — `boards.greenhouse.io/stripe` → `stripe`. You can paste the full URL too.

**How many companies can I scrape?**
As many as you like — add them all to `companies` and each is fetched in turn.

**Do I need any setup or a login?**
No setup and no login. Just add the boards you want and run.

**How does billing work?**
You pay only per job you get — no subscription. Our per-item price floors 20% below the cheapest comparable scraper.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus the Apify API for programmatic access.

**Can I skip the long descriptions?**
Yes — set `includeContent` to false for a lighter, faster run that omits the description text and HTML.

**How fresh is the data?**
Each run fetches live postings, so results reflect each board at the moment you run the actor. The `updatedAt` field timestamps every job.

**Is it legal?**
The actor returns only publicly available job postings. You are responsible for how you use the data.

**Can I connect it to my other tools?**
The Greenhouse Job Board Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

### Related Actors

- [Lever Job Board Scraper](https://apify.com/hipersoft/lever-scraper) — jobs from Lever boards.
- [RemoteOK Scraper](https://apify.com/hipersoft/remoteok-scraper) — remote-first job listings.
- [Indeed Scraper](https://apify.com/hipersoft/indeed-scraper) — jobs across many employers.

### Notes

Original clean-room implementation. Returns only public job-posting data; you are responsible for how you use it. Not affiliated with or endorsed by Greenhouse.

# Actor input Schema

## `companies` (type: `array`):

Greenhouse board tokens or board URLs — e.g. "stripe", "airbnb", or https://boards.greenhouse.io/stripe. Add as many as you like.

## `includeContent` (type: `boolean`):

Include each job's full description (plain text + HTML). Turn off for a lighter, faster listing.

## `maxJobsPerCompany` (type: `integer`):

Limit jobs collected per company. 0 = all.

## Actor input object example

```json
{
  "companies": [
    "stripe",
    "databricks"
  ],
  "includeContent": true,
  "maxJobsPerCompany": 0
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "stripe"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/greenhouse-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "companies": ["stripe"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/greenhouse-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "stripe"
  ]
}' |
apify call hipersoft/greenhouse-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/greenhouse-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Sp4YHh5cAOJ3ZpGHr/builds/5cq0HEQAh4OYDvEga/openapi.json
