Greenhouse Job Groups — All Locations per Role
Pricing
$1.00 / 1,000 delivered job groups
Greenhouse Job Groups — All Locations per Role
Read public Greenhouse boards and group postings by the underlying job ID. Preserve every location, title and application link, with explicit completeness reports.
Pricing
$1.00 / 1,000 delivered job groups
Rating
0.0
(0)
Developer
Nathaniel Standridge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Greenhouse Job Groups
Get one result per underlying Greenhouse job, with every public posting, location, title and application link preserved inside it. Use it to populate a curated job feed or compare hiring activity across a watchlist of employers.
Greenhouse distinguishes a job from a job post: one job can have several posts
for different locations, languages or titles. This Actor groups only on the source
internal_job_id, within a board. Jobs that happen to share a title stay separate.
Prospect posts, whose internal job ID is null, remain separate individual results.
Input
{"boards": ["stripe", "anthropic", "figma"],"maxGroups": 2000}
Use the board token from a public Greenhouse URL. For
https://job-boards.greenhouse.io/stripe, use stripe. Up to 10 boards are accepted;
duplicates are checked once. Other ATS providers, custom career domains and URLs
are not accepted. There is no company directory or keyword discovery.
Defaults: up to 1,000 groups per run, 5,000 source posts per board, a 15-second request timeout, and a 120-second work budget. Set the platform timeout at least 120 seconds higher than the work budget for bounded storage calls and shutdown. Limits are explicit in the output summary.
Results
Each dataset row contains:
- A stable
groupId,boardToken,internalJobIdandgroupingBasis. primaryTitle, all distincttitles, all suppliedlocations, andrequisitionIds. The primary title is the title of the smallest posting ID.postingCountand apostingsarray preserving every posting ID, title, location, language, requisition string, source update time and application URL.kind(joborprospect) andobservedAt(this run's observation time).
The OUTPUT key-value record reports each board's source posts, groups, duplicate
rows, failures, skipped work and delivered results. Always read it before treating
the dataset as a complete board export. A valid empty board is successful with no
result rows. Failed boards and status summaries are not placed in the paid dataset.
Example: a job with three location posts produces one group containing all three posts. Two jobs with the same title but different internal IDs produce two groups. Null internal IDs are never combined. Locations are source labels; a label may itself list multiple places, and this Actor does not guess how to split it.
Abbreviated example of one group (synthetic data):
{"groupId": "greenhouse:example:job:42","kind": "job","internalJobId": "42","primaryTitle": "Software Engineer","locations": ["London", "New York"],"postingCount": 2,"postings": [{"postingId": "100", "title": "Software Engineer", "location": "London", "url": "https://example.com/jobs/100"},{"postingId": "101", "title": "Software Engineer", "location": "New York", "url": "https://example.com/jobs/101"}]}
Reliability and limits
A source list must match Greenhouse's declared total and pass field validation.
An oversized or malformed board produces no groups and a precise status code.
Source responses are capped at 8 MiB. Each complete group must fit a 4 MiB
delivery batch; the frozen plan is capped at 8 MiB. Reduce board count or
maxGroups if the plan is too large.
The Actor performs at most three attempts for transient failures; it does not
follow redirects, use proxies, or work around access restrictions.
The result plan is frozen before delivery. If the same run resumes, it reuses that plan and reads existing dataset group IDs before writing remaining rows. Separate runs are new snapshots and can produce and charge for the same jobs again. Do not run multiple processes against the same default dataset. If a dataset write has an uncertain outcome, the run stops; it does not blindly repeat that write. Writes contain at most 50 complete groups. A partly confirmed batch needs reconciliation before resuming; it is not automatically resubmitted.
Only the published job list is read. Descriptions, applicant records and private Greenhouse APIs are not accessed. No AI service, browser or external paid data provider is required. The operator's deployment token is never included in source.
Grouped jobs are not hires, headcount or vacancies: one job can have multiple openings. Source update times are not first publication dates. This version is a current snapshot; it does not infer closures, track changes across runs, verify that a role remains actively recruited, or merge across employers/ATS providers.
Pricing
$1.00 per 1,000 delivered groups, including prospect groups ($0.001 per row), with no separate start fee. Failed boards, empty results and the summary have no result fee. Each delivered dataset row is one billable group, including all of its location and posting variants.
Use Apify's maximum charge setting to cap result spend. The Actor checks the remaining affordable row count before each write and reports undelivered groups.
Source contract
- Greenhouse Job Board API: public GET endpoint, job/post IDs, null prospect IDs and source fields.
- Multiple posts for one job: different locations, languages and titles.
- Requisitions and openings: a job is not a headcount measure.
- Apify event pricing: native dataset-item billing.
Independent tool; not affiliated with Greenhouse. Source availability and fields
can change. For a defect report, include the run ID, board token and sanitized
OUTPUT summary; never include credentials or applicant data.