v1

latestOpenAPI 3.1.02026-07-261770816.7 KB
Job Post Locations

List job post locations

Job post locations are the join rows that attach one or more locations to a job_post — a multi-location posting (e.g. San Francisco, Remote (US), New York on a single role) has one row per location. GET /v3/job_posts does not return locations inline; pair this endpoint with it on job_post_id to assemble the candidate-facing location list. Filter with parent=job_post&ids=<job_post_id> to fetch every location on a specific post, or with parent=office / parent=custom_location to find every post in a given location.

get/v3/job_post_locations

Query parameters

cursorstring

Cursor link for pagination from previous page response header. Do not use any other parameters when using this.

per_pageinteger

Number of results per page

idsinteger[]

Comma separated list

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
office_idsinteger[]

Comma separated list

job_post_idsinteger[]

Comma separated list

custom_location_idsinteger[]

Return only job post locations linked to one of these job-board-scoped custom location ids. Custom locations are reusable, admin-defined location labels configured per job board (see GET /v3/job_boards), distinct from free-text strings and Greenhouse offices.

fieldsstring[]

Comma separated list of fields to return

type'free_text' | 'office' | 'custom_list'

Filter by how the location is sourced. free_text returns admin-typed strings, office returns rows linked to an organization office, and custom_list returns rows linked to a board-scoped custom location.

plain_text_locationstring

Filter by exact match on the free-text location string (e.g. New York, NY). Only matches rows whose type is free_text; rows backed by an office or custom location are excluded.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
plain_text_locationstring nullable

Free-text location string shown on the job post (e.g. New York, NY, Remote (US)). Populated when type is free_text; null for office and custom_list rows, where the displayable text is resolved from the linked office or job_board_custom_location instead.

office_idinteger nullable

Id of the organization office this location resolves to. Populated when type is office; null otherwise. Cross-reference with /v3/offices to fetch the office name and address.

type'free_text' | 'office' | 'custom_list' nullable

How this location is sourced. free_text is an admin-typed string in plain_text_location; office references an organization office via office_id; custom_list references a board-scoped custom location via custom_location_id. Drives which of the three id/text fields is populated and is set by the parent job board's location configuration.

job_post_idinteger nullable

Id of the job_post this location is attached to. A single post can have multiple job_post_locations rows — one per location it's published in (e.g. San Francisco, Remote (US), New York on one multi-location post).

custom_location_idinteger nullable

Id of the job_board_custom_locations row this location resolves to. Populated when type is custom_list; null otherwise. Custom locations are board-scoped — confirm the parent post lives on the same job_board_id before reusing an id.