Skip to content

Get Competitor Data

Deep analysis of how you compare to competitors in AI responses.

Requires authentication
60 req/min

Endpoint

GET/get-competitor-data

The default response has exactly three keys: brand_performance_summary, top_spot_ownership and primary_brand_cooccurrences. Use the view parameter for the other shapes.

Query Parameters

brand_idstringrequired

Brand UUID from /get-brands. The legacy brand alias is also accepted.

viewstring

View mode: summary, arena, head-to-head, by-model, threats, heatmap, over_time

Default: summary

competitorstring

Competitor name. Required when view=head-to-head. On view=over_time it returns just you and that competitor.

daysinteger

History window every view is computed over: 7, 14, 30 or 90.

Default: 30

tag_idsstring

Comma-separated tag UUIDs from /get-tags. Every metric is recalculated over only the prompts carrying those tags.

limitinteger

view=over_time only: how many competitor series to return, ranked best first. 1 to 50.

Default: 10

This endpoint is rate limited to 60 requests per minute per API key. See the Rate Limits page for handling 429 responses.

Performance Summary

The brand_performance_summary array shows how you and your competitors rank overall. Your brand is always listed first, and up to 20 brands come back.

Performance Summary

brand_namestring

Brand or competitor name (your brand is always first)

total_mentionsinteger

Times this brand was mentioned in the latest competitor snapshot

avg_ranknumber

Average position when mentioned (lower is better)

Top Spot Ownership

The top_spot_ownership array shows which brand "owns" the #1 position for each prompt. Use this to identify prompts where competitors dominate. Up to 10 prompts come back.

FieldDescription
promptThe prompt text
top_brandBrand most often in position #1
countTimes this brand was #1

Head-to-Head

The primary_brand_cooccurrences array shows how you perform when you and a competitor both appear in the same AI response. Up to 10 competitors come back, most co-occurrences first.

Co-occurrence Data

competitorstring

Competitor name

countinteger

Times you both appeared in the same response

primary_wins_pctnumber

Percentage of those appearances where you ranked higher

A primary_wins_pct above 50% means you typically rank higher than that competitor when you both appear. Below 50% means they usually beat you.

View Modes

Use the view parameter to access different competitive analysis views. Omitting it (or passing view=summary) returns the default response above.

ViewDescription
summaryDefault. Full competitive analysis with rankings and co-occurrences.
arenaPrompt-by-prompt battlegrounds with leaders, gaps, and rankings.
head-to-headDirect 1v1 comparison. Requires competitor parameter.
by-modelCompetitive breakdown per AI model.
threatsCompetitive threats, opportunity prompts, alerts, and summary counts.
heatmapBrand-by-model cells, plus your best and worst model.
over_timeDaily visibility per brand, for you and your competitors.
Any other value returns 400 with the list of valid views.

view=arena

Returns prompt-by-prompt battlegrounds. Each prompt includes your rank, the current leader, the gap to that leader, and the top competitor rankings.

Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=arena'
200 OK
1{
2 "prompts": [
3 {
4 "prompt_text": "best team knowledge base",
5 "your_rank": 2,
6 "your_score": 2.4,
7 "leader": "Coda",
8 "leader_score": 1.6,
9 "gap_to_leader": 0.8,
10 "total_competitors": 6,
11 "rankings": [
12 { "rank": 1, "name": "Coda", "score": 1.6, "is_you": false },
13 { "rank": 2, "name": "Notion", "score": 2.4, "is_you": true }
14 ]
15 }
16 ],
17 "total_prompts": 45,
18 "prompts_you_lead": 12,
19 "prompts_top_3": 31
20}

Arena Prompt

prompt_textstring

Prompt being compared

your_rankinteger

Your rank for this prompt

your_scorenumber

Your average rank score when available

leaderstring

Brand leading this prompt

leader_scorenumber

Leader average rank score when available

gap_to_leadernumber

Rank-score gap to the leader

total_competitorsinteger

Competitors found for this prompt

