---
title: "Get visibility by AI platform"
method: GET
path: "/api/mcp/projects/{projectId}/visibility/platforms"
tags: ["Visibility"]
---

# Get visibility by AI platform

`GET /api/mcp/projects/{projectId}/visibility/platforms`

## Request

- Base URL: `https://app.searchable.com`
- URL: `https://app.searchable.com/api/mcp/projects/{projectId}/visibility/platforms`
- Auth: HTTP bearer

Visibility broken down by AI platform. The same rows appear inside `GET /visibility` as `platforms[]`; this endpoint returns that breakdown on its own and can narrow to specific platforms. `platform` is comma-separated and resolved through the canonical platform map, so it accepts display names (`ChatGPT`, `AI Overviews`), aliases (`openai`, `microsoft`, `xai`), and raw model ids alike — `platform=chatgpt` matches a stored `chatgpt-4o` without also matching a `copilot-gpt-*` id, which belongs to Copilot. Filter further with `topicId` / `country` / `locationId` (each must be a UUID; a malformed value returns 400 `invalid_argument`), and pass unbranded=true or branded=true to filter by prompt brand state. `days` defaults to 30, max 365.

## Path parameters

- `projectId` string, uuid, required

## Query parameters

- `days` integer
- `unbranded` 'true'
- `branded` 'true'
- `platform` string
- `topicId` string, uuid
- `country` string
- `locationId` string
- `from` string
- `to` string

## Response `200`

Visibility by AI platform.

- VisibilityPlatformsResponse
  - `industryRanking` IndustryRankingBlock: Attached by include=industry_ranking on the summary/platform views. A TOP-N PAGE, not the whole field.
    - `entities` object[], required
      - `rank` number, required
      - `name` string, required
      - `isBrand` boolean, required
      - `domain` string, nullable
      - `visibility` number, required
      - `shareOfVoice` number, required
      - `mentions` number
      - `avgPosition` number
      - `sentiment` number, nullable
      - `change` number, nullable: Visibility in the window minus the equal-length window before it (percentage points). Null when that earlier window has no responses, or when nothing is mentioned in this window.
    - `limit` number, required: Page size used for this leaderboard.
    - `hasMore` boolean, required: True when more entities exist beyond this page.
    - `brandRank` number, nullable, required
    - `brandRankStatus` 'ranked' | 'below_top_n' | 'unranked', required: below_top_n distinguishes 'ranks past the cutoff' from genuinely unranked.
    - `brandAvgVisibility` number
    - `brandChange` number, nullable: Your visibility in the window minus the equal-length window before it (percentage points). Null when that earlier window has no responses, or when nothing is mentioned in this window.
    - `comparisonRange` object, nullable: The earlier window that change and brandChange compare against (ISO timestamps, whole UTC days).
      - `startDate` string
      - `endDate` string
    - `totalEntities` number, nullable: Null when truncated — only a true total when hasMore is false.
  - `project` ProjectRefWithBrand, required
    - `id` string, uuid, required
    - `name` string, required
    - `domain` string, nullable, required
    - `brandName` string
  - `platforms` VisibilityPlatformBreakdown[], required: One row per AI platform, most responses first. Identical to the summary view's `platforms[]`.
    - `platform` string
    - `platformId` string
    - `responses` integer
    - `mentions` integer
    - `brandMentions` integer
    - `responsesWithBrand` integer
    - `citations` integer
    - `brandCitations` integer
    - `sources` integer: Distinct source URLs the model drew on for this platform. A source is any page the model consulted; a citation is a source it actually linked in the answer, so sources >= citations.
    - `brandSources` integer: Subset of `sources` hosted on the project's own domain.
    - `visibilityRate` number: Percentage 0-100.
  - `totals` object, required
    - `platformsAnalyzed` integer
    - `totalResponses` integer
    - `totalMentions` integer
    - `totalBrandMentions` integer
    - `totalCitations` integer
    - `totalSources` integer
    - `visibilityScore` number: Percentage 0-100 of responses across the returned platforms that mention the brand. Same definition as `summary.mentionRate` and the history data points.
  - `dateRange` DateRange, required: The resolved lookback window for this response.
    - `from` string, date-time, required
    - `to` string, date-time, required

## Other responses

- `400`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `401`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `403`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `404`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `429`: Rate limited. Usually the per-API-key REST limit (600 requests/minute); on Google-backed endpoints it can also relay an upstream Google rate limit. `Retry-After` (seconds) is present when the limit was applied by Searchable's own rate limiter; it may be absent when an upstream provider rate-limits.
- `504`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.

## Changes

- **2026-11-04** `a1cc70e46e73`: 2 breaking, 1 info
  - the response property `industryRanking/brandChange` became nullable for the status `200`
  - the response property `industryRanking/entities/items/change` became nullable for the status `200`
  - added the optional property `industryRanking/comparisonRange` to the response with the `200` status
- **2026-11-03** `28a5e2a65cd3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/searchable/apis/searchable-rest-api/changes/api/mcp/projects/:projectId/visibility/platforms/get.md)

---

[API](https://skmtc.dev/searchable/apis/searchable-rest-api.md) - [All operations](https://skmtc.dev/searchable/apis/searchable-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/searchable/apis/searchable-rest-api/revisions/a1cc70e46e73?raw)
