
At a glance
To get ClickFlare data into Looker Studio, Tableau, Power BI or BigQuery, call the ClickFlare REST API report endpoint with your API key and load the JSON rows into the tool. There is no native connector. The numbers match ClickFlare’s own reports, and data only moves from ClickFlare into the BI tool.How the data flows
datastudio.google.com, and lookerstudio.google.com redirects to it. Existing reports keep working. This guide uses both names.What you’ll need
- A ClickFlare API key: Settings → API Keys. See API overview.
- An idea of the report you want: which breakdowns (campaign, offer, country, date…) and which numbers (visits, conversions, revenue, cost…).
- For Tableau and BigQuery: somewhere to run a scheduled script, such as a server, a cloud function or an existing job scheduler.
The report endpoint
All four routes send the same request:Request options
Required fields:Breakdowns you can group by
The most usefulgroupBy values for BI work:
metrics, for example campaignID in groupBy and both campaignID and campaignName in metrics. The same works for offerName, landingName, trafficSourceName and affiliateNetworkName.
Columns that come back
The response has anitems array with one object per row, and a totals object. An example, shortened:
metrics, under the same names. Common numeric columns: visits, uniqueVisits, clicks, uniqueClicks, conversions, revenue, cost, profit, roi, roas, ctr, cvr, epc, epv, cpa, cpv. Custom conversions come back as customConversion1…customConversion20 and their revenue as customRevenue1…customRevenue20. Custom metric columns start with cm_.
Paging
Start atpage: 1 and keep going while a page comes back full. When a page returns fewer rows than pageSize, you have everything. One request can cover at most 1,000 pages of 50,000 rows. If you need more, split the date range.
Scheduling and re-pulling
ClickFlare answers each request with the data as it is at that moment. Two things change after the fact:- Conversions arrive late. A postback can come in days after the click. With
conversionTimestamp: "visit", that conversion lands on the day of the visit, so past days keep changing. - Cost can update. Cost integrations and manual cost uploads can change earlier days.
timezone, currency and conversionTimestamp the same on every run, or days won’t line up.
Looker Studio (Data Studio)
Data Studio reads Google Sheets natively, and Apps Script can call any HTTP API withUrlFetchApp. There are two ways to combine them.
Option A: Google Sheet filled by Apps Script
The simplest route. A script pulls the report into a sheet on a schedule, and Data Studio reads the sheet.Create the sheet and the script
ClickFlare. Open Extensions → Apps Script.Store the API key
CLICKFLARE_API_KEY with your key. The key then stays out of the sheet.Paste the script
Schedule it
pullClickFlare once by hand and approve the permissions. Then add a time-driven trigger for it, for example every hour or once a day.Connect Data Studio
ClickFlare tab. Set date as a date field and the money columns as currency.Option B: a community connector
A community connector is an Apps Script project that Data Studio calls directly when a report loads. You write four functions:getAuthType(), getConfig(), getSchema() and getData(). In getData(), send the same POST as above with UrlFetchApp, using the date range Data Studio passes in request.dateRange, and map the items to your schema. Google’s Build a Community Connector guide walks through the full structure.
Pick a connector over a Sheet when you want live date ranges in the report, or want to share the connector with other people. Keep the API key in script properties, never in the connector config that viewers fill in.
Power BI
Power Query’sWeb.Contents sends a POST when you give it a Content option. Microsoft notes that POST requests can only be made with Anonymous access, so the ClickFlare key goes in the request headers, not in Power BI’s credentials.
Add the API key as a parameter
ApiKey with your ClickFlare key.Create a blank query
Choose Anonymous access
public-api.clickflare.io, choose Anonymous.Set types and load
date to Date and the money columns to Decimal number, then Close & Apply. Refresh the dataset to pull the latest numbers.Web.Contentstimes out after 100 seconds by default. The query above raises it to 5 minutes withTimeout. For bigger reports, use a smaller date range or more pages.- For more than one page, turn the query into a function of
pageand combine the results withList.Generate, stopping when a page comes back short. - To make the dates dynamic, build
startDateandendDatefromDateTime.LocalNow()withDateTime.ToText. - Scheduled refresh in the Power BI service for this query hasn’t been tested here. Publish it and run one refresh in the service before you rely on it. If it fails, load the data through BigQuery or a file instead: Power BI reads both.
Tableau
Tableau has no direct route for this endpoint today:- Web Data Connectors 2.x and 3.0 are deprecated, and Tableau says they’ll be removed with the Tableau 26.3 release. Don’t start a new one.
- Tableau’s replacement, the REST API Connector, supports JSON and CSV over HTTP GET. ClickFlare’s report endpoint is a POST with a JSON body, so it doesn’t fit.
Write the pull script
Schedule it
Connect Tableau
Google BigQuery
BigQuery loads JSON from Cloud Storage only as newline-delimited JSON (ndJSON): one object per line. ClickFlare’sitems are already one object per row, so the script writes each item on its own line.
Prepare Google Cloud
Write ndJSON
pull() function from the Tableau section and write one line per row:gs://your-bucket/clickflare/2026-10-31.ndjson.Load it
bq load and NEWLINE_DELIMITED_JSON:--replace overwrites the table with the re-pulled window. For a long history, write each day to its own partition instead of replacing the whole table, or load into a staging table and MERGE on date and campaignID. Once the table exists, supply a fixed schema instead of --autodetect so column types don’t drift.Schedule it
Verify the export
Compare one day
Check the conversion date setting
conversionTimestamp against Settings → General Settings → Conversion registration time reporting in your account. Use the same choice in the request: visit for Visit Timestamp, postback for Postback Timestamp.Check paging
Troubleshooting
The request is rejected
The request is rejected
- A field in
groupByis missing frommetrics, or a breakdown appears twice. sortBynames a column that isn’t inmetrics.- Dates aren’t in
YYYY-MM-DD HH:mm:ssformat. - A required field is missing:
startDate,endDate,timezone,groupBy,metrics,sortBy,orderType,page,pageSize,includeAll.
Numbers don't match ClickFlare
Numbers don't match ClickFlare
timezone, currency and conversionTimestamp against the report you compare with. Then check you rebuilt ratios from sums instead of summing ROI or CVR.The request times out
The request times out
pageSize, and raise your client’s timeout. Breakdowns such as clickID or visitID return one row per click or visit.Yesterday's conversions keep changing
Yesterday's conversions keep changing
conversionTimestamp: "visit". Re-pull and overwrite the last several days on every run.FAQ
How do I connect ClickFlare to Looker Studio?
How do I connect ClickFlare to Looker Studio?
How do I connect ClickFlare to Power BI?
How do I connect ClickFlare to Power BI?
Web.Contents, sending the JSON body as Content and your key in the api-key header. Dataset refresh then pulls new data. See Power BI.How do I get ClickFlare data into Tableau or BigQuery?
How do I get ClickFlare data into Tableau or BigQuery?
Is there a native connector for any of these tools?
Is there a native connector for any of these tools?
Can I export raw clicks or conversions?
Can I export raw clicks or conversions?
clickID or visitID to get one row per click or visit. These reports get large fast, so page through them and keep the date range short.Can I limit the export to one client's workspace?
Can I limit the export to one client's workspace?
workspace_ids with that workspace’s ID. The public workspace is always included.Can I push data from ClickFlare instead of pulling it?
Can I push data from ClickFlare instead of pulling it?
Can an AI assistant query the same data?
Can an AI assistant query the same data?