Skip to main content

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:

Operation: 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 } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE", "aiVisibilityBrandId": "QWlWaXNpYmlsaXR5QnJhbmQx", "timeBucket": "Day", "dateRange": { "start": "2025-01-01", "end": "2025-01-31" } }
GetAiVisibilityVisibilityScoresTry in Explorer
GraphQL
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:

ValueDescription
dayOne data point per day
weekOne data point per week
monthOne data point per month

Data points

Each data point in the time series includes:

FieldDescription
dateStart of the time bucket (ISO 8601 date)
avgVisibilityScoreCombined visibility score for this period
avgCitationQualityScoreAverage citation quality score component
avgBrandMentionQualityScoreAverage mention quality score component
totalBrandCitationsTotal citations for the brand in this period
totalBrandMentionsTotal 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:

Operation: 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 } } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE", "aiVisibilityBrandId": "QWlWaXNpYmlsaXR5QnJhbmQx", "timeBucket": "Week", "dateRange": { "start": "2025-01-01", "end": "2025-03-31" } }
GetAiVisibilityTopicVisibilityScoresTry in Explorer
GraphQL
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:

Operation: query GetAiVisibilityAiProviders($accountId: ObjectID!) { getAiVisibilityAiProviders(accountId: $accountId, first: 10) { nodes { id rawId name type } } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ" }
GetAiVisibilityAiProvidersTry in Explorer
GraphQL
query GetAiVisibilityAiProviders($accountId: ObjectID!) {
getAiVisibilityAiProviders(accountId: $accountId, first: 10) {
nodes {
id
rawId
name
type
}
}
}

Available provider types:

TypeName
openai_apiChatGPT
perplexity_apiPerplexity
google_apiGemini
anthropic_apiClaude
google_ai_mode_serp_apiAI Mode
google_ai_overview_serp_apiAI 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:

Operation: query GetAiVisibilityActiveAiProviders( $accountId: ObjectID! $aiVisibilityProjectId: ObjectID! $dateRange: AiVisibilityDateRangeInput ) { getAiVisibilityActiveAiProviders( accountId: $accountId aiVisibilityProjectId: $aiVisibilityProjectId dateRange: $dateRange ) { id rawId name type } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE", "dateRange": { "start": "2025-01-01", "end": "2025-01-31" } }
GetAiVisibilityActiveAiProvidersTry in Explorer
GraphQL
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