rankingsarray

Top brands for this prompt

view=head-to-head

Returns a direct 1v1 comparison with a specific competitor. The competitor parameter is required and must match a competitor name (case-insensitive).

Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=head-to-head&competitor=Coda'
200 OK
1{
2 "you": {
3 "name": "Notion",
4 "visibility": 42.5,
5 "visibility_change": 3.1,
6 "avg_rank": 2.4,
7 "rank1_count": 12
8 },
9 "rival": {
10 "name": "Coda",
11 "visibility": 36.2,
12 "visibility_change": null,
13 "avg_rank": 3.1,
14 "rank1_count": 8
15 },
16 "head_to_head": {
17 "your_wins": 18,
18 "rival_wins": 10,
19 "ties": 4,
20 "your_win_rate": 0.56,
21 "total_matchups": 32
22 },
23 "where_rival_wins": [
24 {
25 "prompt_text": "best document collaboration tools",
26 "your_rank": 3,
27 "rival_rank": 1
28 }
29 ],
30 "where_you_win": [
31 {
32 "prompt_text": "best project management tools 2026",
33 "your_rank": 1,
34 "rival_rank": 4
35 }
36 ],
37 "available_rivals": ["Coda", "Confluence", "Slite"]
38}
Returns 400 if the competitor parameter is not provided, or 404 if the competitor is not found in your competitive set.

Head-to-Head Result

youobject

Your visibility, average rank, and #1 counts

rivalobject

Selected competitor stats

head_to_headobject

Wins, losses, ties, win rate, and matchup count

where_you_winarray

Prompts where you outrank the rival

where_rival_winsarray

Prompts where the rival outranks you

available_rivalsarray

Competitors available for comparison

view=by-model

Returns competitive performance broken down by AI model (ChatGPT, Perplexity, Gemini, etc.). Useful for identifying which models favor your brand versus competitors.

Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=by-model'
200 OK
1{
2 "llms": ["ChatGPT", "Claude", "Perplexity"],
3 "brands": ["Notion", "Coda", "Confluence"],
4 "your_brand": "Notion",
5 "heatmap": [
6 {
7 "brand": "Notion",
8 "llm": "ChatGPT",
9 "visibility": 48.2,
10 "avg_rank": 2.4,
11 "mentions": 45,
12 "is_you": true
13 }
14 ],
15 "insights": [
16 { "type": "strength", "llm": "ChatGPT", "message": "You perform best on ChatGPT" }
17 ],
18 "your_best_llm": "ChatGPT",
19 "your_worst_llm": "Gemini"
20}

Model Performance

llmsarray

AI models included in the heatmap

brandsarray

Brands included, with your brand first when present

your_brandstring

Your brand name

heatmaparray

Brand/model cells with visibility, rank, mentions, and is_you

insightsarray

Strength and weakness observations by model

your_best_llmstring

Your strongest model by visibility

your_worst_llmstring

Your weakest model by visibility

view=threats

Returns competitive threats, opportunity prompts, alerts, and summary counts.

Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=threats'
200 OK
1{
2 "threats": [
3 {
4 "competitor": "Coda",
5 "severity": "high",
6 "pressure_score": 0,
7 "win_rate_against_you": 0.61,
8 "cooccurrence_count": 32,
9 "trend": "gaining",
10 "description": "Wins 61% of 32 head-to-head matchups"
11 }
12 ],
13 "opportunities": [
14 {
15 "prompt_text": "best CRM for startups",
16 "your_rank": 0,
17 "gap_to_next": 0,
18 "next_competitor": "Coda",
19 "opportunity_score": 6,
20 "category": "comparison"
21 }
22 ],
23 "alerts": [
24 {
25 "type": "threat",
26 "severity": "high",
27 "message": "Coda is gaining on comparison prompts",
28 "prompt": "best team knowledge base",
29 "competitor": "Coda"
30 }
31 ],
32 "summary": {
33 "total_threats": 1,
34 "critical_threats": 0,
35 "high_threats": 1,
36 "total_opportunities": 1,
37 "high_value_opportunities": 1
38 }
39}
pressure_score is not populated yet and always comes back as 0. Rank threats on severity, win_rate_against_you and cooccurrence_count instead.

