Search candidates
Search candidates through Greenhouse's full-text candidate search index, returning the same candidate shape as GET /v3/candidates with richer pipeline filters (job, stage, recruiter, coordinator, source, candidate tag, prospect pool, etc.). Use this when you need to slice across many filter dimensions at once or combine free-text matching with structured filters; for simple lookups by id or foreign key, prefer the list endpoint.
Request
- Base URLhttps://harvest.greenhouse.io
- URLhttps://harvest.greenhouse.io/v3/candidates/search
- Auth
- OAuth 2Authorization code: https://auth.greenhouse.io/authorizeClient credentialsToken URL: https://auth.greenhouse.io/token scopes: harvest:candidates:list
- or HTTP bearer
Query parameters
Cursor link for pagination from previous page response header. Do not use any other parameters when using this.
Number of results per page
Return only candidates with these person ids.
Comma separated list of fields to return
Free-text search term.
Filter by candidate tag name. Resolved to tag ids in the caller's organization; unknown tag returns no results. Use candidate_tag_id if you already have the id.
Return only candidates with an application on this job.
Restrict to candidates, prospects, or both. all returns both. Defaults to all.
Filter by the lifecycle status of the candidate's job(s). all returns every status.
Return only candidates whose job is in this department.
Return only candidates whose job is in this office.
Return only candidates attributed to this source.
Return only candidates whose job has this recruiter.
Return only candidates whose job has this coordinator.
Return only candidates whose job has this hiring manager.
Return only candidates currently in this interview stage (matches the stage on their active application).
Return only candidates currently in one of these interview stage names (exact match, case sensitive). Use alongside stage_id when you want name-based filtering without an extra id lookup.
Filter by the candidate's current stage outcome (e.g. still in process, hired, rejected).
Filter by a specific candidate tag id. Prefer this over tag when the id is known to skip the name lookup.
Return only candidates who applied via this job post.
Return only prospects in this prospect pool.
Include private candidates the caller has access to. Defaults to true; set false to exclude private candidates.
Filter by last-activity timestamp. Pass any combination of gte, lte, gt, lt as ISO-8601 date-times (e.g. last_activity_at[gte]=2026-01-01T00:00:00Z&last_activity_at[lte]=2026-04-01T00:00:00Z). Bounds are applied at day-level granularity in UTC; sub-day precision in the supplied timestamp is ignored. The range is always inclusive; gt/lt are accepted but applied identically to gte/lte.
Response
Successful
Changes
No recorded changes to this operation across all 1 revision of this API.