All posts
Google Search ConsoleBigQueryTutorial

How to Export Google Search Console Data to BigQuery

Published 19 May 2026·10 min read
Peter Claridge
Founder, KeywordHistory · Fractional CMO at Riverforge

If you've ever downloaded a Google Search Console performance report and hit that frustrating 1,000-row ceiling, you already know the problem. You're trying to understand what keywords are driving your traffic, but the export cuts off before you get anywhere near the full picture. The good news: there's a way to export Google Search Console data to BigQuery that removes all those limits entirely and gives you a permanent, queryable record of every impression and click your site generates.

Google launched the GSC bulk data export to BigQuery in February 2023. Google Search Advocate Daniel Waisberg described it as "the most powerful way to export performance data." He wasn't exaggerating. Where the GSC web interface caps exports at 1,000 rows and the API tops out at 50,000 rows per day, the BigQuery bulk export has no row limit at all.

One SEO practitioner reported pulling 160,515 distinct keywords in a single day's export via BigQuery, according to Advanced Web Ranking's analysis. That's not a rounding error versus the 1,000-row UI cap. That's a completely different class of data access.

Why the GSC BigQuery Export Changes Everything for SEO Analysis

According to Google's official documentation, the GSC web UI limits you to 1,000 rows per export. The API increases this to 25,000 rows per request with a daily maximum of 50,000 rows. Neither number comes close to the true scale of data that most websites generate, especially sites with large content libraries or international traffic. The BigQuery bulk export sits at a completely different level. There's no row cap. Data loads daily, automatically, without any manual intervention.

Maximum rows accessible per export method. Source: Google Search Console Documentation, Advanced Web Ranking.

For most sites, the volume of data flowing into BigQuery is surprisingly manageable. Advanced Web Ranking's testing found that a typical mid-size site generates roughly 0.004 GiB per day - about 1.5 GB per year. Storage costs on BigQuery for that volume are a rounding error. Even at larger scale, one practitioner's high-traffic property warehoused 11 billion rows and spent less than €100 per month in total BigQuery charges.

What You Need Before You Start

  • A Google Cloud project with billing enabled. BigQuery requires a billing account attached to the project, even if you expect to stay within the free tier. The free tier covers 1 TiB of query processing per month and 10 GiB of storage.
  • Owner or Editor access to the Google Cloud project. You'll be granting IAM permissions and enabling APIs, both of which require elevated access.
  • Owner or Full User access to the Search Console property. The bulk data export is configured inside Search Console, so you need sufficient permissions on the property you want to export.

Step 1: Prepare Your Google Cloud Project

Open the Google Cloud Console and select or create the project where your BigQuery dataset will live.

Enable the Required APIs

Navigate to APIs & Services > Enabled APIs & Services. Click "+ Enable APIs and Services" and enable both BigQuery API and BigQuery Storage API. Both are required. The export will fail silently if BigQuery Storage API is not enabled, which is one of the more confusing setup issues people encounter.

Grant Permissions to the GSC Service Account

Navigate to IAM & Admin > IAM. Click "+ Grant Access" and add this principal:

search-console-data-export@system.gserviceaccount.com

Assign it exactly two roles:

  • BigQuery Job User (at the project level)
  • BigQuery Data Editor (at the project level, or scoped to the specific dataset)

Step 2: Configure the Export in Search Console

Open Google Search Console, navigate to your property, and go to Settings > Bulk Data Export.

  • Project ID - Your Google Cloud project ID, not the project number. The project ID is a human-readable string like my-project-name-123. The project number is numeric like 123456789012. Using the project number is the most common setup mistake.
  • Dataset name - Must start with "searchconsole" (e.g. searchconsole_mysite).
  • Dataset location - Cannot be changed after creation. If you plan to JOIN your GSC data with GA4 data, both datasets need to be in the same location. A common choice is US or EU (multi-region).

Once submitted, GSC runs a preflight check and sends a confirmation email. Data begins appearing in your BigQuery dataset within 48 hours.

The export is prospective only. Data collection starts from the day you configure it. There is no retroactive backfill, and Google has confirmed there are no plans to offer one. Every day you delay is data you can never recover.

What Data You Get: The Three Tables

The export creates three tables in your BigQuery dataset, as documented in Google's schema reference.

TableGranularityBest Used ForExtra Columns
searchdata_site_impressionProperty levelKeyword analysis, CTR trends, country/device splitsNone beyond base columns
searchdata_url_impressionURL levelPage performance, cannibalization, rich result trackingis_amp_top_stories, is_job_listing, is_recipe_feature, and more
ExportLogExport run levelAuditing export health, spotting gapsagenda, namespace, epoch_version, publish_time
Source: Google Search Console Schema Documentation

