Visibility Scores & Analytics
Visibility score formula
The visibility score is a composite metric (0-100) calculated from two components:
visibility_score = avg_citation_quality_score x appearance_rate x 0.25
+ avg_brand_mention_quality_score x appearance_rate x 0.75
- Citation weight: 25%
- Mention weight: 75%
- Appearance rate:
sqrt(runs_where_brand_appeared / total_finished_runs)-- the square root provides a softer penalty than linear scaling
The score rewards brands that appear consistently across prompt runs. A brand that appears in every run with a score of 80 will outrank one that appears in 10% of runs with a score of 100.
Aggregated visibility scores
Get a single time-series trend of visibility scores across all topics in a project:
query GetAiVisibilityVisibilityScores(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
$aiVisibilityBrandId: ObjectID!
$timeBucket: AiVisibilityTimeBucket!
$dateRange: AiVisibilityDateRangeInput
) {
getAiVisibilityVisibilityScores(
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
aiVisibilityBrandId: $aiVisibilityBrandId
timeBucket: $timeBucket
dateRange: $dateRange
) {
date
avgVisibilityScore
avgCitationQualityScore
avgBrandMentionQualityScore
totalBrandCitations
totalBrandMentions
}
}
Time bucketing
The timeBucket parameter controls the granularity of the time series:
| Value | Description |
|---|---|
day | One data point per day |
week | One data point per week |
month | One data point per month |
Data points
Each data point in the time series includes:
| Field | Description |
|---|---|
date | Start of the time bucket (ISO 8601 date) |
avgVisibilityScore | Combined visibility score for this period |
avgCitationQualityScore | Average citation quality score component |
avgBrandMentionQualityScore | Average mention quality score component |
totalBrandCitations | Total citations for the brand in this period |
totalBrandMentions | Total mentions for the brand in this period |
Optional filters
The aggregated query supports optional aiVisibilityTopicId and aiVisibilityPromptId filters to narrow the scope to a specific topic or prompt.
Per-topic visibility scores
Get visibility score trends broken down by topic:
query GetAiVisibilityTopicVisibilityScores(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
$aiVisibilityBrandId: ObjectID!
$timeBucket: AiVisibilityTimeBucket!
$dateRange: AiVisibilityDateRangeInput
) {
getAiVisibilityTopicVisibilityScores(
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
aiVisibilityBrandId: $aiVisibilityBrandId
timeBucket: $timeBucket
dateRange: $dateRange
) {
aiVisibilityTopicId
aiVisibilityTopicRawId
topicName
dataPoints {
date
avgVisibilityScore
avgCitationQualityScore
avgBrandMentionQualityScore
totalBrandCitations
totalBrandMentions
}
}
}
Each topic in the result includes its own array of dataPoints with the same fields as the aggregated query. This is useful for comparing how visibility varies across different topic areas.
AI providers
List all providers
Get all available AI providers and whether they are included in your subscription:
query GetAiVisibilityAiProviders($accountId: ObjectID!) {
getAiVisibilityAiProviders(accountId: $accountId, first: 10) {
nodes {
id
rawId
name
type
}
}
}
Available provider types:
| Type | Name |
|---|---|
openai_api | ChatGPT |
perplexity_api | Perplexity |
google_api | Gemini |
anthropic_api | Claude |
google_ai_mode_serp_api | AI Mode |
google_ai_overview_serp_api | AI Overviews |
List active providers
Get providers that had at least one finished prompt run in a project within a date range. Useful for populating filter dropdowns:
query GetAiVisibilityActiveAiProviders(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
$dateRange: AiVisibilityDateRangeInput
) {
getAiVisibilityActiveAiProviders(
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
dateRange: $dateRange
) {
id
rawId
name
type
}
}
Filtering by AI provider
All data-fetching queries accept an optional aiProviderTypes parameter. When provided, only data from prompt runs executed by the specified platforms is included:
getAiVisibilityTopics(
# ... other params
aiProviderTypes: [openai_api, perplexity_api]
) {
# Only data from ChatGPT and Perplexity runs
}
Schema reference
AiVisibilityVisibilityScoreDataPoint-- Time-series data pointAiVisibilityTopicVisibilityScoreTrend-- Per-topic trendAiVisibilityAiProvider-- AI provider typeAiVisibilityAiProviderType-- Provider type enumAiVisibilityTimeBucket-- Time bucket enum