Skip to content

ATS

Greenhouse
API integration

Ship ATS features without building the integration. Full Greenhouse API access via Proxy, normalized data through Unified APIs, and 50+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
Greenhouse

Use Cases

Why integrate with Greenhouse

Common scenarios for SaaS companies building Greenhouse integrations for their customers.

01

Sync structured interview data into your analytics platform

If you're building hiring analytics or interview intelligence software, pulling scorecards, job stages, and candidate activity from Greenhouse lets your users get actionable insights without manual data entry. Truto handles auth and pagination so you can focus on the analysis layer.

02

Automate candidate pipeline actions from your assessment tool

Assessment and screening platforms can monitor Greenhouse applications to detect stage transitions, then post results back to activity feeds and enrich candidate profiles. This keeps recruiters inside Greenhouse while your product does the heavy lifting.

03

Power onboarding workflows from accepted offers

If your SaaS handles IT provisioning, onboarding, or HRIS sync, reading offer data along with department and office context from Greenhouse lets you trigger downstream workflows the moment a candidate accepts — no CSV exports required.

04

Build DEI and compliance reporting across your customer base

Greenhouse exposes EEOC data at the application level. DEI analytics platforms can ingest this alongside reject reasons, sources, and job metadata to surface bias patterns and compliance gaps for their customers' talent teams.

05

Offer a native Greenhouse integration for your scheduling or interview copilot

AI note-takers and scheduling tools need access to scheduled interviews, interviewers, and job stage context. Pulling this from Greenhouse via Truto lets your users connect their ATS in clicks, not weeks of custom API work.

What You Can Build

Ship these features with Truto + Greenhouse

Concrete product features your team can ship faster by leveraging Truto’s Greenhouse integration instead of building from scratch.

01

Real-time scorecard sync for interview intelligence

Fetch structured scorecards including ratings, attributes, and overall recommendations from Greenhouse to power post-interview analytics dashboards inside your product.

02

Offer-to-onboarding automation trigger

Monitor application-level offers for accepted status, then extract start date, department, and office to automatically kick off provisioning or HRIS enrollment workflows.

03

Candidate and application pipeline viewer

Surface a live view of your users' Greenhouse candidates, applications, and job stages directly inside your app using the Unified ATS API, so their teams never need to context-switch.

04

EEOC and reject reason analytics module

Combine EEOC demographic data with reject reasons and source attribution to give your customers granular DEI funnel reporting without building a direct Greenhouse integration.

05

Custom field and tag mapping engine

Read Greenhouse custom fields, custom field options, and tags to let your users map their proprietary data schema to your product's data model during onboarding.

06

Office and department hierarchy sync

Pull the full Greenhouse office and department structure — and create or update offices — to keep organizational context consistent across your platform and your users' ATS.

SuperAI

Greenhouse AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_greenhouse_candidates

List all candidates in Greenhouse. Returns candidate details including id, first_name, last_name, company, title, created_at, updated_at, applications, educations, employments, and custom fields.

get_single_greenhouse_candidate_by_id

Get information about a specific candidate by id in Greenhouse. Returns candidate's personal details, contact info, applications with job details, custom fields, and associated tags.

list_all_greenhouse_jobs

List all jobs in Greenhouse. Returns job id, name, requisition_id, status, created_at, updated_at, departments, offices, custom_fields, hiring_team, and openings.

get_single_greenhouse_job_by_id

Get information about a specific job in Greenhouse by id. Returns job details including name, requisition_id, status, dates, departments, offices, custom fields, hiring team, and openings.

list_all_greenhouse_applications

List all applications in Greenhouse. Returns application id, candidate_id, prospect status, applied_at, last_activity_at, location, source, credited_to, jobs, status, current_stage, answers, prospect details, custom fields, and attachments.

get_single_greenhouse_application_by_id

List all applications in Greenhouse. Supports filtering by created_before, created_after, last_activity_after, job_id, and status. Returns application ID, candidate ID, status, jobs applied for, current stage, and attachments.

