Guide : GSC BigQuery Export
Comment utiliser the Recherche Google Console BigQuery export to requête unsampled daily click and impression données with aucun UI row cap (anonymized requêtes encore excluded), the difference entre the UI and the raw export, setup, cost mechanics, and the no-backfill gotcha.
Langues
Pour website properties, the GSC BigQuery bulk export schedules a daily, unsampled dump of Performances données—minus anonymized requêtes—into BigQuery, bypassing the UI row cap and 16-month retention window. It creates site-level, URL-level, and export-log tables, ne fait pas backfill, exige billing, and peut incur requête costs. Google now supports Instagram, TikTok, X, and YouTube platform properties, but its current platform documentation ne fait pas promise BigQuery prise en charge pour les; ne faites pas assume ce pipeline s’applique to social accounts.
TL;DR — The GSC BigQuery export (Google calls it the bulk données export) automatically copies votre Search Console données into a Google Cloud database appelé BigQuery, une fois a day, with aucun row limite. It’s how vous obtenir far plus of votre click and impression données que the trimmed-down view the Search Console UI montre — though anonymized (hidden) requêtes stay hidden ici aussi. Two catches to know up front: it doesn’t pull in votre old données (seulement données from the day vous switch it on, going forward), and it nécessite a Google Cloud billing account même though there’s a free usage tier.
Ce que c’est
Search Console bulk données export peut send daily performances données to BigQuery. Evidence for this claim Search Console bulk data export sends daily performance data to BigQuery in a configured Google Cloud project. Scope: Search Console bulk export; setup, permissions, quotas, and supported properties follow Google's current documentation. Confidence: high · Verified: Google: Bulk data export Google documents separate site-impression, URL-impression, and export-log tables, with schema and aggregation limites que matter during analysis. Evidence for this claim Bulk export uses site-impression, URL-impression, and export-log tables with documented schemas. Scope: Google's published Search Console export schema; aggregation and privacy handling still affect analysis. Confidence: high · Verified: Google: Bulk export tables
Ce guide covers website properties. Search Console’s newer Instagram, TikTok, X, and YouTube platform properties have Performances, Insights, and Achievements reporting, but Google’s current platform-property documentation fait pas document a BigQuery bulk-export setup or schema pour les. Treat platform properties as unsupported ici unless Google exposes the setting and documents the contract. LinkedIn n’est pas currently a pris en charge platform property.
Ouvrir the Performances report dans la recherche Google Console and essayer to export it. You’ll hit a wall fast: the UI caps la plupart exports at autour 1 000 rows, and it seulement montre vous roughly the dernier 16 months of history. Pour a petit site that’s fine. Pour a big site with tens of thousands of pages and a huge variety of search requêtes, you’re seeing a tiny slice of votre réel données.
The bulk données export fixes que. It’s a switch à l’intérieur Search Console que dit: “from now on, send my Performance data to BigQuery every day.” BigQuery is Google’s données warehouse — a placer to store big tables and run requêtes on les. Une fois the export is running, vous obtenir unsampled daily données with aucun 1 000-row cap, kept pour tant que vous vouloir — with un standing exception: anonymized requêtes (the ones Search Console hides pour privacy) encore montrer up as blank, même as in the UI. “No row limit” isn’t the même as “every query revealed.”
Pourquoi anyone bothers
You’d définir ce up si vous vouloir to:
- Analyze far plus requêtes and pages que the UI or the export button va give vous.
- Garder votre Search Console history plus long que 16 months (Search Console throws the old données away; BigQuery garde whatever vous garder).
- Join votre Search Console données with autre données — votre Google Analytics données, a explorer, votre product database — tout in un placer.
The two choses to know avant vous commencer
- It ne fait pas backfill. Ce is the unique la plupart courant surprise. Turning the export on fait pas go grab votre historical données. It starts collecting from que day forward. Si vous vouloir history, vous have to turn it on and alors wait pour it to accumulate.
- It’s “free” with an asterisk. BigQuery has a free tier, and la plupart small-to-mid sites stay à l’intérieur it. But vous encore have to attach a Google Cloud billing account, and si vous requête the données carelessly — surtout by pointing a live dashboard at the raw tables — vous pouvez run up a réel bill.
Is it worth it pour vous?
Honestly, la plupart sites don’t besoin ce. Si the Search Console UI and Looker Studio’s built-in Search Console connector montrer vous suffisant, you’re fait — skip the setup. Vous reach pour the BigQuery export quand you’re consistently hitting que 1 000-row wall, quand vous besoin plus que 16 months of history, or quand vous vouloir votre Search Console données sitting suivant to votre autre données in a warehouse. Si that’s vous, switch to the Avancé tab pour the complet setup, the cost mechanics, and the premier requêtes to run.
TL;DR — The bulk données export is a scheduled daily, unsampled dump of votre Search Console Performances données into a BigQuery dataset — aucun ~1 000-row export cap, aucun ~16-month retention wall. It lands three tables (
searchdata_site_impression,searchdata_url_impression,ExportLog). Setup: a Google Cloud project with billing enabled, the BigQuery + BigQuery Storage APIs on, two IAM roles granted to Google’s export service account, alors Settings → Bulk données export in GSC. It fait pas backfill, encore reports anonymized requêtes as vide strings, and the premier export lands dans ~48 hours. Cost is a réel free tier plus per-TB requête charges — the classic bill comes from dashboards querying raw tables live. Think of it as the third rung: UI → API → bulk export.
The ladder ci-dessous is pour website properties. It n’est pas evidence que social or video platform properties prise en charge the Search Console API or BigQuery export.
Ce que it en réalité is
Bulk export is a scheduled Search Console données pipeline into a Google Cloud project, pas an independent ranking-data source. Evidence for this claim Search Console bulk data export sends daily performance data to BigQuery in a configured Google Cloud project. Scope: Search Console bulk export; setup, permissions, quotas, and supported properties follow Google's current documentation. Confidence: high · Verified: Google: Bulk data export Requêtes doit respect the documented tables, keys, and privacy/aggregation behavior. Evidence for this claim Bulk export uses site-impression, URL-impression, and export-log tables with documented schemas. Scope: Google's published Search Console export schema; aggregation and privacy handling still affect analysis. Confidence: high · Verified: Google: Bulk export tables
Daniel Waisberg, a Search Advocate at Google, describes it plainly: “A bulk données export is a scheduled daily export of votre Search Console performances données. It inclut tout the données utilisé by Search Console to generate performances reports. Données is exported to Google BigQuery, où vous pouvez run SQL requêtes pour avancé données analysis or même export it to un autre system.” (quoted in Moteur de recherche Journal).
The point is scale. The Search Console UI caps la plupart exports autour 1 000 rows and montre a rolling ~16-month window. The Search Console API donne vous plus but is encore capped and rate-limited. The bulk export removes the row ceiling entirely and lets vous decide how long to retain. Google’s propre line from the announcement, as reproduced by Moteur de recherche Land: “The daily données row limite ne fait pas impact ce données, so vous pouvez extract plus données en utilisant ce méthode,” and the feature “pourrait be particularly utile pour grand websites with tens of thousands of pages.”
Ce que données vous obtenir: the three tables
Everything lands in a dataset whose nom toujours starts with searchconsole. Three
objects montrer up (Table guidelines and référence):
searchdata_site_impression— “Contient performances données pour votre property aggregated by property.” Key fields:data_date(“The day on qui the données in ce row was generated (Pacific Temps)”),site_url(domain properties utiliser thesc-domain:prefix),query,is_anonymized_query,country(ISO-3166-1 Alpha-3),search_type(web/image/video/news/découvrir/googleNews),device,impressions,clicks, andsum_top_position.searchdata_url_impression— “Contient performances données pour votre property aggregated by URL.” Everything above, plusurl(“The fully-qualified URL où the utilisateur eventually lands quand ils click the résultat de recherche”),is_anonymized_discover, a family ofis_[search_appearance_type]boolean flags (e.g.is_amp_top_stories,is_job_listing,is_tpf_faq) so vous pouvez slice by rich-result type, andsum_position. Ce is the granular table la plupart analysis runs on.ExportLog— “A record of ce que données was enregistré pour que day. Failed exports ne sont pas recorded ici.” Fields inclureagenda(currently seulementSEARCHDATA),namespace(qui table was written),data_date,epoch_version(“An integer, where 0 is the first time data was saved to this table” — it increments quand Google plus tard revises a day’s données), andpublish_time.
The anonymized-query caveat is the important un. Même ici, at the raw level,
anonymized requêtes are pas revealed. As Google’s field description puts it, quand
is_anonymized_query is vrai the query field “will be a zero-length string.”
Leur metrics are encore aggregated into votre totals, but they’re jamais attributable
to a spécifique term — exactly the même limitation the UI and the API have. Ce is a
big deal at scale: in my Ahrefs study of GSC’s hidden terms,
à travers 146 741 websites and roughly 9 billion clicks, 46,08% of tout clicks went to
requêtes Google doesn’t disclose — and que study utilisé the Search Console API, qui
“allows us to get all of the data—and there’s still a lot missing.” The BigQuery
export doesn’t recover any of it. If someone tells you bulk export “finally shows you
the hidden queries,” they’re wrong.
How to définir it up
The flow (Commencer a nouveau bulk données export):
- Créer or pick a Google Cloud project with billing enabled. Per Google: “Données is subject to Google Cloud storage and requête costs, but là is a free usage level.” Vous besoin billing on même to stay à l’intérieur the free tier.
- Enable the BigQuery API and the BigQuery Storage API in que project.
- Grant Google’s export service account accès. Ajouter
search-console-data-export@system.gserviceaccount.comas a principal with two IAM roles: BigQuery Job Utilisateur (bigquery.jobUser) and BigQuery Données Editor (bigquery.dataEditor). - In Search Console, go to Settings → Bulk données export. Paste the Cloud project ID (the ID, pas the project number), choisir a dataset nom, and choisir a dataset emplacement. Remarque the naming rule: “The dataset nom toujours starts with the string searchconsole, même quand vous customize it.” Si vous définir a partition-expiration policy on the export’s propre dataset, garder it at 14 days or plus long — Google documents a 14-day minimum, and going shorter is a documented échec causer. Leave the generated table schema untouched aussi; altering it is the autre documented façon to break the export (plus in Troubleshooting ci-dessous).
- Wait. Google dit the export traiter itself devrait begin dans à propos de a day of activation. “The premier export va se produire up to 48 hours après votre successful configuration in Search Console,” and que premier delivery contient seulement the day-of-export données — nothing from avant setup (voir the no-backfill section suivant). Après que it runs daily jusqu’à vous arrêter it.
Un practical expectation to définir: Search Console données lands with a two-day delay, so the la plupart recent day you’ll ever have is two days ago. Demander pour a 30-day range and vous effectively obtenir à propos de 28 days of usable données.
The no-backfill gotcha
Dire it out loud, parce que it burns personnes: activating the export ne fait pas pull in votre historical données. It starts from activation day and seulement accumulates forward. Ce is courant suffisant que Google’s propre community forum has multiple threads à propos de it — “How to backfill with historical data when Bulk data export is activated” (thread 300051568), thread 255704574, and thread 429248330. Antoine Eripret puts it bluntly in his practitioner deep-dive: “Vous pouvez’t obtenir historical données: si vous activate it today, you’ll have données from today.” The takeaway is simple — turn it on the day vous premier hear à propos de it, même si you’re pas ready to analyze anything yet, so the clock starts.
Ce que it costs, and how pas to obtenir surprised
The Google Cloud Blog post by Daniel Waisberg and Gaal Yahas sells the upside — “Si vous have a grand website, ce solution va provide plus requêtes and pages que the autre données exporting solutions” and “Search Console stores up to sixteen months of données; en utilisant BigQuery vous pouvez store as beaucoup données as it rend sense to votre organization” — but the cost mechanics are on vous.
As of ce writing, BigQuery’s free tier is roughly 10 GiB of storage free plus 1 TiB (~1 TB) of on-demand requête processing free per month; au-delà que it’s à propos de 6,25 USD per TiB processed and roughly 0,02 USD per GB stored per month (varies by region and storage class). Pricing changements, so vérifier the current numbers avant vous quote les to anyone. La plupart small-to-mid sites stay free or near-free.
The bills come from how vous requête, pas how beaucoup trafic vous have. Two choses matter:
- Cost scales with requête/keyword diversity, pas raw trafic. As Trevor Fox puts it in his complet guide: “The volume of données que is plus a factor of keyword variety que it is search volume. A site with a low search volume pour lots of keywords va generate plus données que a site with lots of search volume pour a unique keyword.”
- Don’t point a live dashboard at the raw tables. Ce is the classic horror
story. Antoine Eripret documented Looker Studio scanning 23 TB in a unique day,
autour €115, quand wired directement to the raw billion-row tables. Google’s propre
BigQuery efficiency tips post
dit the même in principle: pre-aggregate into summary tables, filter on the date
partition in a
WHEREclause, éviterSELECT *, définir budget alerts, and définir partition-expiration to auto-delete old partitions.
The fix is boring but effective: materialize votre requête results into petit permanent summary tables on a schedule, and point votre dashboards at ceux, pas at the raw export.
Querying: the rules que garder vous sane (and cheap)
From Google’s requête guidelines:
- Toujours aggregate. “Données in the tables n’est pas guaranteed to be consolidated by
date, URL, site, or quelconque combination of keys.” Translation: you’ll obtenir multiple
rows pour the même day/URL/requête, so toujours
SUM()votre metrics andGROUP BYvotre dimensions. Jamais treat a unique row as a finished number. - Filter the date partition. “A bon façon to minimize requête costs is to utiliser a OÙ clause to limite the date range in the date partitioned table.”
- Drop anonymized rows quand vous vouloir réel top requêtes. “An anonymized requête is
reported as a zero-length string in the table” — so ajouter
WHERE query != ''. - Position is zero-based. Les deux tables store position starting at 0, so average
position is
SUM(sum_top_position) / SUM(impressions) + 1(ajouter the 1).
Google ships sample requêtes pour daily web-search stats, top mobile requêtes by
country, Découvrir URLs by clicks, FAQ rich-result performances (is_tpf_faq = true),
and brand-query tracking via REGEXP_CONTAINS. Commencer from ceux.
Managing and troubleshooting the export
From Manage and monitor bulk données exports:
- Stopping isn’t instant. Settings → Bulk données export → Deactivate export. “Bulk exports will stop in the next 24 hours,” so un plus day of données may encore land après vous flip it off.
- Two échec thresholds, pas un. “Search Console retains données from failed exports pour à propos de a week.” And then: “Search Console va arrêter trying to export données pour a donné date après à propos de a week of failed attempts, and après à propos de a month of failed export attempts, Search Console va arrêter the bulk export entirely.” So a sustained problem doesn’t simplement skip days — après ~a month it shuts the whole export off, and you’d have to définir it up à nouveau.
- The schema-change trap (and the partition-expiration floor). Si vous alter the schema of an exported table, vous break the export. Google aussi exige au moins 14 days of partition expiration on the export dataset — définir it shorter and the export peut échouer. Leave ceux tables alone; construire votre propre derived tables à la place. (Autre courant causes of échec inclure exceeding votre Cloud project’s quota and revoking the service account’s accès.)
- Utiliser the Tester report. There’s a “Test report” fonctionnalité que lets vous vérifier certain correctable problèmes — project ID/credentials, permissions — sans waiting pour the suivant scheduled run. Remarque it doesn’t force an immediate re-export; vérifier back roughly 24 hours plus tard to confirmer the fix took.
- Search Console emails property owners quand export errors commencer and quand ils resolve, and Settings montre the status of the la plupart recent export attempt.
Où it sits: UI → API → bulk export
Think of three rungs on a ladder, chaque removing a limite the un ci-dessous it hit:
- UI export — ~1 000 rows, ~16 months, aucun anonymized requêtes. Fine pour la plupart.
- Search Console API — plus rows, encore capped and rate-limited, encore aucun anonymized requêtes. Bon pour ad-hoc and programmatic pulls.
- Bulk données export — aucun row cap, retention vous contrôler, daily granular données, construit pour warehousing and joins. Encore aucun anonymized requêtes. Doesn’t backfill.
And a nuance older guides obtenir incorrect: you’re pas limited to un property per Cloud
project anymore. Google plus tard allowed multiple properties into a unique project en utilisant
distinct searchconsole_-prefixed dataset noms.
Ce que à propos de Bing?
As of ce writing, there’s aucun native equivalent. Bing Webmaster Outils doesn’t offer a first-party BigQuery/bulk export — qui is exactly pourquoi a market of third-party ETL connectors (Supermetrics, Improvado, Catchr, and others) exists to déplacer Bing Webmaster Outils données into BigQuery. Si Bing had a native pipe, que market wouldn’t. Que said, a connector isn’t guaranteed to replicate GSC’s propre export schema or daily-partition behavior field-for-field — vérifier quelconque connector’s documented scope avant assuming parity. So si vous vouloir Bing données in BigQuery alongside votre GSC export, budget pour a connector and vérifier ce que it en réalité delivers. (Confirmer ce is encore current avant citing it — Bing’s propre fonctionnalité définir peut modifier.)
Pour the broader context on où ce sits, voir the Moteur de recherche Outils hub and its walkthroughs of Recherche Google Console and Bing Webmaster Outils.
AI summary
A condensed prendre on the Avancé version:
- Ce que c’est: the bulk données export — a scheduled daily, unsampled dump of Search Console Performances données into a Google Cloud BigQuery dataset. It removes the UI’s ~1 000-row export cap and its ~16-month retention window.
- Three tables land in a
searchconsole-prefixed dataset:searchdata_site_impression(property-level),searchdata_url_impression(URL-level, withis_*rich-result flags), andExportLog(a daily export record). - Setup: Google Cloud project with billing on → enable the BigQuery + BigQuery
Storage APIs → grant
search-console-data-export@system.gserviceaccount.comthe BigQuery Job Utilisateur and BigQuery Données Editor roles → Search Console Settings → Bulk données export → project ID, dataset nom, emplacement (garder partition expiration at 14+ days) → the traiter starts dans à propos de a day, premier export dans ~48 hrs. - Aucun backfill. It starts from activation day forward — nothing historical is pulled in. Ce is the #1 point of confusion.
- Encore aucun anonymized requêtes. Ils land as vide strings in
query; metrics are aggregated but jamais attributable. In Patrick’s one-month Ahrefs study of 146 741 sites and nearly 9 billion clicks, ~46% of clicks went to undisclosed requêtes — bulk export doesn’t recover les. - Cost: a réel free tier (roughly 10 GiB storage + 1 TiB requête/month) but it nécessite
a billing account, and cost scales with requête/keyword diversity, pas trafic. The
classic bill is a dashboard querying raw tables live (un documented cas: 23 TB /
~€115 in a day). Fix: materialize summary tables, filter the date partition, éviter
SELECT *. - Querying: toujours
SUM()/GROUP BY(rows aren’t pre-consolidated), filterquery != ''to drop anonymized rows, and position is zero-based (ajouter 1). - Managing: deactivation takes up to 24 hrs; failed exports retry pour ~a week per date, and ~a month of échecs shuts the whole export off; altering an exported table’s schema or setting partition expiration sous 14 days breaks it.
- Bing has aucun native equivalent as of ce writing — third-party connectors fill the gap, though ils don’t necessarily match the GSC export’s schema exactly.
- The ladder: UI → API → bulk export, chaque removing a limite.
Documentation officielle
Primary-source documentation, mostly from Recherche Google Console Aider and the Google Cloud Blog.
Google — the fonctionnalité
- À propos de bulk données export of Search Console données to BigQuery — the overview and what’s inclus/excluded.
- Commencer a nouveau bulk données export — the setup flow: project, APIs, service-account roles, dataset settings, 48-hour delay.
- Table guidelines and référence — the complet schema pour
searchdata_site_impression,searchdata_url_impression, andExportLog. - Requête guidelines and sample requêtes — how to aggregate, minimize cost, filter anonymized rows, and ready-made sample requêtes.
- Manage and monitor bulk données exports — deactivation, error handling, retry/retention thresholds, and the Tester report.
Google — announcement & framing
- Bulk données export: a nouveau and powerful façon to accès votre Search Console données (Search Central Blog, Feb 2023) — the original announcement.
- Analyze Recherche Google données with BigQuery (Google Cloud Blog, Daniel Waisberg & Gaal Yahas) — the avancé/ML framing.
- BigQuery efficiency tips pour Search Console bulk données exports (Search Central Blog, June 2023) — cost and query-efficiency guidance.
Pricing
- BigQuery pricing — the current free tier and per-TB/per-GB rates (vérifier avant quoting; ces modifier).
Quotes from the source
On-the-record statements from Google. Où une page renders via JavaScript and resists automated verification, the quote is sourced via verbatim secondary coverage and flagged ci-dessous.
Google — Ce que c’est
- “Schedule a daily export of your Search Console performance data to BigQuery, where you can run complex queries over your data or export it to an external storage service.” — Recherche Google Console Aider. Jump to quote
- “A bulk data export is a scheduled daily export of your Search Console performance data. It includes all the data used by Search Console to generate performance reports. Data is exported to Google BigQuery, where you can run SQL queries for advanced data analysis or even export it to another system.” — Daniel Waisberg, Search Advocate, Google. Jump to quote
Google — the schema
- “Contains performance data for your property aggregated by property.” (on
searchdata_site_impression) and “Contains performance data for your property aggregated by URL.” (onsearchdata_url_impression). Jump to quote - “The user query. When is_anonymized_query is true, this will be a zero-length string.” Jump to quote
Google — querying
- “Data in the tables is not guaranteed to be consolidated by date, URL, site, or any combination of keys.” Jump to quote
- “A good way to minimize query costs is to use a WHERE clause to limit the date range in the date partitioned table.” Jump to quote
Google — managing the export
- “Search Console retains data from failed exports for about a week.” and “Search Console will stop trying to export data for a given date after about a week of failed attempts, and after about a month of failed export attempts, Search Console will stop the bulk export entirely.” Jump to quote
Google Cloud Blog — Daniel Waisberg & Gaal Yahas
- “Store data as long as you want. Search Console stores up to sixteen months of data; using BigQuery you can store as much data as it makes sense to your organization.” Jump to quote
Bulk export vs. API vs. UI vs. the Looker Studio connector — qui devrait I utiliser?
Commencer from ce que limite you’re en réalité hitting, pas from ce que sounds la plupart powerful. La plupart personnes who définir up the BigQuery export didn’t besoin to.
Q1. Are vous hitting a réel limite in the Search Console UI? (The ~1 000-row export cap, or the ~16-month history wall, or vous devez join GSC with autre données.)
- Aucun → arrêter. The UI (and Looker Studio’s native Search Console connector pour dashboards) is suffisant. Don’t prendre on a warehouse vous don’t besoin.
- Yes → continuer.
Q2. Do vous besoin a standing, daily warehouse of complet données — or simplement a bigger one-off / programmatic pull?
- One-off or programmatic pull (a script, an integration, an occasional deep export) → utiliser the Search Console API. Plus que the UI, aucun BigQuery to run, but encore capped/rate-limited and encore aucun anonymized requêtes.
- Standing daily pipe you’ll warehouse and join with autre données → continuer.
Q3. Are vous comfortable with a Google Cloud project, an active billing account, and writing SQL (or having someone who is)?
- Aucun → reconsider. An unmanaged export plus a dashboard on raw tables is how the surprise bills se produire. Soit obtenir aider or stay on the API/Looker Studio connector.
- Yes → définir up the bulk données export. Turn it on now (remember: aucun backfill), and plan to materialize summary tables plutôt que querying raw ones live.
Q4. Do vous specifically besoin the anonymized/hidden requêtes broken out?
- Yes → none of ces deliver que. Bulk export, API, and UI tout suppress anonymized requêtes at the requête level. Adjust the goal; the données doesn’t exist to be had from Google.
The one-line version: pas hitting a limite → UI/Looker Studio; ad-hoc or coded pulls → API; standing warehouse at scale → bulk export; hidden requêtes → nobody peut give vous ceux.
Bulk données export setup checklist
Fonctionner top to bottom; chaque step gates the suivant.
- Turned the export on today même si you’re pas ready to analyze yet (aucun backfill — the clock starts at activation).
- A Google Cloud project with billing enabled exists (billing is requis même pour the free tier).
- BigQuery API enabled in que project.
- BigQuery Storage API enabled in que project.
-
search-console-data-export@system.gserviceaccount.comajouté as a principal with BigQuery Job Utilisateur (bigquery.jobUser). - Même service account granted BigQuery Données Editor (
bigquery.dataEditor). - In Search Console → Settings → Bulk données export, pasted the Cloud project ID (the ID, pas the number).
- Chose a dataset nom (it va commencer with
searchconsole) and a dataset emplacement. - Si setting partition expiration on the export dataset, kept it at 14 days or plus long — shorter breaks the export.
- Left the generated table schema unchanged (construire derived tables à la place).
- Waited up to 48 hours pour the premier export (the traiter itself devrait commencer
dans à propos de a day), alors confirmed données landed (vérifier
ExportLogand the twosearchdata_*tables). - Définir a budget alert in Google Cloud so a runaway requête can’t surprise vous.
- Définir partition-expiration on votre derived tables si vous don’t besoin unlimited retention.
- Construit dashboards on materialized summary tables, pas the raw export tables.
Mistakes and myths to éviter
“Turning it on backfills my old data.” Aucun. The export starts from activation day and seulement accumulates forward — nothing prior is pulled in. It’s Google’s propre community forum’s most-asked question à propos de ce fonctionnalité. Turn it on the moment vous hear à propos de it so the history starts building.
“BigQuery export finally shows me the hidden/anonymized queries.”
Aucun. Anonymized requêtes land as vide strings in query; leur clicks and impressions
are folded into totals but jamais attributed to a term — même as the UI and API. In
my Ahrefs study, ~46% of clicks
went to requêtes Google won’t disclose, and même the API — qui “permet us to obtenir tout
of the données” — couldn’t surface les. Bulk export changements nothing ici.
“It’s completely free.” Partly vrai. There’s a genuine free tier, but it exige an active billing account, and inefficient querying peut bill vous. “Free” seulement holds si vous requête efficiently.
“More traffic means a bigger BigQuery bill.” Pas really — cost scales plus with requête/keyword diversity que raw click volume. A modest-traffic site with huge long-tail variety peut generate plus données que a high-traffic site with a handful of concentrated requêtes.
Pointing a live dashboard at the raw tables.
The unique la plupart expensive mistake. Un documented cas saw Looker Studio scan 23 TB
in a day (~€115) wired directement to raw billion-row tables. Fix: materialize summary
tables on a schedule and point dashboards at ceux; filter the date partition in a
WHERE clause; jamais SELECT *.
Editing the schema of an exported table, or setting a too-short partition expiration.
Altering searchdata_site_impression, searchdata_url_impression, or ExportLog
breaks the export. So fait setting the export dataset’s partition expiration ci-dessous
Google’s 14-day minimum. Construire votre propre derived tables à la place, leave the originals
untouched, and give quelconque expiration policy on the raw dataset 14+ days of headroom.
“This replaces the Search Console API.” Différent outils pour différent jobs. The API is pour ad-hoc and programmatic pulls; the bulk export is a standing daily pipe pour warehousing and joins.
Assuming vous pouvez seulement export un property per project.
Outdated. Google plus tard allowed multiple properties in un Cloud project via distinct
searchconsole_-prefixed dataset noms.
A framework pour designing the export avant it designs votre bill
1. Commencer with the question, pas the warehouse. Utiliser the UI pour a rapide réponse, the Search Analytics API pour bounded programmatic pulls, and bulk export seulement quand vous besoin a standing daily history, joins, or plus rows que the autre rungs provide.
2. Respect the table grain. searchdata_site_impression réponses property-level
questions; searchdata_url_impression adds l’URL dimension. Rows ne sont pas promised
to be pre-consolidated, so every analysis devrait deliberately choisir dimensions and
aggregate clicks, impressions, and position fields.
3. Faire partition filters mandatory. Exiger a data_date range in every requête.
Cost follows bytes scanned, and an unbounded dashboard contre raw tables peut scan the
même history repeatedly.
4. Separate raw, modeled, and presentation layers. Garder Google’s export tables unchanged, construire scheduled summary tables pour recurring questions, and point Looker Studio or un autre dashboard at ceux summaries. Schema edits to the export tables peut break the delivery pipeline.
5. Operate the pipeline comme production données. Monitor ExportLog, requête bytes,
scheduled-job échecs, and freshness. The export has aucun backfill, so manquant days are
an operational incident, pas something activation peut repair plus tard.
Courant GSC bulk-export problems
The tester report fails during setup
Symptom: Search Console rejects the project or dataset avant activation. Probable causer: billing or the requis BigQuery APIs ne sont pas enabled, the project ID is incorrect, or the Search Console export service account lacks BigQuery Job Utilisateur and BigQuery Données Editor. Fix: correct ceux prerequisites, rerun the Tester report, and activate seulement après it succeeds.
Aucun tables or nouveau rows apparaître
Symptom: the dataset exists, but attendu export données is absent. Probable causer:
the premier delivery is encore pending, the dataset nom/emplacement is incorrect, the export
was deactivated, or échecs are accumulating. Fix: autoriser the initial delivery
window, alors inspect ExportLog and Search Console’s bulk-export status. Correct the
pipeline plutôt que recreating the dataset, parce que activation ne fait pas backfill
précédent dates.
Requête totals regarder duplicated or inflated
Symptom: clicks or impressions exceed the Search Console total pour the même
scope. Probable causer: raw export rows were treated as déjà consolidated, or
site- and URL-grain données were mixed. Fix: choisir un table grain, filter un
search_type, groupe by the intended dimensions, and SUM() the metric fields avant
comparing totals.
Average position is off by un
Symptom: a computed position is consistently un lower que the UI expectation. Probable causer: the export’s position valeurs are zero-based. Fix: aggregate the position numerator with the matching impressions, alors convert to the familiar one-based afficher seulement at the presentation couche.
A dashboard suddenly becomes expensive
Symptom: bytes processed and requête charges jump même though trafic did pas.
Probable causer: the dashboard is scanning raw URL-level tables sans a partition
filter. Fix: inspect bytes avant running, ajouter a bounded data_date predicate,
materialize the nécessaire daily summary, and point the dashboard at que plus petit table.
Prove the bulk export fonctionne après setup or a pipeline modifier
Confirmer Search Console peut écrire to the project
Tester to run — Run Settings → Bulk données export → Tester report après modification the project, APIs, or IAM roles. Attendu result — Search Console reports que the destination is valid. Échec interpretation — the project/API configuration or the export service account’s roles are encore incorrect. Monitoring window — Immediate. Rollback trigger — Ne faites pas activate or switch the production export destination pendant que the tester fails.
Confirmer a complet daily delivery
Tester to run — Vérifier ExportLog pour the newest attendu data_date, alors requête
les deux impression tables pour que même partition. Attendu result — the log records
the delivery and le site/URL tables contain rows pour the date quand the property had
activity. Échec interpretation — the export is late or failed; an vide result
n’est pas historical backfill. Monitoring window — Autoriser the documented données lag and
the initial export window avant declaring échec. Rollback trigger — Pause quelconque
downstream report release si its newest date is manquant or seulement un requis table
arrived.
Confirmer a modeled requête reconciles
Tester to run — Run the nouveau summary requête pour a fixed date and search type, alors comparer its total clicks and impressions with a direct aggregate of the même raw partition. Attendu result — totals match at the même grain and filters. Échec interpretation — the model is dropping rows, double-counting dimensions, or mixing site and URL grain. Monitoring window — Immediate après the requête finishes. Rollback trigger — Garder dashboards on the prior summary jusqu’à the nouveau model reconciles.
Confirmer the cost guardrail
Tester to run — Preview the bytes processed pour the production requête with its
intended data_date filter. Attendu result — the scan is bounded to la requêteed
partitions and is consistent with the team’s established baseline pour que report.
Échec interpretation — partition pruning is manquant or a join expanded the
scan. Monitoring window — Avant every scheduled-query or dashboard modifier.
Rollback trigger — Ne faites pas deploy a version whose estimated scan materially exceeds
the approved baseline sans an explained data-volume modifier.
Starter requêtes
Ces follow Google’s propre rules: aggregate everything (rows aren’t pre-consolidated),
filter the date partition to contrôler cost, and remember position is zero-based.
Replace yourproject.searchconsole with votre dataset.
Top réel requêtes (anonymized rows supprimé), dernier 28 days
SELECT
query,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions,
SAFE_DIVIDE(SUM(clicks), SUM(impressions)) AS ctr,
SUM(sum_top_position) / SUM(impressions) + 1 AS avg_position
FROM `yourproject.searchconsole.searchdata_site_impression`
WHERE data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
AND DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY) -- 2-day data lag
AND query != '' -- drop anonymized rows
GROUP BY query
ORDER BY clicks DESC
LIMIT 100;Top landing pages by clicks (URL-level table)
SELECT
url,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions
FROM `yourproject.searchconsole.searchdata_url_impression`
WHERE data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
AND DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
GROUP BY url
ORDER BY clicks DESC
LIMIT 100;FAQ rich-result performances (a rich-result flag on l’URL table)
SELECT
url,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions
FROM `yourproject.searchconsole.searchdata_url_impression`
WHERE data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
AND DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
AND is_tpf_faq = TRUE
GROUP BY url
ORDER BY impressions DESC;Materialize a daily summary so dashboards jamais touch raw tables
CREATE OR REPLACE TABLE `yourproject.searchconsole_derived.daily_query_summary`
PARTITION BY data_date AS
SELECT
data_date,
query,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions
FROM `yourproject.searchconsole.searchdata_site_impression`
WHERE query != ''
GROUP BY data_date, query;A cost-control habit: vérifier how nombreux bytes a requête va scan avant vous run it,
en utilisant the dry-run flag in the bq CLI — a free façon to catch an accidental full-table
scan.
bq query --use_legacy_sql=false --dry_run \
'SELECT SUM(clicks) FROM `yourproject.searchconsole.searchdata_url_impression`
WHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)'
# Prints the estimated bytes to be processed without running (or billing for) the query. GSC BigQuery export — cheat sheet
Setup En un coup d’œil
| Step | Ce que | Detail |
|---|---|---|
| 1 | Cloud project | Billing enabled (requis même pour free tier) |
| 2 | APIs | Enable BigQuery API + BigQuery Storage API |
| 3 | Service account | search-console-data-export@system.gserviceaccount.com |
| 4 | IAM roles | BigQuery Job Utilisateur + BigQuery Données Editor |
| 5 | Search Console | Settings → Bulk données export → project ID, dataset nom, emplacement; garder quelconque partition expiration 14+ days |
| 6 | Wait | Traiter starts dans ~a day; premier export dans ~48 hours |
The three tables
| Table | Grain | Notable fields |
|---|---|---|
searchdata_site_impression | Property | query, is_anonymized_query, country, device, search_type, sum_top_position |
searchdata_url_impression | URL | Tout of the ci-dessus + url, is_* rich-result flags, sum_position |
ExportLog | Daily record | namespace, data_date, epoch_version, publish_time |
Requête rules
- Toujours
SUM()+GROUP BY— rows aren’t pre-consolidated. WHERE query != ''to drop anonymized rows.- Filter
data_date(the partition) to cut cost. avg_position = SUM(sum_top_position)/SUM(impressions) + 1(zero-based, ajouter 1).- Jamais
SELECT *.
Fast facts
- Aucun backfill — données starts at activation, forward seulement.
- Anonymized requêtes stay hidden (vide
querystring) — même as UI/API. - Two-day lag on the la plupart recent données.
- Deactivation takes up to 24 hours (un plus day may land).
- Échec thresholds: ~1 week retry per date → ~1 month of échecs arrête the entier export.
- Partition expiration floor: 14 days minimum on the export dataset; shorter breaks it.
- Dataset nom toujours starts with
searchconsole. - Multiple properties per project: utiliser distinct
searchconsole_-prefixed dataset noms. - Free tier (vérifier current): ~10 GiB storage + ~1 TiB requête/month, alors ~6,25 USD/TiB.
- Bing: aucun native equivalent — third-party connector requis.
Prompts pour reviewing GSC BigQuery fonctionner
Audit a requête pour correctness and cost
Paste the table schemas, the SQL, its objectif, and the date/search-type scope. Demander the model to retourner corrected SQL and a short explanation, alors vérifier the output in BigQuery avant scheduling it.
You are reviewing a Google Search Console bulk-export query in BigQuery.
Goal: [the question this query should answer]
Table grain and schemas: [paste the relevant site or URL table fields]
SQL: [paste the query]
Required date range and search_type: [paste them]
Check for: a missing data_date partition filter; failure to aggregate raw rows;
site-grain and URL-grain mixing; incorrect handling of zero-based position;
anonymized-query handling; joins that duplicate metrics; and unnecessary bytes
scanned. Return: (1) each issue, (2) corrected Standard SQL, (3) a reconciliation
query, and (4) assumptions that require human verification. Do not invent fields.Design a safe reporting couche
Paste the questions the dashboard doit réponse and the réel schema. Expect a proposed summary-table grain and validation plan, pas a fabricated ready-to-run deployment.
Design a modeled reporting layer for this GSC BigQuery bulk export.
Business questions: [paste the questions]
Available tables and schemas: [paste them]
Refresh cadence: [daily/weekly]
Required dimensions: [page, query, country, device, search type, etc.]
Propose: the smallest useful summary-table grain; partitioning and clustering;
a scheduled-query sequence; freshness and reconciliation checks; and which dashboard
questions should stay in the UI or API instead. Preserve raw export tables unchanged.
Flag any requirement the supplied schema cannot support, especially requests for
disclosed anonymized queries. Do not invent benchmarks, fields, or backfill. Outils autour the export
- Google BigQuery — où the données lands; run SQL, schedule requêtes, and construire BigQuery ML models on it.
- BigQuery cost contrôle — Google Cloud budget alerts, per-query byte limites,
and the
bq --dry_runflag to estimate scan size avant running. - Looker Studio — pour dashboards, but construire les on materialized summary tables, pas the raw export. (Looker Studio aussi has a native Search Console connector que nécessite aucun BigQuery at tout — souvent suffisant on its propre.)
- Recherche Google Console — the source; the UI export and the Performances report are the baseline the bulk export extends.
- Search Console API — the middle rung quand vous besoin plus que the UI but pas a standing warehouse.
- Third-party ETL connectors (Supermetrics, Improvado, Catchr, and others) — how you’d obtenir Bing Webmaster Outils données into BigQuery, since Bing has aucun native export.
Ressources utiles
My connexe writing
- Almost Half of GSC Clicks Go to Anonymous Requêtes — my Ahrefs study (146 741 sites, ~9B clicks) showing 46,08% of clicks go to requêtes Google won’t disclose. Directement relevant: the BigQuery export doesn’t recover quelconque of les soit.
- The Beginner’s Guide to SEO technique — où Search Console and data-analysis fonctionner fit in the bigger picture.
My speaking / posts
- On getting plus out of GSC données — a walkthrough of squeezing plus from Search Console’s données (via Ahrefs’ propre GSC fonctionnalités), partie of the même “there’s more here than the UI shows” throughline as the BigQuery export.
From autour the industry
- Recherche Google Console adds daily bulk données exports to BigQuery (Moteur de recherche Land, Barry Schwartz) — the announcement coverage, with Google’s original wording quoted verbatim.
- Google Explique Comment utiliser Search Console Bulk Données Export (Moteur de recherche Journal, Matt G. Southern) — Daniel Waisberg’s plain-English description of the fonctionnalité.
- Obtenir Commencé With GSC Requêtes In BigQuery (Moteur de recherche Journal) — a practical requête starter.
- Recherche Google Console to BigQuery: The Complet Guide (Trevor Fox) — the origin of the “keyword variety, not search volume” cost framing.
- Voir Ya, Sampling! Obtenir Plus Complet GSC Données With BigQuery (Avancé Web Ranking, Sam Torres) — setup and cost-control basics.
- How to Requête Recherche Google Console Données in BigQuery (Analytics Mania, Julius Fedorovicius) — thorough walkthrough notamment the two-day données lag.
- Comment utiliser votre GSC données in BigQuery comme a pro (Antoine Eripret) — the technical deep-dive, notamment the 23 TB / ~€115 cost horror story and the no-backfill reality.
Stats worth citing
- ~46% of GSC clicks go to undisclosed requêtes. From my Ahrefs study of 146 741 websites and roughly 9 billion clicks: 46,08% of clicks went to requêtes Google anonymizes — a limitation the BigQuery export shares with the UI and API.
- A live dashboard on raw tables scanned 23 TB in un day (~€115). Antoine Eripret’s documented cas pour pourquoi vous materialize summary tables au lieu de querying the raw export directement. Source
- Two-day données lag. “Recherche Google Console données is disponible with a two-day delay, so the la plupart recent données disponible va toujours be from two days prior” — so a 30-day range renvoie ~28 days of usable données. Source
- Free tier (vérifier — pricing changements): roughly 10 GiB storage + 1 TiB of requête processing per month free, alors à propos de 6,25 USD/TiB processed. Source
Testez vos connaissances: GSC BigQuery Export
Five rapide questions on the bulk données export. Pick an réponse pour chaque, alors vérifier.
Journal des modifications
Mis à jour le 30 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.