# Greenhouse Job Board Scraper

> Greenhouse Job Board Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes structured job listings from one or more Greenhouse ATS job boards, with rich filtering by title, location, description, date, and organization.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/greenhouse?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/greenhouse-job-board-scraper-82482762
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ZnGCutHxmaSF71SwlIDua

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability greenhouse-job-board-scraper-82482762 -d '<json body>'
```

Example prompt: Pull all software engineering and data science jobs posted after 2024-11-01 from the Greenhouse boards for 'greenhouse-demo' and 'acmecorp', sorted by newest, skip anything with 'senior' in the title, and give me up to 50 results with full descriptions.

## When to prefer this

Use this endpoint when you need structured job data from employers using the Greenhouse ATS platform — especially when you need to filter by title, location, description content, date range, or organization name across one or more boards in a single call. It is preferable over generic web scrapers because it understands Greenhouse's board structure natively and returns clean, structured fields. Choose it when you need to aggregate jobs from multiple Greenhouse employers simultaneously or when you want to monitor new postings on a recurring basis.

## Known failure modes

- Invalid or non-existent board token returns empty result set (not charged)
- Malformed date format in postedAfter/postedBefore causes validation error
- Private or password-protected Greenhouse boards return no results
- descriptionSearch filter with includeDescription:false will not work as intended
- Network timeout on very large boards with many listings

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched jobs and an array of job items, each containing the job ID, public URL, title, board token, organization name, internal job ID, requisition ID, organization URL, and optionally full HTML and plain-text job descriptions.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "boards": {
   "type": "array",
   "description": "Board tokens or public board URLs to scrape. Each board is one employer; enter multiple boards to combine employers."
  },
  "sortBy": {
   "enum": [
    "newest",
    "source"
   ],
   "type": "string",
   "default": "newest",
   "description": "Sort each board by publication date or keep the source order."
  },
  "maxItems": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Stop after this many matching jobs across all boards. Set 0 to collect all matches."
  },
  "postedAfter": {
   "type": "string",
   "description": "Include jobs first published on or after this date, in YYYY-MM-DD format."
  },
  "titleSearch": {
   "type": "array",
   "description": "Include jobs whose title contains any listed phrase, ignoring case."
  },
  "postedBefore": {
   "type": "string",
   "description": "Include jobs first published on or before this date, in YYYY-MM-DD format."
  },
  "locationSearch": {
   "type": "array",
   "description": "Include jobs whose source location text contains any listed phrase, ignoring case."
  },
  "descriptionSearch": {
   "type": "array",
   "description": "Include jobs whose plain text description contains any listed phrase, ignoring case. Requires descriptions."
  },
  "includeDescription": {
   "type": "boolean",
   "default": true,
   "description": "Fetch full job descriptions as both HTML and plain text. Turn off for smaller responses when descriptions are not needed."
  },
  "organizationSearch": {
   "type": "array",
   "description": "Include jobs whose employer name contains any listed phrase, ignoring case."
  },
  "titleExclusionSearch": {
   "type": "array",
   "description": "Exclude jobs whose title contains any listed phrase, ignoring case."
  },
  "locationExclusionSearch": {
   "type": "array",
   "description": "Exclude jobs whose source location text contains any listed phrase, ignoring case."
  },
  "descriptionExclusionSearch": {
   "type": "array",
   "description": "Exclude jobs whose plain text description contains any listed phrase, ignoring case. Requires descriptions."
  },
  "organizationExclusionSearch": {
   "type": "array",
   "description": "Exclude jobs whose employer name contains any listed phrase, ignoring case."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "url": null,
    "title": null,
    "boardToken": null,
    "organization": null,
    "internalJobId": null,
    "requisitionId": null,
    "organizationUrl": null
   }
  ],
  "product": "greenhouse"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/greenhouse-job-board-scraper-82482762/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
