> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Competitors

> Your tracked competitor set with visibility and sentiment.

Your tracked competitor set with visibility, mentions, citations, share of voice, sentiment, and change vs the previous window. Pass `matrices=true` for the per-AI-model breakdown. `search` matches the brand name and website before `limit` is applied; `total`, `rows` and `roster` cover the matches, while `stats` and the trend stay unfiltered.

The trend carries one line per brand unless you narrow it: `trendBrands=default` keeps your brand plus up to 9 tracked competitors, or pass a JSON array of names. Set `includeRows=false` when you only need the trend or the matrices. `rowFields=roster` returns every brand's name, website, flags and segment tags in `roster` instead of full rows. `stats` always holds the average share of voice and the tracked competitor count across all rows.

Scope filters are described on [AI Visibility](https://snowseo.com/docs/api-reference/endpoints/ai-visibility.md).


## OpenAPI

````yaml GET /v3/ai-tracker/visibility/competitors
openapi: 3.0.0
info:
  title: SnowSEO API
  description: API documentation for SnowSEO
  version: 1.0.0
servers:
  - url: https://api.snowseo.com
    description: Production server
security:
  - bearerAuth: []
  - apiKey: []
externalDocs:
  url: https://snowseo.com/docs
  description: Find more info here
paths:
  /v3/ai-tracker/visibility/competitors:
    get:
      tags:
        - AI Tracker
      summary: Tracked competitor comparison
      description: >-
        Per-competitor AI-visibility rollup: visibility, mentions, citations,
        share of voice, sentiment and change vs the previous window, ordered by
        share of voice. Defaults to the top 25 brands without their daily
        history - raise limit or set includeHistory=true only if you need more,
        both grow the payload fast. matrices=true adds the per-AI-model
        breakdown. For every brand seen in answers rather than the tracked set,
        use ai_visibility_brands.
      operationId: getAiVisibilityCompetitors
      parameters:
        - schema:
            type: string
          in: query
          name: teamId
          required: false
        - schema:
            type: string
          in: query
          name: platform
          required: false
          description: Comma-separated AI platform names, or 'All Platforms' for no filter.
        - schema:
            type: string
          in: query
          name: competitor
          required: false
          description: >-
            Comma-separated competitor names, or 'All Competitors' for no
            filter. Keeps prompts where ANY listed competitor appears.
        - schema:
            type: string
          in: query
          name: country
          required: false
          description: >-
            Comma-separated ISO2 country codes, or 'All Countries' for no
            filter.
        - schema:
            type: string
          in: query
          name: startDate
          required: false
          description: >-
            YYYY-MM-DD. Omit with endDate set for All Time (from the first
            answer, no previous-period comparison).
        - schema:
            type: string
          in: query
          name: endDate
          required: false
          description: YYYY-MM-DD
        - schema:
            type: integer
            minimum: 1
            default: 30
          in: query
          name: days
          required: false
          description: >-
            Days back from today on the team's calendar, converted to
            startDate/endDate. Ignored when startDate or endDate is set.
            Defaults to 30.
        - schema:
            type: string
          in: query
          name: promptBrand
          required: false
          description: '''branded'', ''unbranded'', or ''all''.'
        - schema:
            type: string
          in: query
          name: tracking
          required: false
          description: '''tracked'', ''untracked'', or empty for both.'
        - schema:
            type: string
          in: query
          name: intent
          required: false
          description: Comma-separated prompt intents, or empty for all.
        - schema:
            type: string
          in: query
          name: includePrevious
          required: false
          description: >-
            Include previous-period comparison values alongside each data point
            (roughly doubles the time-series payload). Defaults to false.
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
          in: query
          name: homeOverview
          required: false
          description: >-
            Home chart projection: top eight non-user brands by share of voice
            and mentions, plus your brand. Global totals remain unchanged.
        - schema:
            type: string
          in: query
          name: search
          required: false
          description: >-
            Case-insensitive text matched against the brand name and website.
            Applied before limit; total, rows and roster cover the matches.
            Stats and trend stay unfiltered.
        - schema:
            type: string
          in: query
          name: limit
          required: false
          description: >-
            Max competitor rows, or 'all'. Defaults to 25. Also bounds the trend
            series and the matrix; the response reports total and truncated.
        - schema:
            type: string
          in: query
          name: includeHistory
          required: false
          description: >-
            Include each row's daily visibility sparkline (~85% of a row).
            Defaults to false.
        - schema:
            type: string
          in: query
          name: matrices
          required: false
          description: Include the per-competitor x per-AI-model matrix. Defaults to false.
        - schema:
            type: string
          in: query
          name: includeTrend
          required: false
          description: >-
            Include the daily visibility trend across competitors. Defaults to
            true.
        - schema:
            type: string
          in: query
          name: trendBrands
          required: false
          description: >-
            Brands to keep in the trend: a JSON array of names, or 'default' for
            your brand plus up to 9 tracked competitors. Your brand is always
            kept. Omit for every brand.
        - schema:
            type: string
          in: query
          name: includeRows
          required: false
          description: >-
            Include the competitor rows. Defaults to true; set false when only
            the trend or matrices are needed.
        - schema:
            type: string
            enum:
              - full
              - roster
          in: query
          name: rowFields
          required: false
          description: >-
            roster returns every brand's name, website, flags and segment tags
            in `roster` instead of full rows, ignoring limit. Defaults to full.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  meta:
                    type: object
                    additionalProperties: true
                    properties:
                      teamInfo:
                        type: object
                        additionalProperties: true
                      appliedFilters:
                        type: object
                        additionalProperties: true
                      totalPrompts:
                        type: number
                      activePrompts:
                        type: number
                      activeRegionRuns:
                        type: number
                      totalResponses:
                        type: number
                      promptStatus:
                        type: object
                        additionalProperties: true
                  competitors:
                    type: object
                    additionalProperties: true
                  roster:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
                  stats:
                    type: object
                    properties:
                      avgShareOfVoice:
                        type: number
                      activeCompetitors:
                        type: number
                  total:
                    type: number
                  truncated:
                    type: boolean
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your SnowSEO API key (sk_...).
    apiKey:
      type: apiKey
      name: x-api-key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.