Skip to content

Citations

Get pages AI cites while answering your tracked prompts, including pages that do not name your brand. Understand your source authority.

Code example

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&limit=50&offset=0&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": {
    "id": "00000000-0000-4000-8000-81f286d10c3c",
    "name": "Notion"
  },
  "citations": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "url": "https://techcrunch.com/notion-review",
      "domain": "techcrunch.com",
      "page_title": "Notion Review: The Best Workspace Tool for 2026",
      "prompt": {
        "text": "What are the best CRM tools for enterprise?",
        "type": "commercial"
      },
      "metrics": {
        "appearances": 5,
        "sentiment": "positive",
        "visibility_score": 85
      },
      "seo": {
        "domain_rating": 92
      },
      "source_type": "organic",
      "search_model": null,
      "date": "2026-01-08"
    }
  ],
  "pagination": {
    "total": 250,
    "limit": 50,
    "offset": 0,
    "has_more": true
  }
}

Synthetic example. Values are made up.

API key required

60 req/min

Endpoint

GET/get-citations

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

viewstring | nullqueryOptional

View mode: list (default), history, queries, sources, feed, heatmap

limitintegerqueryOptional

Results per page

Default: 100 · Minimum: 1 · Maximum: 500

offsetintegerqueryOptional

Pagination offset

Default: 0 · Minimum: 0

domainstring | nullqueryOptional

Filter by domain (partial match). Required when view=sources.

daysintegerqueryOptional

Historical period in days (filters by last_seen date)

Default: 30 · Minimum: 7 · Maximum: 365

days_backintegerqueryOptional

Days back for feed comparison (for view=feed)

Default: 7 · Minimum: 1 · Maximum: 30

tag_idsstring | nullqueryOptional

Comma-separated tag UUIDs to filter by prompt tags

prompt_textstring | nullqueryOptional

Filter citations by prompt text (partial match)

periodstring | nullqueryOptional

A frozen calendar period instead of a rolling window: a month as YYYY-MM (2026-08) or a quarter as YYYY-Qn (2026-Q3). A closed month is read from the archive frozen when it closed; the open month is computed to date. When period is given, days is ignored and the response carries a `period` block saying exactly what was resolved. Definitions: /get-metrics.

Responses and errors
200Successful Response

application/json

CitationsResponse

brandobjectRequired

citationsobject[]Required

Fields in citations

Array of object.

idstringRequired

urlstringRequired

domainstringRequired

page_titlestring | nullOptional

promptobjectOptional

Default: {}

promptsstring[]Optional

Default: []

Fields in prompts

Array of string. Default: []

string.

metricsobjectOptional

Default: {}

seoobjectOptional

Default: {}

source_typestringOptional

Default: "organic"

search_modelstring | nullOptional

ai_providerstring | nullOptional

ai_providersstring[] | nullOptional

provider_countsobject | nullOptional

datestring | nullOptional

mentions_brandbooleanOptional

Default: false

brand_checkstringOptional

Default: "not_mentioned"

not_checked_reasonstring | nullOptional

competitorsstring[]Optional

Default: []

Fields in competitors

Array of string. Default: []

string.

first_seenstring | nullOptional

last_seenstring | nullOptional

paginationobjectRequired

Pagination metadata.

Fields in pagination

totalintegerRequired

limitintegerRequired

offsetintegerRequired

has_morebooleanRequired

CitationsHistoryResponse

brandobjectRequired

brand_time_seriesobject[]Required

Fields in brand_time_series

Array of object.

datestringRequired

total_citationsintegerRequired

new_citationsinteger | nullOptional

brand_mentionsintegerRequired

new_brand_mentionsinteger | nullOptional

unique_sourcesintegerRequired

avg_sentimentnumber | nullOptional

competitor_time_seriesobjectRequired

snapshots_availableintegerRequired

date_rangeobjectRequired

CitationsQueriesResponse

brandobjectRequired

clustersobject[]Required

Fields in clusters

Array of object.

intentstringRequired

labelstringRequired

queriesstring[]Required

Fields in queries

Array of string.

string.

total_citationsintegerRequired

brand_appears_inintegerRequired

coverage_ratenumberRequired

top_queriesobject[]Required

Fields in top_queries

Array of object.

querystringRequired

intentstringRequired

frequencyintegerRequired

citations_foundintegerRequired

brand_appearsbooleanRequired

top_sourcesstring[]Required

Fields in top_sources

Array of string.

string.

competitors_appearingstring[]Required

Fields in competitors_appearing

Array of string.

string.

is_newbooleanRequired

