Competitors
Get competitor analysis
https://api.vidrys.com/v1/projects/{project_id}/competitor-analysis- Plan
- Grow and above
- Key
- read
- Rate cost
- 3 units
- MCP tool
- get_competitor_analysis
Competitors
https://api.vidrys.com/v1/projects/{project_id}/competitor-analysisSent as a header on every request.
AuthorizationstringrequiredA Vidrys API key, sent as Bearer vidrys_sk_…. A read key is enough. See Authentication.
project_idstringrequiredThe project's id, from List projects.
application/json
coverageobjectHow many prompts have enough evidence to classify.
analyzableintegerPrompts with enough evidence.
totalintegerPrompts classified.
analyzable_pctnumberanalyzable as a share of total, 0–100.
statesobject[]Prompts per state. States with no prompts are left out.
labelstringState.
Values:winninglosingopen_racemodel_contestedvolatileuncontestedinvisibleinsufficient_evidence
countintegerHow many.
citationobjectWhose pages the contested answers cite.
customernumberShare citing the brand's domains, 0–100.
competitornumberShare citing competitors' domains, 0–100.
third_partynumberShare citing anyone else, 0–100.
total_citationsintegerCitations counted.
confidencestringhigh from 20 citations, medium from 8.
Values:highmediumlow
model_splitobject[]Head-to-head win rate per engine.
enginestringEngine name.
Values:ChatGPTPerplexityGeminiCopilotAI OverviewsClaude
win_ratenumberShare of shared answers naming the brand first, 0–100.
promptsobject[]Every classified prompt.
prompt_idstringPrompt id.
prompt_refintegerThe prompt's short number.
prompt_textstringThe prompt.
statestringwinning / losing: named first in at least 60% of shared answers, or beaten that often. open_race: no one reaches 60%. model_contested: engines disagree. volatile: the winner keeps changing. uncontested: no rival appears often enough. invisible: the brand is never named. insufficient_evidence: fewer than 5 answers.
Values:winninglosingopen_racemodel_contestedvolatileuncontestedinvisibleinsufficient_evidence
prioritystringhigh for buying questions (best, vs, pricing, alternatives), low for navigational ones.
Values:highmediumlow
top_rivalstringnullableThe competitor beating the brand here, if any.
confidencestringhigh from 20 answers, medium from 8.
Values:highmediumlow
trendobject[]Prompts per state over time, oldest first.
datestringDay, as YYYY-MM-DD.
statesobject[]Every state and its count, zeros included.
labelstringState.
Values:winninglosingopen_racemodel_contestedvolatileuncontestedinvisibleinsufficient_evidence
countintegerHow many.
| 404 not_found | The project or item doesn't exist in this workspace. A project from another workspace also returns 404, never 403. |
| 403 forbidden | The workspace or the member the key acts as can't do this in the dashboard either — for example a project with competitive analysis switched off. |
| 401 unauthorized | No key was sent, or the key is unknown, revoked or expired, or the member who created it has left the workspace or been deactivated. |
| 402 plan_required | The workspace's plan doesn't include API access. It's included on Grow, Scale and Custom. |
| 403 workspace_not_approved | The workspace is still waiting for approval, or wasn't approved. |
| 429 rate_limited | Too many requests this minute. Wait for the number of seconds in the `Retry-After` header, then retry. |
Every code, and what to retry, is in Errors.