list_all_greenhouse_users

Get information about a specific user in Greenhouse. Requires id. Returns user details including id, name, and email.

get_single_greenhouse_user_by_id

Get information about a specific user in Greenhouse by id. Returns id, name, primary_email_address, employee_id, offices, departments, and custom_fields.

list_all_greenhouse_tags

List all candidate tags in Greenhouse. Returns an array of tags with fields id and name.

list_all_greenhouse_sources

List sources grouped by strategy in Greenhouse. Returns id, name, and type (id and name) of each source.

list_all_greenhouse_job_posts

List all job posts with optional filters for creation, update times, live status, active status, full content, and internal/external posts in Greenhouse.

get_single_greenhouse_job_post_by_id

Get a single job post by id in Greenhouse. Returns fields including id, title, location, internal/external flags, active/live status, first_published_at, job_id, content, internal_content, demographic_question_set_id, and associated questions.

list_all_greenhouse_departments

List all departments in Greenhouse. Returns department id, name, parent_id, external_id, child_ids, and child_department_external_ids.

get_single_greenhouse_department_by_id

Get information about a specific department by id in Greenhouse. Returns fields id, name, parent_id, child_ids, and external_id. Optionally supports render_as parameter for tree structure.

list_all_greenhouse_custom_fields

List custom fields by field_type in Greenhouse. Returns fields including id, name, active status, field_type, value_type, and custom_field_options. Include inactive fields with include_inactive=true.

get_single_greenhouse_custom_field_by_id

Get a custom field by id in Greenhouse. Returns id, name, active status, field_type, value_type, private flag, required flag, require_approval flag, description, and custom_field_options with option id, name, priority, and external_id.

list_all_greenhouse_custom_field_options

List custom field options for a given custom field id in Greenhouse. Returns id, name, priority, and external_id of each option. Supports filtering by type: all, active, or inactive.

list_all_greenhouse_job_stages

Get job stages for job with id in Greenhouse. Returns id, name, created_at, updated_at, job_id, priority, and interviews with details including interview id, name, schedulable, estimated_minutes, default_interviewer_users, and interview_kit.

get_single_greenhouse_job_stage_by_id

Get job stage by id in Greenhouse. Returns id, name, created_at, updated_at, job_id, priority, and interviews with details including interviewers and interview kit content.

list_all_greenhouse_user_roles

List user roles in Greenhouse. Returns id, type, and name of each role.

list_all_greenhouse_offices

List all offices in Greenhouse. Returns office id, name, location name, primary_contact_user_id, parent_id, parent_office_external_id, child_ids, child_office_external_ids, and external_id.

get_single_greenhouse_office_by_id

Get information about a specific office by id in Greenhouse. Returns fields including id, name, location, primary_contact_user_id, parent_id, child_ids, and external_id.

update_a_greenhouse_office_by_id

Edit an office's basic information in Greenhouse by id. Returns updated office details including name, location, parent and child office IDs, and external ID.

create_a_greenhouse_office

Create a new office in Greenhouse. Provide name, optional location, primary_contact_user_id, and parent office via parent_id or external_parent_id. Requires user with office creation permission.

list_all_greenhouse_close_reasons

List all close reasons in Greenhouse. Returns an array of close reasons with fields id and name.

list_all_greenhouse_reject_reasons

List all rejection reasons in Greenhouse. Returns an array of rejection reasons with id, name, and type fields.

list_all_greenhouse_degrees

List all degree levels for the organization in Greenhouse. Returns id, name, and priority of each degree level.

list_all_greenhouse_disciplines

List all disciplines for this organization in Greenhouse. Returns id, name, and priority of each discipline sorted by priority.

list_all_greenhouse_schools

List all schools for this organization in Greenhouse, returning id, name, and priority of each school.

list_all_greenhouse_email_templates

List all email templates in Greenhouse. Returns id, name, description, default status, updated_at, created_at, type, from, cc, body, html_body, and user details for each template.

