CompetitorGET Untracked Competitors

Competitor discovery

Brands that appear in AI answers to the domain's tracked prompts but aren't in the tracked competitor set yet — ranked by how many prompts mention them.

curl --request GET \
  --url 'https://api.aiclicks.io/api/v1/competitor-discovery?domain_id=8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3&days=30' \
  --header 'Authorization: Bearer ak_live_xxx'
{
  "data": {
    "items": [
      { "id": "b2c3d4e5-6789-4abc-8def-0123456789ab", "name": "Rising Rival", "website": "risingrival.com", "prompts_mentioned": 14, "total_prompts": 52 },
      { "id": "c3d4e5f6-7890-4bcd-9ef0-123456789abc", "name": "Niche Tool", "website": "nichetool.io", "prompts_mentioned": 5, "total_prompts": 52 }
    ],
    "total_prompts": 52
  },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "generated_at": "2026-07-13T10:00:11.218Z"
}

The "who should I be tracking?" endpoint. Where brand-rankings and competitor-time-series only cover competitors you've already added, this surfaces brands the AI models bring up in answers to your prompts that you haven't started tracking — so you can spot emerging rivals before they take share.

Each row is a discovered (detected, not yet dedicated) competitor with prompts_mentioned — how many of your tracked prompts named it — against total_prompts for context. Sorted by prompts_mentioned descending.

domain_id is a required query parameter. Use GET /api/v1/domains to discover which domains the calling key can access.

Authorizations

header
Authorizationstring
Required

Your API key formatted as Bearer ak_live_<your-key>. Create one in the dashboard under Settings → Developers.

header
X-Request-Idstring

Optional UUID for log correlation. If omitted, we generate one and echo it back in the response.

Query parameters

query
domain_idstring
Required

UUID of the domain. Find domains via GET /api/v1/domains. Omitting this returns 400.

query
daysinteger

Trailing look-back window, 1–365. Defaults to 30.

Response

dataobject
Required

The discovery payload.

itemsarray
Required

One row per discovered untracked competitor, sorted by prompts_mentioned descending.

total_promptsinteger
Required

Same denominator, repeated at the top level for convenience.

domain_idstring
Required

Echo of the requested domain.

daysinteger
Required

Echo of the requested window.

generated_atstring
Required

ISO-8601 timestamp of when the server produced (or cached) this response.

Response headers

HeaderDescription
X-CacheHIT or MISS. Whether the response came from cache.
X-Request-IdUnique request id. Echoes incoming if you set one.
X-RateLimit-LimitMax requests per minute for this key.
X-RateLimit-RemainingRequests remaining in the current minute.
X-RateLimit-ResetUnix epoch seconds when the window resets.

Empty result

If no untracked brands were detected in the window, items is an empty list with a 200:

{
  "data": { "items": [], "total_prompts": 0 },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "generated_at": "2026-07-13T10:00:11.218Z"
}