Skip to main content

Greenhouse

This page contains the setup guide and reference information for the Greenhouse source connector. The connector reads recruiting data from the Greenhouse Harvest API.

Prerequisites

You need a Greenhouse Harvest API key. To create one:

  1. Ask a Greenhouse site admin to grant your user the Can manage ALL organization's API Credentials developer permission, if you don't have it already.
  2. In Greenhouse, go to Configure > Dev Center > API Credential Management.
  3. Create a Harvest API key.
  4. Click Manage Permissions next to the key, then grant it the GET permission for every endpoint you want to sync. Keys created after January 18, 2017 have no endpoint permissions until you grant them.

A Harvest key that can read an endpoint can read everything that endpoint returns. Greenhouse doesn't scope Harvest keys to a subset of jobs, offices, or candidates, so treat the key as full read access to the endpoints you enable.

For details, see the Greenhouse authentication guide.

Set up the Greenhouse connector in Airbyte

  1. Log into your Airbyte Cloud account or navigate to the Airbyte Open Source dashboard.
  2. Click Sources and then click + New source.
  3. On the Set up the source page, select Greenhouse from the Source type dropdown.
  4. Enter the name for the Greenhouse connector.
  5. Enter your Harvest API Key.
  6. Optionally, change Number of concurrent threads. The default of 2 is tuned to stay inside Greenhouse's rate limit for one API key. Raise it (up to 8) only if the key isn't shared with other integrations, and lower it to 1 if you see rate-limit errors.
  7. Click Set up source.

Supported sync modes

The Greenhouse source connector supports the following sync modes:

A stream supports incremental sync only when its Harvest endpoint accepts a date filter. The remaining streams re-read all records on every sync; most of them are small configuration lookups, but a few (activity_feed, approvals, tags, user_permissions) fan out one request per parent record and can be slow on large accounts.

Supported streams

The table lists the Harvest endpoint behind each stream and the cursor field for incremental streams. Endpoints with a {...} segment are child streams: the connector reads the parent stream first, then requests the child endpoint once per parent record.

StreamHarvest endpointCursor field
activity_feed/candidates/{candidate_id}/activity_feed
applications/applicationsapplied_at
applications_demographics_answers/applications/{application_id}/demographics/answersupdated_at
applications_interviews/applications/{application_id}/scheduled_interviewsupdated_at
approvals/jobs/{job_id}/approval_flows
candidates/candidatesupdated_at
close_reasons/close_reasons
custom_fields/custom_fields
degrees/degrees
demographics_answer_options/demographics/answer_options
demographics_answers/demographics/answersupdated_at
demographics_answers_answer_options/demographics/questions/{question_id}/answer_options
demographics_question_sets/demographics/question_sets
demographics_question_sets_questions/demographics/question_sets/{question_set_id}/questions
demographics_questions/demographics/questions
departments/departments
disciplines/disciplines
eeoc/eeocsubmitted_at
email_templates/email_templatesupdated_at
interviews/scheduled_interviewsupdated_at
job_posts/job_postsupdated_at
job_stages/job_stagesupdated_at
jobs/jobsupdated_at
jobs_openings/jobs/{job_id}/openings
jobs_stages/jobs/{job_id}/stagesupdated_at
offers/offersupdated_at
offices/offices
prospect_pools/prospect_pools
rejection_reasons/rejection_reasons
schools/schools
scorecards/scorecardsupdated_at
sources/sources
tags/tags/candidate
user_permissions/users/{user_id}/permissions/jobs
user_roles/user_roles
users/usersupdated_at

For field-level details on each resource, see the Harvest API reference.

Harvest v1 deprecation

Greenhouse has deprecated Harvest v1 and v2 and plans to remove those endpoints on August 31, 2026. This connector still reads the v1 endpoints listed above; Airbyte is migrating it to Harvest v3. Version 0.8.0 was the first step, changing how the connector builds request URLs and pagination parameters without changing any data it returns.

Greenhouse states that OAuth becomes the only supported authentication method once v1 and v2 are removed, so expect the connector's credentials to change from a Harvest API key to OAuth client credentials as part of that migration. Watch the changelog on this page for the version that makes the switch, and don't upgrade past it until you have the new credentials ready.

Performance considerations

Greenhouse rate limits Harvest requests per API key. On v1 and v2, the allowance is the value of the X-RateLimit-Limit response header (commonly 50) for each 10-second window. The connector retries throttled requests, so a sync usually recovers on its own. If you see rate-limit failures, lower Number of concurrent threads — and remember the limit is shared with any other integration using the same key.

Troubleshooting

  • A stream syncs zero records but the sync succeeds. The connector treats an HTTP 403 from Greenhouse as an empty response so that one unpermitted endpoint doesn't fail the whole sync. Check that your Harvest key has the GET permission for that stream's endpoint in API Credential Management.
  • The connection check fails with an authentication error. The check reads /users. Confirm the key is active and has GET permission on the users endpoint.

IP allow list

If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.

Reference

Config fields reference

Field
Type
Property name
string
api_key
integer
num_workers

Changelog