get_single_greenhouse_email_template_by_id

Get email template by id in Greenhouse. Returns id, name, description, default status, timestamps, type, cc list, html_body, and user info.

list_all_greenhouse_prospect_pools

List all prospect pools in Greenhouse. Returns id, name, active status, and prospect_stages with their ids and names for each pool.

get_single_greenhouse_prospect_pool_by_id

Get information about a specific prospect pool in Greenhouse by id. Returns id, name, active status, and prospect stages with their ids and names.

list_all_greenhouse_job_openings

List all openings for a job in Greenhouse using job id. Returns fields including id, opening_id, status, opened_at, closed_at, application_id, close_reason, and custom_fields.

list_all_greenhouse_job_permissions

List job permissions for a user in Greenhouse by user id. Returns job permission entries including id, job_id, and user_role_id. This endpoint is only intended for use with Job Admin and/or Interviewer users, as these roles are assigned on a per job basis. Users that are Site Admins have permissions on all public jobs and will return an empty array. Basic users cannot be assigned to any jobs and will also return an empty array.

list_all_greenhouse_future_job_permissions

List future job permissions for a user in Greenhouse by user id. Returns permissions including id, office_id, external_office_id, department_id, external_department_id, and user_role_id.

list_all_greenhouse_approval_flows

List all approval flows for a job in Greenhouse. Requires job id. Returns approval flow id, offer_id, sequential flag, version, approval_type, approval_status, job_id, requested_by_user_id, and approver_groups with details including approver ids, names, employee_ids, and email_addresses.

list_all_greenhouse_pending_approvals

Get all pending approvals for a user in Greenhouse by user id. Returns approval details including id, status, created_at, approver_group_id, hiring_plan_id, offer_id, approval_flow_id, approval_flow_type, and approval_flow_status.

list_all_greenhouse_activity_feeds

Get a candidate's activity feed in Greenhouse by id. Returns notes with id, created_at, body, user info; emails with id, created_at, subject, body, to, from, cc, user info; and activities with id, created_at, subject, body, user info.

list_all_greenhouse_scheduled_interviews

List all scheduled interviews in Greenhouse. Supports filtering by creation, update, start, and end timestamps, external_event_id, and actionable status. Returns interview details including id, application_id, start/end times, location, status, organizer, and interviewers.

list_all_greenhouse_application_scheduled_interviews

List scheduled interviews for application with id in Greenhouse. Returns fields including id, application_id, external_event_id, start and end times, location, video_conferencing_url, status, interview details, organizer, and interviewers.

list_all_greenhouse_scorecards

List all scorecards. Returns id, updated_at, created_at, interview, interview_step, candidate_id, application_id, interviewed_at, submitted_by, interviewer, submitted_at, overall_recommendation, attributes, ratings, and questions for each scorecard.

get_single_greenhouse_scorecard_by_id

Get a scorecard by id in Greenhouse. Returns fields including id, candidate_id, application_id, overall_recommendation, attributes with ratings and notes, submitted_by user, interviewer, and questions with answers.

list_all_greenhouse_application_scorecards

List all submitted scorecards for the application with id in Greenhouse. Returns scorecard id, interview details, candidate and application ids, submission info, overall recommendation, attributes with ratings, and question answers.

list_all_greenhouse_offers

List all offers made by an organization in Greenhouse. Returns offer id, version, application_id, job_id, candidate_id, opening details, created_at, updated_at, sent_at, resolved_at, starts_at, status, and custom fields.

list_all_greenhouse_question_sets

List all demographic question sets in Greenhouse. Returns id, title, description, and active status for each set.

list_all_greenhouse_questions

List all demographic questions in Greenhouse. Returns id, name, demographic_question_set_id, required flag, and active status for each question.

list_all_greenhouse_answer_options

List all demographic answer options in Greenhouse. Returns id, name, free_form flag, active status, and demographic_question_id for each answer option.

