Skip to content

GUIDE · 8 min

SEO reporting from Search Console: four routes and how to reconcile them

Reporting tools are layers over the same Search Console data. This guide compares the four routes by what Google documents about them, explains why site and URL tables never match, shows how to weight average position and gives criteria for client-reporting platforms.

✓ Checked against Google documentation · 8 October 2026

Pick the route before you pick the tool

Most reporting tools are a layer over the same Search Console data, so the choice that matters is the route: which data reaches the report, how much history it keeps and who maintains it. Four routes cover most cases. Client-reporting platforms and SEO suites sit on top of these; we did not verify their documentation, so this guide gives criteria for them instead of claims.

Four routes and what each documents

RouteStrengthDocumented limits
Looker Studio connector (help)Free dashboards on live data; no codeOne data source uses either site or URL aggregation; URL impressions add Discover and Google News; privacy-hidden queries may collapse into one blank row
Bulk export to BigQuery (overview, setup)Daily export, kept forever unless you set an expirationNo history before you start; first export up to 48 hours later; your Cloud project pays above the free level
Search Analytics API or an MCP server (all your data)Any slice, scripted and scheduled25,000 rows per request, 50K rows a day per search type, data typically after 2–3 days
Manual export from the reportZero setupA snapshot you must repeat by hand

Why two tables never match

The site table is aggregated by property and the URL table by URL (table reference). A report that sums URL rows will not equal one that reads the property table, and Looker Studio makes you choose one per data source. Neither is wrong; they answer different questions. Use the site table for totals and queries, and the URL table for page-level work. When you need both, build two data sources and label them.

Average position must be weighted

In the exported tables position is stored as a sum. For the URL table, average position (1-based) is SUM(sum_position) ÷ SUM(impressions) + 1; the site table uses sum_top_position the same way (table reference). Illustrative example: one day has 400 impressions with sum_position 1,200, another has 100 impressions with sum_position 800. The weighted figure is (1,200 + 800) ÷ (400 + 100) + 1 = 5.0. Averaging the two daily positions (4.0 and 9.0) gives 6.5, which overstates how far down you sit. Weight by impressions whenever you roll up.

A reconciliation check before you share a report

  1. Same table: every number in the report comes from the site table or the URL table, and the label says which.
  2. Same dates: end the range three days back, because data is typically available after 2–3 days, and note that exported dates are Pacific Time.
  3. Anonymised rows: total clicks include queries Google hides, so a sum of visible query rows is lower than the total.
  4. History start: say when the BigQuery export began, because earlier data is not in it.

Criteria for client-reporting platforms and suites

  • Source: does it read Search Console directly (measured) or its own index (modelled)?
  • Depth: row caps, history length and whether site and URL data are labelled.
  • Delivery: scheduled PDF, client login, your branding.
  • Cost shape: per client, per dashboard, per data source or per seat; estimate it for your own client count.

SEOKit, which we build, also shares saved reports with signed-in people by email; judge it by the same criteria.

SEO reporting, answered

Is Looker Studio enough?

For dashboards on live data, often yes; for history beyond what the connector shows or heavy joins, add the BigQuery export.

Can I backfill BigQuery?

No. The export does not include history before you start; use the API for earlier dates.

Why do my totals differ between reports?

Check whether one uses the site table and the other the URL table.

What to read next

Read continuous analysis with an AI agent for the scheduled route and join Search Console and GA4 for sessions.

Sources checked against Google documentation

  1. Looker Studio: connect to Search Console ↗
  2. Search Console: about bulk data export ↗
  3. Search Console: start a bulk export ↗
  4. Search Console: table guidelines ↗
  5. Search Console API: getting all your data ↗
SEOKIT · GROQ

SEOKit assistant

0 / 1000

Data at Groq