Greenhouse Jobs API & Hiring Signals avatar

Greenhouse Jobs API & Hiring Signals

Pricing

from $1.20 / 1,000 greenhouse jobs

Go to Apify Store
Greenhouse Jobs API & Hiring Signals

Greenhouse Jobs API & Hiring Signals

Export public Greenhouse jobs as normalized records with filters, optional employer-published pay ranges, stable hashes, and free hiring summaries.

Pricing

from $1.20 / 1,000 greenhouse jobs

Rating

0.0

(0)

Developer

Murilo Lira

Murilo Lira

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Export published jobs from one or more Greenhouse Job Boards as clean JSON, CSV, or Excel-ready records. Filter by keyword, location, department, date, or explicit remote status, optionally fetch employer-published pay ranges, and receive a deterministic hiring summary for each company.

This Actor uses Greenhouse's documented public Job Board API. Greenhouse states that Job Board data is public and that authentication is not required for GET endpoints. No proxy, login, cookie, LLM, or third-party API key is required.

What you get

Each job record can include:

  • company and Greenhouse board token;
  • public job ID, internal job ID, and requisition ID when exposed;
  • title, location, department, office, and language;
  • first-published, updated, and application-deadline timestamps;
  • cleaned description text and source HTML;
  • explicit remote, hybrid, or onsite labels when observable;
  • employer-published pay ranges when optional detail enrichment is enabled;
  • application URL, source API URL, and a stable content hash;
  • raw source payload only when requested.

Each hiring-summary record contains source, matched, and published job counts; department and location distributions; explicit remote and disclosed-salary counts; and the newest observed update.

Unknown source values remain null. The Actor does not invent salary, workplace type, publication date, or company metadata.

Input example

{
"boards": ["stripe", "https://boards.greenhouse.io/cloudflare"],
"keywords": ["data", "machine learning"],
"excludeKeywords": ["intern"],
"locations": ["United States", "Remote"],
"maxJobs": 250,
"includeContent": true,
"includePayTransparency": true,
"maxPayDetails": 50,
"includeSummary": true
}

The board token is normally the company segment in a Greenhouse URL. For example, the token in https://boards.greenhouse.io/example is example. Official board and API URLs are also accepted and normalized.

Output example

{
"recordType": "job",
"source": "greenhouse",
"boardToken": "example",
"companyName": "Example, Inc.",
"jobId": "123456",
"internalJobId": "7890",
"requisitionId": "ENG-42",
"title": "Senior Data Engineer",
"location": "Remote - US",
"workplaceType": "remote",
"departments": ["Engineering"],
"offices": ["United States"],
"language": "en",
"firstPublishedAt": "2026-06-01T16:00:00Z",
"updatedAt": "2026-07-10T16:00:00Z",
"applicationDeadline": null,
"descriptionText": "Build and operate reliable data systems...",
"descriptionHtml": "<p>Build and operate reliable data systems...</p>",
"salaryRanges": [
{
"minimum": 120000,
"maximum": 180000,
"currency": "USD",
"interval": "YEAR",
"title": "US salary range",
"description": "Base salary"
}
],
"applicationUrl": "https://boards.greenhouse.io/example/jobs/123456",
"sourceApiUrl": "https://boards-api.greenhouse.io/v1/boards/example/jobs/123456",
"contentHash": "e7b9...",
"collectedAt": "2026-07-17T12:00:00Z",
"metadata": null,
"raw": null
}

Filtering behavior

  • keywords uses OR matching across title, location, description, and department.
  • excludeKeywords removes a job when any term matches the same fields.
  • locations and departments use case-insensitive substring matching against the corresponding published fields.
  • remoteOnly keeps only jobs explicitly marked remote in title or location. It does not treat missing location as remote.
  • updatedAfter is inclusive. Jobs whose update date is missing are preserved rather than guessed.
  • maxJobs is a global cap across all boards.

Filtering happens after one list request per board and before optional pay-detail requests.

Cost controls

The cheapest mode is includeContent: false, includePayTransparency: false, and a small maxJobs. A normal run makes one public request per board. Pay enrichment adds at most maxPayDetails requests globally, never per board.

The Actor is designed for 256 MB of memory and has no proxy or model-inference cost. Store pricing is $0.0012 per published greenhouse_job (US$1.20 per 1,000 jobs), plus a one-time $0.00005 apify-actor-start event per run. Hiring summaries are included at no extra charge.

API usage

After the Actor is published, it can be called with any Apify API client. The default dataset contains both jobs and summaries; filter on recordType when only one type is needed. RUN_SUMMARY in the default key-value store reports successful and failed boards, request totals, publication totals, and charge-limit status.

Limits and responsible use

  • Only currently published jobs exposed by Greenhouse are returned.
  • A valid board can legitimately contain zero jobs.
  • Pay ranges are returned only when the employer exposes them through Greenhouse.
  • Workplace labels are conservative text classifications, not employer guarantees.
  • Board failures are isolated. The run continues when at least one requested board succeeds.
  • The Actor only reads documented public GET endpoints and never submits applications.
  • Respect applicable laws, the source's terms, and job-posting rights in your use and redistribution of the data.

Support

For a reproducible issue, include the board token, a minimal redacted input, run ID, expected result, and observed result. Never post an Apify token or private applicant data.