# Greenhouse Jobs Scraper (`straightforward_hydra/greenhouse-jobs-scraper`) Actor

Scrape all open jobs from any company using the Greenhouse ATS: title, location, department, full description and apply link. No API key needed.

- **URL**: https://apify.com/straightforward\_hydra/greenhouse-jobs-scraper.md
- **Developed by:** [Dev D](https://apify.com/straightforward_hydra) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Jobs Scraper 💼

**Scrape every open job from any company on the Greenhouse ATS — title, location, department, full description and apply link. No API key required.**

Thousands of companies post their jobs through **Greenhouse**. This Actor pulls every open role from one or more companies' Greenhouse boards in a single fast request each, and returns clean, structured job records. Point it at a list of companies, filter by title / department / location, and go.

> Uses Greenhouse's official public Job Board API — no key, no login, no browser. Public job postings, clean liability profile.

---

### What you can do with it

- 🧲 **Build a job board / aggregator** — pull roles from dozens of companies at once.
- 🕵️ **Hiring intelligence** — track who's hiring, for what, and where.
- 📈 **Recruiting & sourcing** — monitor target companies for new openings.
- 📊 **Market research** — analyze roles, departments and locations across employers.
- 🔔 **New-job alerts** — run on a schedule and push new roles to Slack / email.

### Features

- ✅ **No API key** — works out of the box.
- ✅ **Multiple companies per run** — pass many board tokens.
- ✅ **Full job descriptions** — optional HTML content for each role.
- ✅ **Filtering** — by title keyword, department and location.
- ✅ **Low-maintenance** — official public API, one request per company.

---

### Finding a company's board token

The **board token** is the company name in the Greenhouse URL:
`boards.greenhouse.io/`**`stripe`** → token is `stripe`.
Many company career pages are powered by Greenhouse; the token is usually the company's short name.

### Input

| Field | Description |
|---|---|
| **Greenhouse board tokens** | Company identifiers, e.g. `stripe`, `dropbox`. |
| **Title keyword** | Keep only jobs whose title contains this, e.g. `engineer`. |
| **Department** | Keep only jobs in a matching department. |
| **Location** | Keep only jobs whose location contains this, e.g. `Remote`. |
| **Include full job description** | Attach the HTML description. |
| **Max jobs per board** / **Max results** | Caps. |

#### Example — engineering roles at several companies

```json
{
  "boardTokens": ["stripe", "dropbox", "airbnb"],
  "titleKeyword": "engineer",
  "includeContent": true,
  "maxResults": 500
}
````

### Output

Each row is one job:

```json
{
  "board_token": "stripe",
  "company_name": "Stripe",
  "job_id": 1234567,
  "requisition_id": "REQ-123",
  "internal_job_id": 7654321,
  "title": "Account Executive, AI Sales",
  "location": "San Francisco, CA",
  "departments": ["Sales"],
  "offices": ["San Francisco"],
  "updated_at": "2026-07-13T14:37:36-04:00",
  "first_published": "2026-07-01T10:00:00-04:00",
  "apply_url": "https://boards.greenhouse.io/stripe/jobs/1234567",
  "content": "<p>Job description HTML…</p>"
}
```

### Run it on a schedule

Schedule the Actor to re-pull your target companies' boards daily, and connect a **Slack / email / webhook / Google Sheets** integration to get new roles pushed to you.

### Notes & limitations

- Uses Greenhouse's public Job Board API — no key needed.
- Only companies that host jobs on Greenhouse are covered (a very large share of tech and growth companies).
- `content` is the job description as HTML.
- This is **public job-posting data**.

***

#### Keywords

Greenhouse scraper, Greenhouse jobs, job scraper, job board API, ATS scraper, jobs data, hiring data, recruiting, job postings, careers scraper, tech jobs, job aggregator, hiring intelligence, sourcing, talent, open roles, company jobs, Greenhouse ATS, job listings, employment data.

# Actor input Schema

## `boardTokens` (type: `array`):

Company board identifiers — the name in the URL boards.greenhouse.io/<token>, e.g. stripe, dropbox, airbnb. Add as many as you like.

## `titleKeyword` (type: `string`):

Only keep jobs whose title contains this text, e.g. "engineer" or "sales". Leave empty for all jobs.

## `department` (type: `string`):

Only keep jobs in a department matching this text, e.g. "Engineering". Leave empty for all.

## `location` (type: `string`):

Only keep jobs whose location contains this text, e.g. "London" or "Remote". Leave empty for all.

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

Include the full job description (HTML) in each record.

## `maxJobsPerBoard` (type: `integer`):

Cap the number of jobs returned per company. Leave empty for all.

## `maxResults` (type: `integer`):

Stop after this many jobs in total. Leave empty for no limit.

## Actor input object example

```json
{
  "boardTokens": [
    "stripe"
  ],
  "includeContent": true
}
```

# 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 = {
    "boardTokens": [
        "stripe"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("straightforward_hydra/greenhouse-jobs-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 = { "boardTokens": ["stripe"] }

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

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

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

```

## CLI example

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=straightforward_hydra/greenhouse-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Greenhouse Jobs Scraper",
        "description": "Scrape all open jobs from any company using the Greenhouse ATS: title, location, department, full description and apply link. No API key needed.",
        "version": "0.1",
        "x-build-id": "YYJH6bSLmaSbV1J69"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/straightforward_hydra~greenhouse-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-straightforward_hydra-greenhouse-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/straightforward_hydra~greenhouse-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-straightforward_hydra-greenhouse-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/straightforward_hydra~greenhouse-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-straightforward_hydra-greenhouse-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "boardTokens"
                ],
                "properties": {
                    "boardTokens": {
                        "title": "Greenhouse board tokens",
                        "type": "array",
                        "description": "Company board identifiers — the name in the URL boards.greenhouse.io/<token>, e.g. stripe, dropbox, airbnb. Add as many as you like.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "titleKeyword": {
                        "title": "Title keyword",
                        "type": "string",
                        "description": "Only keep jobs whose title contains this text, e.g. \"engineer\" or \"sales\". Leave empty for all jobs."
                    },
                    "department": {
                        "title": "Department",
                        "type": "string",
                        "description": "Only keep jobs in a department matching this text, e.g. \"Engineering\". Leave empty for all."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Only keep jobs whose location contains this text, e.g. \"London\" or \"Remote\". Leave empty for all."
                    },
                    "includeContent": {
                        "title": "Include full job description",
                        "type": "boolean",
                        "description": "Include the full job description (HTML) in each record.",
                        "default": true
                    },
                    "maxJobsPerBoard": {
                        "title": "Max jobs per board",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap the number of jobs returned per company. Leave empty for all."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many jobs in total. Leave empty for no limit."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