Expand to review
VersionDatePull RequestSubject
0.8.02026-08-1283811Send pagination page-size parameters only on first-page requests and use fully-qualified per-stream URLs in preparation for the Harvest v3 migration.
0.7.332026-08-1183956Update dependencies
0.7.322026-07-2883194Update to CDK 7.23.8 (fixes AirbyteCustomCodeNotPermittedError for bundled custom components) and remove the temporary Cloud version override
0.7.312026-07-281082Roll Cloud back to 0.7.29 — 0.7.30 is built on SDM 7.23.7, which breaks bundled custom components
0.7.302026-07-2882944Update dependencies
0.7.292026-07-2182444Update dependencies
0.7.282026-07-1481887Update dependencies
0.7.272026-06-3081129Update dependencies
0.7.262026-06-2380487Update dependencies
0.7.252026-06-1679888Update dependencies
0.7.242026-06-0979354Update dependencies
0.7.232026-06-0278766Update dependencies
0.7.222026-05-1578119Set the default concurrency to 2 and expose the number of concurrent threads as a user-configurable option.
0.7.22-rc.32026-05-1278052Reduce default_concurrency to 3 for concurrency tuning after rate-limit failures at higher settings.
0.7.22-rc.22026-05-0878006Concurrency tuning iteration: bump default_concurrency to 5
0.7.22-rc.12026-05-0677826Start concurrency tuning at default_concurrency=4 (Path A) and enable progressive rollout
0.7.212026-04-2877287Update dependencies
0.7.202026-04-2176637Update dependencies
0.7.192026-03-3175729Update dependencies
0.7.182026-03-1774919Update dependencies
0.7.172026-03-1074688Update dependencies
0.7.162026-03-0374176Update dependencies
0.7.152026-02-1073107Update dependencies
0.7.142026-02-0372661Update dependencies
0.7.132026-01-2071894Update dependencies
0.7.122026-01-1471700Update dependencies
0.7.112025-12-1870503Update dependencies
0.7.102025-11-2570056Update dependencies
0.7.92025-11-1869420Update dependencies
0.7.82025-10-2968823Update dependencies
0.7.72025-10-2168226Update dependencies
0.7.62025-10-1467896Update dependencies
0.7.52025-10-0767399Update dependencies
0.7.42025-09-3066408Update dependencies
0.7.32025-09-0965896Update dependencies
0.7.22025-08-2864973Update dependencies
0.7.12025-08-2665510Fix custom migrations to reference DeclarativeStream Pydantic model instead of runtime component
0.7.02025-07-0762830Promoting release candidate 0.7.0-rc.1 to a main version.
0.7.0-rc.12025-06-2947283Migrate to Manifest-only
0.6.12025-03-2253800Update dependencies
0.6.02025-03-1455774Promoting release candidate 0.6.0-rc.1 to a main version.
0.6.0-rc.12025-03-1454702Update to latest airbyte-cdk, remove custom cursors.
0.5.322025-02-0152724Update dependencies
0.5.312025-01-2551842Update dependencies
0.5.302025-01-1151214Update dependencies
0.5.292024-12-2850632Update dependencies
0.5.282024-12-2150109Update dependencies
0.5.272024-12-1449248Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64
0.5.262024-12-1248996Update dependencies
0.5.252024-10-2947110Update dependencies
0.5.242024-10-2347306Add 'job_post_id' to applications stream scehma
0.5.232024-10-1246828Update dependencies
0.5.222024-10-0546506Update dependencies
0.5.212024-09-2846159Update dependencies
0.5.202024-09-2145834Update dependencies
0.5.192024-09-1745625Change check stream
0.5.182024-09-1445476Update dependencies
0.5.172024-09-0745229Update dependencies
0.5.162024-08-3144755Update dependencies
0.5.152024-08-1744246Update dependencies
0.5.142024-08-1043595Update dependencies
0.5.132024-08-0343160Update dependencies
0.5.122024-07-2742816Update dependencies
0.5.112024-07-2042240Update dependencies
0.5.102024-07-1341787Update dependencies
0.5.92024-07-1041215Update dependencies
0.5.82024-07-1039601Move spec to manifest, fix readme
0.5.72024-07-0640882Update dependencies
0.5.62024-06-2540451Update dependencies
0.5.52024-06-2239968Update dependencies
0.5.42024-06-0639247[autopull] Upgrade base image to v1.2.2
0.5.32024-04-1936640Updating to 0.80.0 CDK
0.5.22024-04-1236640schema descriptions
0.5.12024-03-1235988Unpin CDK version
0.5.02024-02-2035465Per-error reporting and continue sync on stream failures
0.4.52024-02-0935077Manage dependencies with Poetry.
0.4.42023-11-2932397Increase test coverage and migrate to base image
0.4.32023-09-2030648Update candidates.json
0.4.22023-08-0228969Update CDK version
0.4.12023-06-2827773Update following state breaking changes
0.4.02023-04-2625332Add new streams: ActivityFeed, Approvals, Disciplines, Eeoc, EmailTemplates, Offices, ProspectPools, Schools, Tags, UserPermissions, UserRoles
0.3.12023-03-0623231Publish using low-code CDK Beta version
0.3.02022-10-1918154Extend Users stream schema
0.2.112022-09-2717239Always install the latest version of Airbyte CDK
0.2.102022-09-0516338Implement incremental syncs & fix SATs
0.2.92022-08-2215800Bugfix to allow reading sentry.yaml and schemas at runtime
0.2.82022-08-1015344Migrate connector to config-based framework
0.2.72022-04-1511941Correct Schema data type for Applications, Candidates, Scorecards and Users
0.2.62021-11-087607Implement demographics streams support. Update SAT for demographics streams
0.2.52021-09-226377Refactor the connector to use CDK. Implement additional stream support
0.2.42021-09-156238Add identification of accessible streams for API keys with limited permissions