---
title: "List Compensation Benchmarks"
method: GET
path: "/api/v1/compensation/benchmarks"
tags: ["Compensation Benchmarking", "Public API"]
---

# List Compensation Benchmarks

`GET /api/v1/compensation/benchmarks`

Returns every job/location pair the company tracks for compensation benchmarking. Each entry includes job and location identifiers, the benchmarks attached to that pair, the employees currently assigned to that job and location, and the company's configured internal pay band if one exists. Use the returned `jobDetails.id` and `locationDetails.id` values as the `jobId` and `locationId` inputs for `GET /api/v1/compensation/benchmarks/details`. Top-level `dismiss*Banner` fields reflect UI banner state and are not part of the benchmark data contract.

OAuth Scopes: compensation_benchmarks

## Response `200`

Object with a `jobLocationPairs` array and banner-dismissal flags.

- object
  - `jobLocationPairs` object[]
    - `jobDetails` object
      - `id` string
      - `title` string
    - `locationDetails` object, nullable
      - `id` string
      - `name` string
      - `location` string
      - `country` string, nullable
    - `isRemote` boolean
    - `benchmarks` object[] — Saved benchmarks attached to this job/location. Empty when none are configured.
      - `id` string
      - `values` object
        - `median` number
        - `min` number
        - `max` number
        - `currencyCode` string
        - `originalMedian` number, nullable
        - `originalMin` number, nullable
        - `originalMax` number, nullable
        - `originalCurrencyCode` string, nullable
      - `sourceId` string, nullable
      - `sourceColor` string, nullable
      - `isMercer` boolean
      - `dataYear` string, nullable — Mercer data year; defaults to the current Mercer data year when missing on a Mercer benchmark. `null` for non-Mercer benchmarks.
    - `employees` object[]
      - `id` string
      - `name` string
      - `salary` object
        - `amount` number
        - `currencyCode` string
      - `photoUrl` string
      - `managerName` string, nullable
      - `managerTitle` string, nullable
      - `division` object, nullable
        - `id` string
        - `value` string
      - `department` object, nullable
        - `id` string
        - `value` string
      - `paidPer` string — Pay period label for the employee salary amount (e.g. Year, Hour).
      - `currencyConversionFailed` boolean
      - `annualizationFailed` boolean — True when pay could not be annualized (e.g. PayPeriod without a pay schedule); salary is the raw amount for paidPer.
    - `internalJobPayBand` object, nullable
      - `jobId` string
      - `group` string
      - `level` string
      - `values` object
        - `median` number
        - `min` number
        - `max` number
        - `currencyCode` string
        - `originalMedian` number, nullable
        - `originalMin` number, nullable
        - `originalMax` number, nullable
        - `originalCurrencyCode` string, nullable
        - `description` string
  - `dismissReviewBanner` boolean
  - `dismissAddLocationBanner` boolean
  - `dismissMercerDataInfoBanner` boolean

## Other responses

- `403` — The authenticated caller lacks permission to read compensation benchmarks.
- `500` — Unexpected server error while loading compensation benchmarks.

---

[API](https://skmtc.net/bamboohr/apis/bamboohr-api.md) · [All operations](https://skmtc.net/bamboohr/apis/bamboohr-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bamboohr/bamboohr-api/revisions/19ebf391a399/schema)
