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

# Suggest competitors for a brand

> Suggests competitors for a brand using AI web search, with name variations and domain variations for each. Nothing is saved. Every item is ready to pass as a competitor to `POST /v1/reports/brand` or `PATCH /v1/reports/brand/{reportId}`. The brand own domain is never returned. A 503 means the research failed or timed out and the request is safe to retry.



## OpenAPI

````yaml https://data.otterly.ai/v1/openapi.json post /v1/competitors/suggestions
openapi: 3.0.0
info:
  title: Otterly Public API
  version: 1.0.0
servers:
  - url: https://data.otterly.ai
security: []
tags:
  - name: Engines
  - name: Workspaces
  - name: Tags
  - name: Prompts
  - name: Brand Reports
  - name: Competitors
  - name: Audits
  - name: Accounts
paths:
  /v1/competitors/suggestions:
    post:
      tags:
        - Competitors
      summary: Suggest competitors for a brand
      description: >-
        Suggests competitors for a brand using AI web search, with name
        variations and domain variations for each. Nothing is saved. Every item
        is ready to pass as a competitor to `POST /v1/reports/brand` or `PATCH
        /v1/reports/brand/{reportId}`. The brand own domain is never returned. A
        503 means the research failed or timed out and the request is safe to
        retry.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicApiCompetitorResearchRequest'
      responses:
        '200':
          description: Suggested competitors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiCompetitorResearchResponse'
        '400':
          description: Validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiValidationErrorResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '429':
          description: Quota exhausted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '503':
          description: Competitor research failed or timed out. Safe to retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    PublicApiCompetitorResearchRequest:
      type: object
      properties:
        brand:
          type: string
          minLength: 1
          description: Brand name to find competitors for.
        brandDomain:
          type: string
          minLength: 1
          description: Brand website domain, e.g. `acme.com`.
        maxResults:
          type: integer
          minimum: 1
          maximum: 20
          description: >-
            Optional. Maximum number of competitors to return. Defaults to 10,
            max 20.
      required:
        - brand
        - brandDomain
      example:
        brand: Adidas
        brandDomain: adidas.com
        maxResults: 10
    PublicApiCompetitorResearchResponse:
      type: object
      properties:
        competitors:
          type: array
          items:
            $ref: '#/components/schemas/PublicApiBrandCompetitor'
      required:
        - competitors
      example:
        competitors:
          - brand: Nike
            brandVariations:
              - nike
              - Nike Inc.
            brandDomain: nike.com
            brandDomainVariations:
              - nike.de
              - nike.co.uk
            brandDomainWildcard: false
            brandRegex: null
    PublicApiValidationErrorResponse:
      type: object
      properties:
        message:
          type: string
        target:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
      required:
        - message
        - target
        - errors
      example:
        message: Validation failed
        target: query
        errors:
          - path: country
            message: Required
            code: invalid_type
    PublicApiErrorResponse:
      type: object
      properties:
        message:
          type: string
      required:
        - message
      example:
        message: Report not found
    PublicApiBrandCompetitor:
      type: object
      properties:
        brand:
          type: string
          description: Competitor brand name.
        brandVariations:
          type: array
          items:
            type: string
        brandDomain:
          type: string
        brandDomainVariations:
          type: array
          items:
            type: string
        brandDomainWildcard:
          type: boolean
        brandRegex:
          type: string
          nullable: true
          description: >-
            Regular expression used to detect the brand in AI answers, instead
            of `brand` and `brandVariations`. `null` when not set.
      required:
        - brand
        - brandVariations
        - brandDomain
        - brandDomainVariations
        - brandDomainWildcard
        - brandRegex
      example:
        brand: Nike
        brandVariations:
          - nike
          - Nike Inc.
        brandDomain: nike.com
        brandDomainVariations:
          - nike.de
          - nike.co.uk
        brandDomainWildcard: false
        brandRegex: null
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Provide your API key as a Bearer token: `Authorization: Bearer
        YOUR_API_KEY`.

````