Threats Result

threatsarray

Competitors pressuring your brand

opportunitiesarray

Prompts where competitors create an opening

alertsarray

Notable competitive events

summaryobject

Counts for threats and opportunities

view=over_time

Returns one daily visibility series per brand: yours first with is_you set to true, then your competitors ranked best first. This is the same data the Competitive Trend chart draws in the app.

The series is recomputed from stored daily results, so the full window is available the first time you call it. You do not need to accumulate history yourself.
Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=over_time&days=90'
200 OK
1{
2 "brands": [
3 {
4 "name": "Notion",
5 "is_you": true,
6 "rank": 1,
7 "visibility": 41.1,
8 "data_points": [
9 { "date": "2026-05-02", "visibility": 38.2 },
10 { "date": "2026-05-09", "visibility": 41.1 }
11 ]
12 },
13 {
14 "name": "Coda",
15 "is_you": false,
16 "rank": 2,
17 "visibility": 36.4,
18 "data_points": [
19 { "date": "2026-05-02", "visibility": 34.9 },
20 { "date": "2026-05-09", "visibility": 36.4 }
21 ]
22 }
23 ],
24 "period_days": 90,
25 "date_range": { "start": "2026-05-02", "end": "2026-07-28" },
26 "your_brand": "Notion",
27 "data_through": "2026-07-28",
28 "filters_applied": {
29 "days": 90,
30 "tag_ids": [],
31 "prompts_in_scope": 42
32 }
33}

Over Time Result

brandsarray

One entry per brand: name, is_you, rank, visibility, data_points

brands[].data_pointsarray

Daily points of { date, visibility }

period_daysinteger

The window used, matching the days parameter

date_rangeobject

start and end dates covered by the response

your_brandstring

Name of the tracked brand

data_throughstring

Last date with measured data

filters_appliedobject

The scope used: days, tag_ids and prompts_in_scope

Scoping by window and tag

Every view accepts days and tag_ids. Passing tags recalculates every number in the response over only the prompts carrying those tags, so you can ask how a client compares inside one business line rather than across their whole prompt set. Tag UUIDs come from /get-tags.

Daily competitive position within one tag
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=BRAND_ID&view=over_time&days=90&tag_ids=TAG_ID'
Responses carry filters_applied so a tagged slice can never be mistaken for the brand's overall position. In view=head-to-head, the visibility_change field is null under a tag filter, because that movement is measured across the full prompt set.

days accepts 7, 14, 30 or 90. Any other value returns 400 with the supported list.

Use Cases

  • Identify your strongest and weakest competitive matchups
  • Find prompts where competitors dominate
  • Track competitive position over time with view=over_time
  • Report on one business line by passing tag_ids to any view
  • Prioritize content efforts based on competitive gaps
  • Compare performance by AI model with view=by-model
  • Detect emerging threats with view=threats

Code example

Request
Code language
1curl -H 'Authorization: Bearer $TRAKKR_API_KEY' \
2 'https://api.trakkr.ai/get-competitor-data?brand_id=00000000-0000-4000-8000-81f286d10c3c'
200 OK
1{
2 "brand_performance_summary": [
3 { "brand_name": "Notion", "total_mentions": 127, "avg_rank": 2.8 },
4 { "brand_name": "Coda", "total_mentions": 98, "avg_rank": 3.4 }
5 ],
6 "top_spot_ownership": [
7 {
8 "prompt": "What are the best CRM tools for enterprise?",
9 "top_brand": "Notion",
10 "count": 15
11 }
12 ],
13 "primary_brand_cooccurrences": [
14 { "competitor": "Coda", "count": 45, "primary_wins_pct": 68.5 }
15 ]
16}
Press ? for keyboard shortcuts