---
title: "Get brand visibility"
method: GET
path: "/api/sites/multiscreen/{site_name}/aeo/visibility"
tags: ["AEO Analytics"]
---

# Get brand visibility

`GET /api/sites/multiscreen/{site_name}/aeo/visibility`

## Request

- Base URL: `https://api.duda.co`
- URL: `https://api.duda.co/api/sites/multiscreen/{site_name}/aeo/visibility`
- Auth: HTTP basic

Returns how visible the site's brand and its competitors are in AI answers, aggregated over the requested period, plus the source domains the answer engines cite most.

- `brands` lists up to 10 brands: the site's own brand first, then competitors by visibility.
- `source_mentions` lists up to 10 domains: the own brand's domains first, then by share.

## Path parameters

- `site_name` string, required

## Query parameters

- `from` string, date, required
- `to` string, date, required
- `models` ApiAeoModel[]
- `geos` string[]

## Response `200`

OK

- ApiAeoVisibilityResp
  - `brands` ApiAeoVisibilityBrandResp[]: Up to 10 brands. The site's own brand comes first, then competitors by visibility.
    - `by_llm` object, nullable: The same statistics per AI model. Currently always `null`.
    - `domain` string: The brand's primary domain.
    - `id` string: Brand ID.
    - `is_own` boolean: `true` for the site's own brand.
    - `mention_count` integer: Number of answers in the period that mention the brand.
    - `name` string: Brand name.
    - `position` number, double: The brand's average rank among the brands mentioned in an answer. Lower is better.
    - `share_of_voice` number, double: The brand's mentions as a percentage of all brand mentions, from 0 to 100.
    - `visibility` number, double: Percentage of answers that mention the brand, from 0 to 100.
  - `from` string, date: First day of the period (UTC).
  - `source_mentions` ApiAeoSourceMentionResp[]: Up to 10 domains the answers cited. The own brand's domains come first, then by share.
    - `by_llm` object: The share per AI model, from 0 to 100. Keys are AI model values such as `CHAT_GPT`.
    - `domain` string: A domain the answers cited.
    - `is_own` boolean: Whether the domain belongs to the site's own brand.
    - `source_share` number, double: Percentage of answers that cite the domain, from 0 to 100.
  - `to` string, date: Last day of the period (UTC).
  - `total_chats` integer: Answers recorded in the period, across all AI models.
  - `total_chats_by_llm` object: Answers recorded in the period, per AI model. Keys are AI model values such as `CHAT_GPT`.
  - `total_mentions` integer: Brand mentions across all answers in the period, summed over every brand.

## Other responses

- `400`: Bad request. `error_code` is `InvalidInput` and `errors` is empty. - `from` or `to` is missing or invalid, the period is longer than 366 days, or `models` or `geos` contains an unknown value.
- `401`: Unauthorized. The credentials are missing or invalid.
- `403`: Forbidden. `error_code` is `AccessForbidden`, and `errors[0].code` names the cause: - No code (`errors` is empty): the caller can't access the site. - `AeoPlanNotFound`: the account has no active AEO plan.
- `404`: Not found. `error_code` is `ResourceNotExist`, and `errors[0].code` names the cause: - `AeoProjectNotFound`: the site has no AEO project.
- `429`: Too many requests. The rate limit was exceeded.

---

[API](https://skmtc.dev/duda/apis/duda-partner-api.md) - [All operations](https://skmtc.dev/duda/apis/duda-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/duda/apis/duda-partner-api/revisions/52be4d41cb12?raw)
