Get Competitor Data
Deep analysis of how you compare to competitors in AI responses.
Endpoint
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_idstringrequiredBrand UUID from /get-brands. The legacy brand alias is also accepted.
viewstringView mode: summary, arena, head-to-head, by-model, threats, heatmap, over_time
Default: summary
competitorstringCompetitor name. Required when view=head-to-head. On view=over_time it returns just you and that competitor.
daysintegerHistory window every view is computed over: 7, 14, 30 or 90.
Default: 30
tag_idsstringComma-separated tag UUIDs from /get-tags. Every metric is recalculated over only the prompts carrying those tags.
limitintegerview=over_time only: how many competitor series to return, ranked best first. 1 to 50.
Default: 10
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_namestringBrand or competitor name (your brand is always first)
total_mentionsintegerTimes this brand was mentioned in the latest competitor snapshot
avg_ranknumberAverage 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.
| Field | Description |
|---|---|
prompt | The prompt text |
top_brand | Brand most often in position #1 |
count | Times 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
competitorstringCompetitor name
countintegerTimes you both appeared in the same response
primary_wins_pctnumberPercentage of those appearances where you ranked higher
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.
| View | Description |
|---|---|
summary | Default. Full competitive analysis with rankings and co-occurrences. |
arena | Prompt-by-prompt battlegrounds with leaders, gaps, and rankings. |
head-to-head | Direct 1v1 comparison. Requires competitor parameter. |
by-model | Competitive breakdown per AI model. |
threats | Competitive threats, opportunity prompts, alerts, and summary counts. |
heatmap | Brand-by-model cells, plus your best and worst model. |
over_time | Daily visibility per brand, for you and your competitors. |
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.
Arena Prompt
prompt_textstringPrompt being compared
your_rankintegerYour rank for this prompt
your_scorenumberYour average rank score when available
leaderstringBrand leading this prompt
leader_scorenumberLeader average rank score when available
gap_to_leadernumberRank-score gap to the leader
total_competitorsintegerCompetitors found for this prompt
rankingsarrayTop 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).
competitor parameter is not provided, or 404 if the competitor is not found in your competitive set.Head-to-Head Result
youobjectYour visibility, average rank, and #1 counts
rivalobjectSelected competitor stats
head_to_headobjectWins, losses, ties, win rate, and matchup count
where_you_winarrayPrompts where you outrank the rival
where_rival_winsarrayPrompts where the rival outranks you
available_rivalsarrayCompetitors 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.
Model Performance
llmsarrayAI models included in the heatmap
brandsarrayBrands included, with your brand first when present
your_brandstringYour brand name
heatmaparrayBrand/model cells with visibility, rank, mentions, and is_you
insightsarrayStrength and weakness observations by model
your_best_llmstringYour strongest model by visibility
your_worst_llmstringYour weakest model by visibility
view=threats
Returns competitive threats, opportunity prompts, alerts, and summary counts.
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
threatsarrayCompetitors pressuring your brand
opportunitiesarrayPrompts where competitors create an opening
alertsarrayNotable competitive events
summaryobjectCounts 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.
Over Time Result
brandsarrayOne entry per brand: name, is_you, rank, visibility, data_points
brands[].data_pointsarrayDaily points of { date, visibility }
period_daysintegerThe window used, matching the days parameter
date_rangeobjectstart and end dates covered by the response
your_brandstringName of the tracked brand
data_throughstringLast date with measured data
filters_appliedobjectThe 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.
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_idsto any view - Prioritize content efforts based on competitive gaps
- Compare performance by AI model with
view=by-model - Detect emerging threats with
view=threats