trendstringRequired

gap_queriesobject[]Required

Fields in gap_queries

Array of object.

querystringRequired

intentstringRequired

frequencyintegerRequired

citations_foundintegerRequired

brand_appearsbooleanRequired

top_sourcesstring[]Required

Fields in top_sources

Array of string.

string.

competitors_appearingstring[]Required

Fields in competitors_appearing

Array of string.

string.

is_newbooleanRequired

trendstringRequired

coverage_by_intentobjectRequired

new_queries_countintegerRequired

rising_queries_countintegerRequired

CitationsSourceResponse

brandobjectRequired

domainstringRequired

total_citationsintegerRequired

unique_pagesintegerRequired

mentions_youbooleanRequired

mention_countintegerRequired

competitors_on_domainstring[]Required

Fields in competitors_on_domain

Array of string.

string.

avg_sentimentnumber | nullOptional

pagesobject[]Required

Fields in pages

Array of object.

urlstringRequired

h1string | nullOptional

sentimentinteger | nullOptional

mentions_brandbooleanOptional

Default: false

brand_checkstringOptional

Default: "not_mentioned"

not_checked_reasonstring | nullOptional

competitorsstring[]Optional

Default: []

Fields in competitors

Array of string. Default: []

string.

appearance_countintegerOptional

Default: 1

first_seenstring | nullOptional

last_seenstring | nullOptional

CitationsFeedResponse

brandobjectRequired

eventsobject[]Required

Fields in events

Array of object.

event_typestringRequired

urlstringRequired

domainstringRequired

h1string | nullOptional

source_typestring | nullOptional

timestampstringRequired

mentions_brandboolean | nullOptional

sentimentinteger | nullOptional

prev_sentimentinteger | nullOptional

appearance_countinteger | nullOptional

prev_appearance_countinteger | nullOptional

new_competitorsstring[] | nullOptional

promptsstring[] | nullOptional

current_snapshot_datestring | nullOptional

previous_snapshot_datestring | nullOptional

total_currentintegerOptional

Default: 0

total_previousintegerOptional

Default: 0

CitationsHeatmapResponse

brandobjectRequired

domainsstring[]Required

Fields in domains

Array of string.

string.

brandsstring[]Required

Fields in brands

Array of string.

string.

your_brandstringRequired

cellsobject[]Required

Fields in cells

Array of object.

domainstringRequired

brandstringRequired

is_presentbooleanRequired

mention_countintegerRequired

your_coveragenumberRequired

competitor_coverageobjectRequired

CitationsAnalyticsResponse

periodobject | nullOptional

Fields in period
PeriodMeta

keystringRequired

kindstringRequired

labelstringRequired

startstringRequired

endstringRequired

statusstringRequired

sourcestringRequired

frozen_atstring | nullOptional

pipeline_versionstring | nullOptional

restated_atstring | nullOptional

restatementsobject[]Optional

Default: []

Fields in restatements

Array of object. Default: []

object. Additional keys are allowed.

coverageobjectOptional

Default: {}

fields_computedstring[]Optional

Default: []

Fields in fields_computed

Array of string. Default: []

string.

fields_missingstring[]Optional

Default: []

Fields in fields_missing

Array of string. Default: []

string.

notesstring[]Optional

Default: []

Fields in notes

Array of string. Default: []

string.

monthsobject | nullOptional

rank_sourcestring | nullOptional

null

null.

brandobjectRequired

summaryobjectRequired

Fields in summary

total_citationsintegerRequired

unique_sourcesinteger | nullOptional

total_domainsintegerRequired

brand_mentionsintegerRequired

competitor_mentionsinteger | nullOptional

positive_percentagenumber | nullOptional

avg_sentimentnumber | nullOptional

citations_changenumber | nullOptional

brand_mentions_changenumber | nullOptional

source_type_breakdownobject[] | nullOptional

top_domainsobject[]Required

Fields in top_domains

Array of object.

domainstringRequired

times_citedintegerRequired

unique_pagesintegerRequired

citation_sharenumber | nullOptional

source_typestring | nullOptional

top_competitorsobject[]Required

Fields in top_competitors

Array of object.

namestringRequired

times_citedintegerRequired

unique_sourcesintegerRequired

citation_sharenumberRequired

period_figuresobject | nullOptional

CitationDetailResponse

brandobjectRequired

urlstringRequired

domainstringRequired

h1string | nullOptional

sentimentinteger | nullOptional

sentiment_labelstring | nullOptional

mentions_brandbooleanOptional

Default: false

brand_checkstringOptional

Default: "not_mentioned"

