September 23, 2026
Google Sheets and Looker Studio export
What you get
Four CSV feeds per website, one per sheet tab, that a spreadsheet re-reads on its own schedule:
- scores — every AEO and GEO score point, interleaved by date
- questions — one row per engine answer for every tracked question
- sources — the domains the engines cite, most cited first
- share_of_voice — your brand and every named competitor, last 30 days
https://api.aeotrack.io/exports/sheets/scores.csv?domain_id=dom_…&key=aeo_live_…
https://api.aeotrack.io/exports/sheets/questions.csv?domain_id=dom_…&key=aeo_live_…
https://api.aeotrack.io/exports/sheets/sources.csv?domain_id=dom_…&key=aeo_live_…
https://api.aeotrack.io/exports/sheets/share_of_voice.csv?domain_id=dom_…&key=aeo_live_…
Plan: Pro and up. Auth: an API key from Settings → Company → API keys (see The public API and API keys). The key travels as ?key= because Sheets' IMPORTDATA cannot send headers; an X-API-Key header works too for anything that can set one. Your domain_id is under Settings → Websites, or from GET /api/v1/domains.
Every file starts with a UTF-8 BOM and uses CRLF line endings, so Sheets, Excel and Numbers open it without a dialect prompt. Column headers are a contract: columns are appended, never renamed or reordered, so formulas that address columns by letter keep working.
Google Sheets
The quickest route is Integrations → Google Sheets & Looker in the app: pick the feed (Scores, Questions, Sources or Share of voice), pick or create an API key, and copy the finished formula. By hand, put this in cell A1 of an empty tab:
=IMPORTDATA("https://api.aeotrack.io/exports/sheets/scores.csv?domain_id=dom_abc123&key=aeo_live_xxxxxxxx")
Sheets refreshes IMPORTDATA about once an hour and on file open. To force a refresh, set File → Settings → Calculation to On change and every hour, or add a harmless cache-buster the API ignores: &_=1, then &_=2.
Keep the key in one cell and build the URL with &:
=IMPORTDATA("https://api.aeotrack.io/exports/sheets/questions.csv?domain_id=" & B1 & "&key=" & B2)
Share the sheet as view only — anyone who can see the formula can see the key. Revoke a leaked key under Settings → Company → API keys. Build charts on a second tab that references the import tab, so a refresh never disturbs your formatting.
Columns
scores.csv — one row per score point:
| Column | Meaning |
|---|---|
recorded_at | UTC, YYYY-MM-DD HH:MM:SS |
metric | aeo or geo |
score | 0–100 |
score_non_branded | the score over non-branded questions only (AEO) |
mention_rate | % of answers that named the brand |
citation_rate | % of answers that cited the website |
visibility_share | share of named brands' mentions |
n_results | answers behind the point |
ci_low / ci_high | confidence interval |
scoring_version | which formula produced the point |
questions.csv — one row per engine answer for every tracked question: question, branding, score, sentiment, engine, model, checked_at, mentioned, position, items_listed, cited_sources, error, snippet.
sources.csv — cited source domains, most cited first: source_domain, citations, unique_urls, engines, questions, first_cited_at, last_cited_at.
share_of_voice.csv — last 30 days, one row per named brand: name, is_you, mentions, total_checks, share_pct, mention_rate, avg_position, window_days.
Looker Studio
Looker Studio has no direct CSV-over-HTTPS connector. Use the Google Sheets connector on a sheet fed by IMPORTDATA as above: each tab becomes a data source (set recorded_at to Date & Time and metric to Text in the field editor), and the sheet's hourly refresh becomes the report's refresh. For a client-facing report, build it on a copy of the sheet that holds only the four IMPORTDATA tabs so the API key never appears in a shared data source. An agency usually keeps one report with a website selector, fed by one import tab per client.
Limits and errors
- 120 exports per key per hour, 300 per IP per hour. A sheet or a dashboard is well inside that; a script polling every minute is not.
401bad or revoked key ·402plan without the Sheets export (the response says which plan has it) ·404unknown feed or website.- Responses are cached for five minutes (
Cache-Control: private, max-age=300).
The older Looker Studio export link
Before the four feeds existed, the Looker Studio card under Integrations issued one tokenised link to the score history: https://api.aeotrack.io/integrations/looker/export/{domain_id}/scores.csv?token=…. It still works — scores only, no API key, the token is the secret — and Generate export link on that card issues a new token, which revokes the old link. New sheets and dashboards should use the feeds above.