Greenhouse Jobs Scraper

Scrape public Greenhouse job boards for openings, descriptions, departments, locations, and application URLs.

Data fields

FieldTypeDescription
boardTokenvalueBoard exported in the dataset view.
companyNamevalueCompany exported in the dataset view.
jobIdvalueJob ID exported in the dataset view.
titlevalueTitle exported in the dataset view.
locationvalueLocation exported in the dataset view.
departmentvalueDepartment exported in the dataset view.
absoluteUrllinkJob URL exported in the dataset view.
updatedAtvalueUpdated exported in the dataset view.

Input preview

boardTokensGreenhouse board tokens
boardUrlsGreenhouse board URLs
includeContentInclude job description HTML
departmentDepartment filter
locationLocation filter
limitMaximum jobs

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Export public Greenhouse job boards by company board token or board URL.

Use this Greenhouse Jobs Scraper when you need current job titles, companies, locations, departments, application links, posting dates, requisition IDs, custom metadata, and optional full job description HTML from public Greenhouse career boards. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Company job-board export: Collect open roles from one or many public Greenhouse boards, such as airbnb, discord, or full boards.greenhouse.io URLs.
  • Hiring-signal monitoring: Track new roles, updated postings, departments, locations, requisition IDs, and apply links across target accounts.
  • Talent and market research: Compare hiring volume by company, function, city, country, remote status, or publishing date.
  • Job description enrichment: Turn on full description HTML when you need keyword analysis, search indexing, classification, or downstream parsing.
  • API-ready output: Send normalized job rows to spreadsheets, CRMs, warehouses, dashboards, alerts, or AI-agent workflows.

What can it do?

Greenhouse Job Board Scraper collects public jobs from Greenhouse-hosted career boards and saves one dataset row per job.

  • Start from board tokens: Enter values such as airbnb, okta, or discord.
  • Start from board URLs: Paste public Greenhouse URLs such as https://boards.greenhouse.io/airbnb; the actor extracts the token.
  • Filter jobs: Narrow results by department or location with case-insensitive text filters.
  • Control output size: Use limit to cap saved jobs and keep test runs small.
  • Choose description depth: Keep includeContent enabled for full HTML descriptions, or disable it for lighter exports.
  • Export clean data: Download rows from Apify or use the Dataset API for automated workflows.

Common workflows

  • Recruiting research: Monitor open roles at target companies and identify teams that are actively hiring.
  • Talent intelligence: Build dashboards for hiring volume, department mix, location strategy, and remote-work signals.
  • Lead generation: Find companies expanding a function, region, or team before sales outreach.
  • Competitive tracking: Watch competitor job boards for new product, engineering, sales, security, or operations roles.
  • Labor-market analysis: Compare public job supply across companies, departments, cities, and dates.
  • Data pipelines: Load Greenhouse job rows into Google Sheets, BigQuery, Snowflake, a CRM, or an internal warehouse.

Job-board workflow

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

Use Workday Jobs Scraper, Lever Jobs Scraper, and this actor for company ATS boards.

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

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
}

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 to run it

  1. Open the actor on Apify.
  2. Add one or more Greenhouse board tokens or board URLs.
  3. Keep a small limit for the first test.
  4. Choose whether to include full job descriptions.
  5. Start the run.
  6. Download the dataset or use the API.

Tips for best results

  • Use board tokens for repeat runs: Tokens such as airbnb are stable and easy to schedule.
  • Use board URLs while exploring: Paste the public board URL when copying from a careers page.
  • Start with a low limit: Try limit: 25 or limit: 50, inspect the output, then increase it.
  • Filter after one broad run: Run once without filters to see exact department and location names.
  • Keep descriptions only when useful: Disable includeContent if you only need titles, URLs, locations, and timestamps.
  • Deduplicate by job ID: Use jobId or absoluteUrl when combining scheduled runs.

Limits and caveats

  • Public boards only: The actor collects public jobs from public Greenhouse boards.
  • No recruiter dashboards: It does not access private recruiter pages, applicant data, or internal hiring systems.
  • No applications: It does not apply to jobs or submit forms.
  • Custom careers pages vary: Some companies use custom pages that are not backed by a public Greenhouse board token.
  • Metadata differs by company: Greenhouse custom metadata fields are company-specific.

Integrations

You can connect the dataset to downstream tools:

  • Send CSV exports to Google Sheets for recruiting or sales review.
  • Load JSON rows into BigQuery, Snowflake, or a data lake.
  • Use Make or Zapier to trigger hiring-signal alerts.
  • Add webhooks after scheduled runs to notify a Slack channel.
  • Feed job descriptions into classification, keyword extraction, or enrichment pipelines.

API usage

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

Node.js

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

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

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 and AI agents

Use this actor from MCP-compatible tools through Apify MCP Server.

MCP URL:

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

Claude Code setup:

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

Claude Desktop JSON config:

{
  "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."

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Common questions

Questions and answers reused from the canonical actor README.

What is a Greenhouse board token?

A board token is the part after boards.greenhouse.io/. For example, https://boards.greenhouse.io/airbnb uses the token airbnb.

Can I scrape multiple Greenhouse job boards at once?

Yes. Add multiple values to boardTokens, boardUrls, or both. The actor deduplicates board tokens before scraping.

Why did a board return zero jobs?

Check that the board token is correct and publicly available. If the company uses a custom careers page, it may not expose a public Greenhouse board.

Why did my department or location filter return zero jobs?

Run once without the filter and inspect the exact department and location values returned by Greenhouse. Then use a broader matching term.

Does the actor collect applicant data?

No. It only collects public job posting data from public Greenhouse boards.