Skip to main content
LLM Metrix
Back to Knowledge Base
Concepts

Looker Studio Connector

Pull your LLM Metrix visibility aggregates into Looker Studio: the daily scan series, per-prompt mention rates and top cited domains, with a personal API token and the same project scoping as the REST API.

By Team @ LLM Metrix5 min read6 sectionsUpdated Aug 22, 2026

Looker Studio is where agency reporting lives, so your LLM Metrix data meets it there: three BI aggregate endpoints feed a first-party community connector you can deploy in about five minutes. Everything below is also true of any other BI tool that can read JSON or CSV; Looker is just the one we ship a connector for.

What you can chart

Dataset Grain Fields
Daily scan series (/api/v1/agg/scans) one row per UTC day scans, avg score, mention rate %, share of voice %
Per-prompt aggregates (/api/v1/agg/prompts) prompt × window answers, mentions, mention rate %, avg rank, engines
Top cited domains (/api/v1/agg/citations) cited host count, engines, own-domain flag

All three accept from/to (ISO timestamps), an optional project_id, and format=csv if you would rather pull flat files. Windows longer than 365 days are refused, not truncated; if a report silently lost its oldest months it would be a wrong number wearing a right shape.

Each row is derived from data that was already frozen when the scan completed, not recomputed at read time. A day’s score in the daily series is the mean of that day’s completed-scan rollups, so re-running a dashboard next week returns the same numbers this week did. The figures behind each field (how the visibility score composes, where share of voice comes from) are the same ones the dashboard renders, which is why a Studio chart and the corresponding dashboard panel should never disagree.

Honest-null discipline

A null metric means no completed scan carried a value that day. It never means zero. When you build scorecards in Studio, use AVG aggregations on score and rate fields; SUM over nulls-to-zero turns “we did not scan” into “we scored nothing”, which is a different claim.

This matters most on free plans, where scans run weekly: five of seven days in a null-to-zero scorecard would report a brand at roughly 29% of its actual visibility. On daily-cadence paid plans a single missed day is less dramatic but the principle holds: blanks are honest, invented zeros compound.

One report per client

Requests authenticate with a personal access token (Authorization: Bearer llmx_…) from Settings → API keys. The aggregates read through exactly the allowlist the rest of the v1 API uses: the key owner’s projects intersected with any project scope on the key.

For agencies this maps directly onto the reporting structure described in solutions for agencies: issue one project-scoped key per retainer client, and that key’s reports can never read another client’s numbers. There is no trust-on-honor step in the middle. Requesting a project outside the key’s scope is a 403, not an empty result set; a 200 with zero rows would be indistinguishable from “never scanned”, so the API refuses instead of guessing.

The connector’s configuration also accepts a custom base URL: leave it blank for llmmetrix.com, or point it at your white-label host so the report itself carries your brand rather than ours.

Refreshes and the shared rate bucket

All v1 reads share one bucket of 120 requests per minute per key. Scheduled refreshes in Studio draw from the same bucket as interactive loads and anything else using that token; a dashboard that auto-refreshes every few minutes across many tabs can crowd out the very refresh that keeps it current. For scheduled delivery of whole reports instead of live dashboards, see the reporting template; for push-style integration into your own systems, the outbound webhook reference covers events we send to you, the inverse of this pull model.

Building the report

With the connector deployed and configured:

  1. Score trend: daily series, AVG aggregation on score, time-series chart. Add mention rate as a second axis if the story is “visibility and recommendation moving together”.
  2. Engine coverage: per-prompt dataset grouped by engine, showing where you appear and where you do not yet.
  3. Citation sources: top cited domains as a table, filtered on the own-domain flag when the question is are they citing us or our competitors? The underlying derivation is covered in citation intelligence.

Studio’s date-range control passes straight through as from/to, so a client asking for “last quarter” is one control move, not a query rewrite.

Deploying the connector

The connector source lives in our public repository under integrations/looker-studio/ (manifest.json + Connector.js). Follow its README alongside Google’s own community connector deployment guide; deployment is a five-minute Apps Script paste job. Configuration is a base URL (blank for llmmetrix.com, or your white-label host), the token, an optional project id, and a dataset choice.

The full request/response contract is generated into our OpenAPI document (see /openapi.json) rather than maintained by hand, so what the connector reads and what the spec says cannot drift.

If charts come back empty

Three causes cover almost every case. The token was minted before your first scan finished, and charts need at least one completed scan per project. The project id filter points at a workspace you are not a member of, which the API answers with empty datasets rather than an error. Or the date range predates your scan history entirely. Widen the range first: it is the usual culprit, and Studio caches field metadata until you refresh the explorer.

Was this helpful?

Ready to put this into practice?

Apply these concepts with our step-by-step tutorials or check your visibility now.