Building a Looker Studio dashboard with the Tracker API
Build a read-only Looker Studio connector for Rankability tracking data without exposing API keys or misrepresenting partial results.
Use the Tracker API as the data source for a custom Google Apps Script community connector. The route and scope retain the legacy reporter identifier for compatibility. A reporting dashboard normally needs only reporter:read; keep scans and project changes outside the connector unless the integration has a separate, explicit write workflow.
Before you start
You need:
A Rankability API key with
reporter:read.Access to Google Looker Studio and Google Apps Script.
At least one Rankability Track project with result data.
A plan for which client, projects, platforms, and date range the dashboard should display.
Create a dedicated read-only key rather than reusing a key that can run scans or edit projects. See Authentication and API scopes for key setup.
Choose the route for each chart
Prefix every request with:
https://app.rankability.com/api/agent/v1Dashboard element
Tracker route (legacy /reporter namespace)
Project selector or project table
GET /reporter/projects
Current project configuration and SPI
GET /reporter/projects/:id
Current platform result detail
GET /reporter/projects/:id/results
Time series up to 90 days
GET /reporter/projects/:id/trends
Organization or client scorecards
GET /reporter/summary
Client AI mention and citation summary
GET /reporter/brand-summary?client_id=...
Use the Tracker API endpoint reference for filters and response fields. Do not combine rows from different clients unless the dashboard is intentionally an organization-level view.
Implement the connector
Store the Rankability API key in the connector user's properties or another server-side secret store. Never place it in a report field, URL, sheet, or browser-visible script setting.
Send
Authorization: Bearer YOUR_KEYwith each request.Declare a stable Looker Studio schema. Keep identifiers and labels as dimensions; expose numeric values such as SPI, rank, mentions, citations, and coverage as metrics only when their source fields are present.
Map the selected Tracker response into rows that match that schema.
Cache identical reads in Apps Script. Include the organization, client, project, route, query parameters, and snapshot method in the cache key.
Paginate
/reporter/projectsinstead of assuming the first page contains every project.
Preserve result meaning
The default results request uses snapshot=latest_per_platform. It can combine the newest successful result for each platform after a newer run finishes only partially. Retain snapshot.method, latest_run_id, result-source run IDs, run status, and platform coverage in the connector data. A missing platform is not a zero, and a partial run is not a complete measurement.
For trends, retain each point's run_status and coverage. For SPI, use the returned score and applicable component fields rather than recomputing a different score in Looker Studio. Read Understanding SPI before presenting it to clients.
Control freshness and limits
Set dashboard freshness close to the project's tracking cadence. Reading the API does not create newer tracking data. A scan requires reporter:run, can consume credits, and should not be triggered by every dashboard refresh.
Current Rankability plans use plan-aware API limits, while existing full-platform plans currently allow 60 Agent API requests per minute per key. Integrations should read X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset instead of hard-coding a value. Respect Retry-After on 429 responses and use bounded exponential backoff. Review API credits, rate limits, and errors before scheduling refreshes.
Troubleshooting
401 unauthorized— Replace an invalid or revoked key; do not log the key while diagnosing it.403 forbidden— Addreporter:readto the connector's key.404 not_found— Confirm that the ID belongs to the authenticated organization.Blank chart after a successful request — Check the snapshot coverage, selected client, field types, and null handling before treating it as no performance.
Frequent
429responses — Reduce refresh frequency, cache repeated requests, and consolidate route calls.
Start by validating the same request with the curl examples in Getting started with the Tracker API, then implement the connector mapping.
Last updated
Was this helpful?