---
title: "Get Brand Perception Attribute Rankings"
method: GET
path: "/brand-perception/attribute-rankings"
tags: ["Brand Perception"]
---

# Get Brand Perception Attribute Rankings

`GET /brand-perception/attribute-rankings`

## Request

- Base URL: `https://api.peec.ai/customer/v1`
- URL: `https://api.peec.ai/customer/v1/brand-perception/attribute-rankings`
- Auth: one of:
  - API key in header `X-API-Key`
  - API key in query parameter `api_key`
  - HTTP bearer

How the project's own brand ranks against competitors for each brand-perception attribute. The ranking is the own brand's mean position across AI answers mentioning the attribute (lower is better). The data is aggregated across the brand-perception runs of one industry and one target market — there is no date range. Pass `industry` to pick the industry; omitted, it is the one with the most recent completed run. The target market is always the industry's most recently completed one and cannot be picked. Both are returned as `industry` and `target_market`.

## Query parameters

- `project_id` string: Required if using a company api key
- `model_channel_ids` string[]: Only include answers from these AI engine channels (repeat the parameter for multiple values). Omit to aggregate across all tracked channels.
- `industry` string: Only read the runs dispatched for this industry, as returned by the brand-perception industries endpoint. Omit to read the industry marked `is_default` there — the one with the most recent completed run.
- `search` string: Case-insensitive substring filter on the attribute name.
- `limit` integer
- `offset` integer

## Response `200`

Success

- object: Success
  - `data` object[], required: Attributes sorted by ranking, best-ranked first; attributes without a ranking last.
    - `name` string, required: The attribute (cluster representative name).
    - `ranking` number, nullable, required: The project's own brand's position among every brand scored for this attribute, by average prominence across all AI answers about it; lower is better. Answers the brand never surfaced in count against it. Null when it never surfaced at all.
    - `competitors` object[], required: Competing brands AI associates with this attribute, most relevant first.
      - `name` string, required
      - `domain` string, nullable, required: The competitor's domain; null when it has no resolvable domain.
  - `total_count` number, required: Total number of matching attributes, ignoring pagination
  - `industry` string, nullable, required: The industry the data was read from; null when the project has no brand-perception runs yet.
  - `target_market` string, nullable, required: The target market the read narrowed to within that industry — its most recently completed one. Runs dispatched for the industry's other markets are not included.
  - `industries` object[]: Every industry the project has runs for, latest-started first — present only when there is more than one. Pass a name as `industry` to read that one instead.
    - `name` string, required
    - `has_completed_run` boolean, required: False while the industry's first run is still in flight, so its data is partial.

## Changes

- **2026-11-03** `9d774600c8eb`: 1 info
  - added the enum value `exa-0` to the property `items/` of the `query` request parameter `model_channel_ids`
- **2026-11-03** `9fdffdff48a5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/peec/apis/peec-ai-customer-api/changes/brand-perception/attribute-rankings/get.md)

---

[API](https://skmtc.dev/peec/apis/peec-ai-customer-api.md) - [All operations](https://skmtc.dev/peec/apis/peec-ai-customer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/peec/apis/peec-ai-customer-api/revisions/9d774600c8eb?raw)