list_all_greenhouse_answers

List all demographic answers in Greenhouse. Returns id, free_form_text, application_id, demographic_question_id, demographic_answer_option_id, created_at, and updated_at for each answer.

list_all_greenhouse_eeoc

List all EEOC data submitted with optional filters submitted_before and submitted_after in Greenhouse. Returns application_id, candidate_id, race, gender, veteran_status, disability_status, and submitted_at fields.

get_single_greenhouse_eeoc_by_id

Get EEOC data for an application in Greenhouse by application id. Returns application_id, candidate_id, race, gender, veteran_status, disability_status, and submitted_at timestamp.

list_all_greenhouse_application_offers

List offers for an application in Greenhouse using application_id. Returns offer id, version, job_id, candidate_id, status, created_at, updated_at, sent_at, resolved_at, starts_at, and custom fields.

Why Truto

Why use Truto’s MCP server for Greenhouse

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for Greenhouse

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Users

The User object represents a User.

View Docs

Unified ATS API

Activities

The activity on a candidate performed by a user.

View Docs

Applications

The applications represent an application for a job.

View Docs

Attachments

The attachments represent an attachment for a candidate.

View Docs

Candidates

The candidates represent a candidate.

View Docs

Departments

The departments represent a department.

View Docs

Eeocs

The eecocs represent an Equal Employment Opportunity Commission data submitted by the candidates.

View Docs

Interviews

The interviews represent an interview.

View Docs

Job Form Fields

The form fields used to apply to a job.

View Docs

Job Interview Stages

The job interview stages represent a job interview stage.

View Docs

Jobs

The jobs represent a job.

View Docs

Offers

The offers represent an offer.

View Docs

Offices

The offices represent an office.

View Docs

Reject Reasons

The reject reasons represent a reject reason.

View Docs

Scorecards

The scorecards represent a scorecard.

View Docs

Tags

The tags represent a tag for a candidate.

View Docs

Users

The users represent a user.

View Docs

How It Works

From zero to integrated

Go live with Greenhouse in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Greenhouse account

Use Truto’s frontend SDK to connect your customer’s Greenhouse account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Greenhouse

Truto’s Proxy API is a 1-to-1 mapping of the Greenhouse API. You call us, we call Greenhouse, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Greenhouse’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Greenhouse on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What authentication method does the Greenhouse integration use?

Greenhouse's Harvest API uses API key-based authentication (HTTP Basic Auth with the API key as the username). Truto manages credential storage and injection so your end users just provide their API key during the connect flow.

Can I use the Unified ATS API instead of Greenhouse-specific tools?

Yes. Truto offers a Unified ATS API that normalizes Greenhouse resources — including Applications, Candidates, Jobs, Offers, Scorecards, Interviews, Departments, Offices, Tags, Reject Reasons, EEOC data, and Users — into a standard schema. This means the same code works if you later add other ATS providers.

Does the integration support write operations?

Yes, for supported resources. You can create and update offices in Greenhouse via the provided tools. For broader write use cases, check the available proxy and Unified ATS API operations for your specific resource.

How does pagination work for large Greenhouse accounts?

Greenhouse uses cursor-based pagination on list endpoints. Truto abstracts this entirely — you receive complete, paginated result sets through the unified and proxy APIs without managing page tokens yourself.

Can I access Greenhouse custom fields and their option sets?

Yes. The integration includes tools to list all custom fields, retrieve individual custom fields by ID, and list all custom field options. This lets you dynamically map Greenhouse's custom data model into your product.

What Greenhouse data is available for scheduled interviews?

You can list all scheduled interviews globally or scoped to a specific application. This returns interview timing, interviewers, and associated metadata — useful for scheduling tools, AI copilots, and interview prep products.

Greenhouse

Get Greenhouse integrated into your app

Our team understands what it takes to make a Greenhouse integration successful. A short, crisp 30 minute call with folks who understand the problem.

Talk to us