not_checked_reasonstring | nullOptional

competitorsstring[]Optional

Default: []

Fields in competitors

Array of string. Default: []

string.

topicsstring[]Optional

Default: []

Fields in topics

Array of string. Default: []

string.

appearance_countintegerOptional

Default: 1

first_seenstring | nullOptional

last_seenstring | nullOptional

promptsstring[]Optional

Default: []

Fields in prompts

Array of string. Default: []

string.

source_typestring | nullOptional

appearancesobject[]Optional

Default: []

Fields in appearances

Array of object. Default: []

datestring | nullOptional

modelstring | nullOptional

promptstring | nullOptional

related_citationsstring[]Optional

Default: []

Fields in related_citations

Array of string. Default: []

string.

CitationsByModelResponse

brandobjectRequired

modelsobject[]Required

Fields in models

Array of object.

modelstringRequired

total_citationsintegerRequired

brand_mentionsintegerRequired

unique_sourcesintegerRequired

top_domainsstring[]Optional

Default: []

Fields in top_domains

Array of string. Default: []

string.

CitationsTopPagesResponse

periodobject | nullOptional

Fields in period
PeriodMeta

keystringRequired

kindstringRequired

labelstringRequired

startstringRequired

endstringRequired

statusstringRequired

sourcestringRequired

frozen_atstring | nullOptional

pipeline_versionstring | nullOptional

restated_atstring | nullOptional

restatementsobject[]Optional

Default: []

Fields in restatements

Array of object. Default: []

object. Additional keys are allowed.

coverageobjectOptional

Default: {}

fields_computedstring[]Optional

Default: []

Fields in fields_computed

Array of string. Default: []

string.

fields_missingstring[]Optional

Default: []

Fields in fields_missing

Array of string. Default: []

string.

notesstring[]Optional

Default: []

Fields in notes

Array of string. Default: []

string.

monthsobject | nullOptional

rank_sourcestring | nullOptional

null

null.

brandobjectRequired

pagesobject[]Required

Fields in pages

Array of object.

urlstringRequired

domainstringRequired

h1string | nullOptional

appearance_countintegerOptional

Default: 1

appearance_count_30dinteger | nullOptional

sentimentinteger | nullOptional

mentions_brandbooleanOptional

Default: false

brand_checkstringOptional

Default: "not_mentioned"

not_checked_reasonstring | nullOptional

competitorsstring[]Optional

Default: []

Fields in competitors

Array of string. Default: []

string.

source_typestring | nullOptional

appearance_count_periodinteger | nullOptional

modelsstring[]Optional

Default: []

Fields in models

Array of string. Default: []

string.

totalintegerRequired

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source

Returns pages AI cites while answering your tracked prompts, including pages that do not name your brand. Citations come from models with web search capabilities like Perplexity and ChatGPT.

This endpoint is rate limited to 60 requests per minute per API key. See the Rate Limits page for handling 429 responses.
Frozen periods. Pass period=2026-08 (a month) or period=2026-Q3 (a quarter) to read this endpoint from the monthly archive instead of a rolling window. A closed month answers identically however later it is asked; the open month is computed to date and says status: open. When period is set, days is ignored and the response carries a period block. Only view=top_pages and view=analytics read a period (400 otherwise). appearance_count is the page's citations inside the period, with appearance_count_period and models alongside. In analytics, top_domains are the domains cited most with no page naming the brand, and period_figures carries the brand-page figures. See Periods.
Try GET /get-citations

Filter by Domain

Use the domain parameter to filter citations from a specific source:

GET /get-citations?brand_id=...&domain=techcrunch.com
The domain filter uses partial matching. techcrunch will matchtechcrunch.com and blog.techcrunch.com.

View Modes

Use the view parameter to access different citation data views. Omitting it (or passing view=list) returns the default paginated list above.

ViewDescription
listDefault. Paginated citation URLs.
historyTime series of citation counts, brand mentions, and sentiment.
queriesQuery-level analytics with intent clustering and gap analysis.
sourcesFull domain profile. Requires domain parameter.
feedChange feed: new, lost, and changed citations.
heatmapBrand vs competitors presence matrix across top domains.

view=history

Returns time series data for citation trends over a configurable period. Use the days parameter to control the lookback window (7-365, default 30).

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=history&limit=100&offset=0&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": { "id": "...", "name": "Notion" },
  "brand_time_series": [
    {
      "date": "2026-02-01",
      "total_citations": 142,
      "brand_mentions": 98,
      "unique_sources": 67,
      "avg_sentiment": 72.4
    }
  ],
  "competitor_time_series": {
    "Coda": [{ "date": "2026-02-01", "mentions": 45 }]
  },
  "snapshots_available": 8,
  "date_range": { "start": "2026-02-01", "end": "2026-03-01" }
}

