Skip to content
Tidewell Software
ATS Jobs API

Greenhouse Job Board API: jobs as JSON

Every open job on a company's Greenhouse board, with location, remote flag and salary.

Steps

  1. Get an API token. Apify Console → Settings → API & Integrations. Export it as APIFY_TOKEN.
  2. Install the client. pip install apify-client
  3. Find the board token. The path after boards.greenhouse.io/, e.g. airtable. Or use Which ATS?
  4. Add the company. greenhouse:airtable, the careers URL or the domain.
  5. Run the actor. One row per job, same fields for all 8 ATSes.

Input

input.json
{"companies": ["greenhouse:airtable"], "maxJobs": 3}

Run it

run.py
import os

from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("tidewell/ats-jobs-api").call(run_input={
    "companies": ["greenhouse:airtable"],
    "maxJobs": 3
})

for j in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(j["title"], j["location"], j["salary_text"], j["apply_url"])

Output

Run on 9 November 2026: 3 jobs, $0.009 at list price.

Dataset row (trimmed)
{
  "company": "Airtable",
  "ats": "greenhouse",
  "board_slug": "airtable",
  "job_id": "8905022002",
  "title": "Renewals Associate",
  "department": "Customer Success & Services",
  "team": null,
  "location": "Remote - US",
  "locations": [
    "Remote - US",
    "Austin, Texas, United States",
    "New York, New York, United States",
    "San Francisco, California, United States"
  ],
  "country": null,
  "remote": true,
  "workplace_type": "remote",
  "employment_type": null,
  "posted_at": "2026-10-28T17:48:52Z",
  "salary_min": 98000,
  "salary_max": 127700,
  "salary_currency": "USD",
  "salary_period": "year",
  "salary_text": "$98,000 - $127,700",
  "salary_source": "description",
  "apply_url": "https://job-boards.greenhouse.io/airtable/jobs/8905022002",
  "source_url": "https://boards-api.greenhouse.io/v1/boards/airtable/jobs/8905022002",
  "scraped_at": "2026-11-09T19:56:26Z"
}

Options

Raw endpoint
boards-api.greenhouse.io/v1/boards/<token>/jobs, public, no key
keywords
Title match with * wildcards; excludeKeywords too
locations, remoteOnly
Location text match, or remote only
postedWithinDays
Only recent postings
onlyNewJobs
With stateKey, jobs not seen in earlier runs

Use it from Claude or ChatGPT

Apify MCP server, this actor only
https://mcp.apify.com/?tools=tidewell/ats-jobs-api
Claude
Settings → Connectors → Add custom connector. Paste the URL, sign in to Apify
Claude Code
claude mcp add apify "https://mcp.apify.com/?tools=tidewell/ats-jobs-api" -t http
ChatGPT
Add a custom MCP server with the URL and OAuth
Then ask
Use tidewell/ats-jobs-api to list Airtable's open remote jobs with salary and apply link.

FAQ

Does the Greenhouse Job Board API need an API key?

Not for reading jobs. The board's GET endpoints are public; only submitting applications needs a key.

Pricing

Pay per event, from the actor's live pricing on 9 November 2026.

Price
$0.003 per job returned ($3 per 1,000). No start fee.
Free
Boards not found or failed, filtered-out jobs
Product page
ATS Jobs API