The searchdata_site_impression table is what you'll use for most keyword-level analysis. Key columns include data_date, query, is_anonymized_query, country, search_type, impressions, clicks, and sum_top_position.

One important detail: anonymized queries are excluded. Google withholds queries with very low search volume to protect user privacy. This affects long-tail keyword visibility the same way it does in the GSC interface.

How to Query Your GSC Data in BigQuery

Here's a simple query to get your top 50 keywords by clicks for the past 30 days:

SELECT
  query,
  SUM(clicks)              AS total_clicks,
  SUM(impressions)         AS total_impressions,
  ROUND(SUM(clicks) / SUM(impressions) * 100, 2) AS ctr_pct,
  ROUND(SUM(sum_top_position) / SUM(impressions), 1) AS avg_position
FROM
  `your-project.searchconsole_yoursite.searchdata_site_impression`
WHERE
  data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
  AND is_anonymized_query = FALSE
GROUP BY query
ORDER BY total_clicks DESC
LIMIT 50;

Note the WHERE data_date >= ... filter. The GSC export table is partitioned by data_date, which means queries that include a date range filter only scan the relevant partitions. Queries that omit this filter scan the entire table. As your dataset grows over months and years, this difference in bytes processed, and therefore cost, becomes significant. Always filter by date.

The 7 Most Common Setup Mistakes

  • Using the project number instead of the project ID. In the Google Cloud Console, find the project ID in the project selector dropdown.
  • Choosing the wrong dataset location. Once set, this cannot be changed. Plan before you click submit.
  • Not enabling BigQuery Storage API. The BigQuery API alone is not sufficient. Exports fail silently if this is missing.
  • Not setting data expiration. Google's documentation explicitly warns: "Data will be accumulated forever for your project, unless you set an expiration time." You can set partition expiration in BigQuery table settings; the minimum is 14 days.
  • Expecting historical backfill. The export is prospective only. There is no retroactive option.
  • Modifying the table schema. Adding columns or modifying the schema causes ongoing exports to fail. The schema is managed by Google's service account.
  • Running SELECT * queries. Always name the specific columns you need to avoid scanning unnecessary data.

Is the GSC BigQuery Export Free?

The export itself is free. Google creates the dataset and loads data daily at no charge. What you pay for is BigQuery's standard pricing for storage and query processing. Storage is negligible for most sites. Query processing is where you need to be thoughtful - BigQuery charges per byte scanned on the on-demand pricing model. The free tier covers 1 TiB of query processing per month. For most teams analysing their own GSC data with properly filtered queries, you'll stay comfortably within this for a long time. See our guide on BigQuery cost controls for the full picture.

What to Do After Setup

Once the export is running and data starts appearing, connect it to a visualisation tool. Looker Studio has a native BigQuery connector and is free — though it hits API errors at scale. For SEO teams that want purpose-built analysis — brand vs. non-brand splits, AI visibility tracking, cannibalization detection, and year-over-year comparisons Keyword History connects directly to your BigQuery dataset and surfaces those insights automatically.

Conclusion

Exporting Google Search Console data to BigQuery is one of the highest-leverage analytics setups you can make for SEO. It removes the row-cap frustrations, creates a permanent historical record you control, and opens the door to SQL-based analysis that simply isn't possible in the GSC web UI. The setup takes about 30 minutes if you follow the steps cleanly:

  • Enable BigQuery API and BigQuery Storage API in your Google Cloud project
  • Grant the GSC service account BigQuery Job User and Data Editor roles
  • Configure the export in Search Console Settings using the project ID (not number)
  • Choose your dataset location carefully - it can't be changed later
  • Set data expiration to avoid unlimited accumulation
  • Start querying with date filters to keep costs low

The one thing worth repeating: the export is prospective only. Every day you wait is data you can't get back. Set it up today.

Peter Claridge

Written by

Peter Claridge

Founder, KeywordHistory · Fractional CMO at Riverforge

Led organic growth at Unmetric, eG Innovations, and StreamAlive over 13+ years. Built KeywordHistory after rebuilding the same Google Data Studio dashboards one too many times.

Connect on LinkedIn

Keep your keyword history forever.

Every day you wait, Google deletes another day of your GSC data. KeywordHistory backs up to BigQuery automatically and surfaces the insights that matter.

Start free