What you need#
- A Rankfinity project with data: rank checks, a map scan, an AI Visibility run, a site audit and a saved backlink profile. A dataset with no data yet says so in its
statuscolumn. - A Google account for Google Sheets and Looker Studio. Both are free.
- Edit access to the project in Rankfinity, so you can create feeds.
Looker Studio has no built-in source that reads a CSV from a web address. The path below uses Google Sheets as the bridge: Sheets reads each feed with IMPORTDATA, and Looker Studio reads the sheet. Nothing here spends credits.
Step 1 · Create one feed per dataset#
- In Rankfinity open My account › API & feeds. Choose the project at the top of the Feeds card.
- For each dataset, pick it in the list, give it a name such as
looker rankings, and click Create feed. Use No expiry, or a long expiry such as 365 days. - Copy the link now. It is shown once. Repeat until you have one link per dataset you want.
| Dataset | What it holds | Used for |
|---|---|---|
rankings-history | every rank check, per keyword, location and device | position over time |
map-arp-history | every map scan, per keyword: ARP, average rank, share of points where the business shows | map grid over time |
aiv-history | every finished AI Visibility run, per AI app, plus an overall row | visibility over time |
audit-history | every finished site audit: score and failed checks | site health over time |
backlinks-history | every saved backlink profile: referring domains, backlinks, dofollow, rank | link growth |
The older datasets (rankings, aiv, audit-issues, backlinks) hold only the latest state. Use them for a "now" table.
Step 2 · Put each feed in a sheet tab#
- Create a new Google Sheet. Name the first tab after the dataset, for example
rankings-history. - In cell A1 paste the formula with your link:
=IMPORTDATA("https://app.rankfinity.app/api/feeds/v1/rf_feed_....csv")- Add a new tab for each further dataset and repeat. Keep one dataset per tab.
- Wait a few seconds. Row 1 is the column names. Check the
statuscolumn:okmeans a real row. Any other text explains why there is no data yet.
Sheets refreshes IMPORTDATA about once an hour. To refresh now, retype the formula or press Ctrl+R (Cmd+R on a Mac).
Limit. Google Sheets reads at most about 50,000 cells per IMPORTDATA. Rankfinity sends the newest rows first, up to 5,000 rows per feed, so a cut keeps the most recent data. If a tab stops short, the sheet has reached Google's limit for one import.
Step 3 · Connect Looker Studio to the sheet#
- Open lookerstudio.google.com and choose Create › Data source.
- Pick the Google Sheets connector. Choose your sheet and the tab, for example
rankings-history. - Keep Use first row as headers on. Click Connect.
- Repeat from step 2 for each tab, so you end with one data source per dataset.
Step 4 · Check the field types#
Looker Studio guesses the type of each column. Check these in the data source editor:
dateshould be Date & time. If Looker shows it as Text, change the field type. If it still does not parse, use a calculated field that converts the text. The dates are ISO 8601 in UTC, for example2026-10-17T09:30:00Z.position,arp,visibility_pct,score,referring_domainsand the other numbers should be Number.measuredshould be Boolean.
Do not change a number to a text field. An empty cell means the value was not measured. It is never a zero, so Looker will show a gap, which is the right picture.
Step 5 · Build the dashboard#
Download the sample spec and use it as the list of pages, charts and fields to build:
Download the sample dashboard spec (JSON)
It has five sources, one per dataset, and five pages: Rankings, Map grid, AI Visibility, Site health and Backlinks. Each chart names its source, its date dimension and its metric. The file holds no data.
Add a filter to every chart: status = ok. This hides the explanation rows.
Useful settings:
- Rankings. Average position over time, split by device. Lower is better. Unmeasured checks are blank.
- Map grid. ARP over time, split by keyword. Lower is better. ARP counts a point where the business does not show as 21, the same as the app.
- AI Visibility. Visibility per AI app over time. Exclude the
allrows from this chart, and use them for one overall scorecard. - Site health. Audit score over time, and failed checks over time.
- Backlinks. Referring domains and backlinks over time.
Keep it fresh#
Rankfinity updates the feeds after each check, audit or scan. Looker Studio reads the sheet on its own refresh schedule, and a sheet only picks up new data when IMPORTDATA refreshes. For a daily picture, a daily sheet refresh is enough.
Something does not look right#
- The sheet shows one row that says a sentence. That dataset has no data yet, for example "no site audit has finished yet". Run the check in Rankfinity, then wait for the next refresh.
- The sheet shows
#REF!or an error. Check that the link is complete and that the feed is still active. A revoked or expired feed returns the same404as a wrong link. - Looker shows a different number than the app. The app shows the newest result on each screen. A history feed holds every check, so compare the same date and the same keyword.
- You want a CSV file instead. Open a feed link in a browser and save the page as a
.csvfile, then use Looker Studio's File upload source. This is a manual refresh, so the Sheets route above is better for a live dashboard.
Safety#
A feed link is a read-only key to one dataset of one project. Do not paste it into a shared document. Revoke it under My account › API & feeds when a person leaves, and create a new one. See Feeds for Google Sheets and Looker Studio for the full rules.