Synthetic example. Values are made up.

view=queries

Returns query-level citation analytics: intent clusters, top/gap queries, and coverage rates. Use this to understand which search queries drive citations and where gaps exist.

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=queries&limit=100&offset=0&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": { "id": "...", "name": "Notion" },
  "clusters": [
    {
      "intent": "comparison",
      "label": "Comparison Queries",
      "queries": ["notion vs coda", "notion vs confluence"],
      "total_citations": 24,
      "brand_appears_in": 18,
      "coverage_rate": 75.0
    }
  ],
  "top_queries": [
    {
      "query": "best project management tools",
      "intent": "recommendation",
      "frequency": 12,
      "citations_found": 8,
      "brand_appears": true,
      "top_sources": ["techcrunch.com", "g2.com"],
      "competitors_appearing": ["Coda", "Confluence"],
      "is_new": false,
      "trend": "up"
    }
  ],
  "gap_queries": [],
  "coverage_by_intent": { "comparison": 75.0, "recommendation": 60.0 },
  "new_queries_count": 3,
  "rising_queries_count": 5
}

Synthetic example. Values are made up.

view=sources

Returns a detailed profile for a specific source domain. The domain parameter is required and must be an exact domain match (e.g. techcrunch.com).

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=sources&limit=100&offset=0&domain=techcrunch.com&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": { "id": "...", "name": "Notion" },
  "domain": "techcrunch.com",
  "total_citations": 45,
  "unique_pages": 12,
  "mentions_you": true,
  "mention_count": 8,
  "competitors_on_domain": ["Coda", "Confluence"],
  "avg_sentiment": 74.2,
  "pages": [
    {
      "url": "https://techcrunch.com/notion-review",
      "h1": "Notion Review 2026",
      "sentiment": 82,
      "mentions_brand": true,
      "competitors": ["Coda"],
      "appearance_count": 5
    }
  ],
  "first_seen": "2025-11-15",
  "last_seen": "2026-03-01"
}

Synthetic example. Values are made up.

Returns 400 if the domain parameter is not provided, or 404 if no citations exist for that domain.

view=feed

Returns a change feed comparing the current citation snapshot against a previous one. Use days_back to control how far back to compare (1-30, default 7). Events include new citations, lost citations, sentiment changes, and new competitor appearances.

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=feed&limit=100&offset=0&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": { "id": "...", "name": "Notion" },
  "events": [
    {
      "event_type": "new",
      "url": "https://zapier.com/blog/notion-tips",
      "domain": "zapier.com",
      "h1": "10 Notion Tips for 2026",
      "source_type": "earned_media",
      "timestamp": "2026-03-01",
      "mentions_brand": true,
      "sentiment": 78,
      "appearance_count": 3,
      "prompts": ["best productivity tools"]
    },
    {
      "event_type": "lost",
      "url": "https://old-blog.com/notion",
      "domain": "old-blog.com",
      "timestamp": "2026-02-25"
    }
  ],
  "current_snapshot_date": "2026-03-01",
  "previous_snapshot_date": "2026-02-22",
  "total_current": 250,
  "total_previous": 245
}

Synthetic example. Values are made up.

view=heatmap

Returns a competitive presence matrix showing which brands appear on which top domains. Useful for identifying citation coverage gaps relative to competitors.

Request
curl -X GET 'https://api.trakkr.ai/get-citations?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=heatmap&limit=100&offset=0&days=30&days_back=7' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "brand": { "id": "...", "name": "Notion" },
  "domains": ["techcrunch.com", "g2.com", "zapier.com"],
  "brands": ["Notion", "Coda", "Confluence"],
  "your_brand": "Notion",
  "cells": [
    { "domain": "techcrunch.com", "brand": "Notion", "is_present": true, "mention_count": 8 },
    { "domain": "techcrunch.com", "brand": "Coda", "is_present": true, "mention_count": 3 }
  ],
  "your_coverage": 86.7,
  "competitor_coverage": { "Coda": 60.0, "Confluence": 46.7 }
}

Synthetic example. Values are made up.

Use Cases

  • Identify which content is getting cited by AI
  • Find high-authority domains linking to your brand
  • Track citation trends over time with view=history
  • Discover content gaps with view=queries
  • Monitor changes between saved citation snapshots with view=feed
  • Compare source coverage against competitors with view=heatmap