---
title: "Who the engines name instead of you"
method: GET
path: "/competitors"
---

# Who the engines name instead of you

`GET /competitors`

## Request

- Base URL: `https://app.aimentiontracker.ai/api/v1`
- URL: `https://app.aimentiontracker.ai/api/v1/competitors`
- Auth: API key in header `X-API-Key`

answers_without_you is the column that matters. 'Named in 48 answers' is a fact about a competitor; 'named in 47 answers that never mentioned you' is a fact about you, and it is the one you can act on.

Quotes are OFF by default and capped at three per competitor. They are the evidence behind the number, and pulling them for twenty competitors on every call turns a report into a transcript.

## Query parameters

- `days` integer
- `quotes` '1'
- `brand` string

## Response `200`

OK

- object
  - `data` Competitor[], required
    - `competitor` string, required: The competitor's name as tracked in this workspace.
    - `domain` string, nullable, required: Their domain, when one is recorded.
    - `answers_naming_them` integer, required: Answers in the window that named them.
    - `answers_without_you` integer, required: The actionable column. Answers that named this competitor and never mentioned you. 'Named in 48 answers' is a fact about them; 'named in 47 answers that never mentioned you' is a fact about you.
    - `best_list_position` integer, nullable, required: Best (lowest) position they reached. Null when no answer ranked them.
    - `typical_list_position` number, nullable, required: Median position to 1dp. Null when no answer ranked them.
    - `total_mentions` integer, required: Times named across those answers, which can exceed answers_naming_them.
    - `engines` string[], required: Engine slugs that named them. Listed, never pooled into one figure.
    - `quotes` CompetitorQuote[]: Up to three supporting sentences, best-ranked first. PRESENT ONLY with ?quotes=1, and absent rather than empty otherwise.
      - `snippet` string, required: The sentence the engine wrote, with its ** emphasis left intact.
      - `engine` string, required: Engine slug the sentence came from.
      - `question` string, required: The tracked prompt whose answer contained it.
      - `listRank` integer, nullable, required: Where the engine placed them; 1 is first. Null when it wrote no list.
      - `answerId` string, required: The answer this came from, as returned by /answers.
  - `meta` object, required
    - `generated_at` string, date-time
    - `brand` BrandRef: Which brand a response describes. Present in meta on every data endpoint.
      - `id` string, required: Pass as ?brand=.
      - `name` string, required: Display name.
    - `note` string
    - `window_days` integer
    - `total_answers` integer: Answers in the window, all engines.
    - `answers_naming_you` integer
    - `answers_without_you` integer: total_answers - answers_naming_you.

## Other responses

- `400`: brand_required, or a cursor that does not belong to this brand.
- `401`: Missing, malformed, revoked or expired key.
- `402`: The organisation has never subscribed, or the plan excludes the API.
- `403`: The key lacks the required scope.
- `404`: No such brand, or the brand has not finished setup.
- `429`: Rate limit exceeded. Carries Retry-After.

---

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