What is the Bulk Data Export in Google Search Console?
Performance Reports & Data
Bulk data export is a Search Console setting that sends your property's performance data to a BigQuery dataset in your own Google Cloud project once a day. It holds every row Search Console has, with rare queries included as rows without their text, and it is not limited to 16 months: it keeps growing until you delete it. It only starts from the day you switch it on, and storage and queries above BigQuery's free usage are billed to you.
What it gives you that the report and the API cannot
| Performance report | Search Analytics API | Bulk data export | |
|---|---|---|---|
| Rows | 1,000 per table or export | Up to 50,000 per day per search type | Every row |
| History | 16 months | 16 months | From setup day, kept until you delete it |
| Rare (anonymised) queries | Left out of tables, counted in totals | Same | Included as rows with an empty query |
| Cost | Free | No Cloud bill, but quotas apply | BigQuery storage and query charges |
| Effort | None | Code and OAuth | Cloud project and SQL |
Before you start
- You need owner permission on the Search Console property.
- You need a Google Cloud project with billing enabled.
- In that project, enable the BigQuery API and the BigQuery Storage API under APIs & Services > Enabled APIs & Services.
How to set up bulk data export
- In the Cloud console, open IAM and Admin and choose Grant access.
- Add the principal
search-console-data-export@system.gserviceaccount.comwith two roles: BigQuery Job User and BigQuery Data Editor. Save. - In Search Console, open Settings > Bulk data export.
- Enter the Cloud project ID (not the project number).
- Choose a dataset name. The default is
searchconsole, every name must start with it, and each property exporting to the same project needs its own. - Pick the dataset location carefully: Google does not support changing it once exports have started.
- Choose Continue. The first export arrives within 48 hours and covers the day it runs.
Once the tables exist you can set a partition expiration (14 days or longer) to cap storage. Do not add or change columns: a schema change makes the export fail.
What lands in BigQuery
searchdata_site_impression: performance aggregated by property, like the chart totals in Search Console. No URL column.searchdata_url_impression: aggregated by URL, with a column per search appearance (such asis_job_listing) and anis_anonymized_discoverflag.ExportLog: one row per successful export per table. Itsepoch_versiongoes up each time Google rewrites a day with corrected data.
Dates are in Pacific Time. Rows are not pre-aggregated, so always SUM() your metrics. Position is zero-based and summed, so average position is SUM(sum_top_position) / SUM(impressions) + 1 in the site table and the same with sum_position in the URL table.
A starting query for top web queries last month:
SELECT
query,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions,
SUM(sum_top_position) / SUM(impressions) + 1 AS avg_position
FROM `your-project.searchconsole.searchdata_site_impression`
WHERE data_date BETWEEN '2026-09-01' AND '2026-09-30'
AND search_type = 'WEB'
AND query != ''
GROUP BY query
ORDER BY clicks DESC
LIMIT 100
Always filter on data_date. The tables are partitioned by date, so the date filter is what keeps each query from scanning, and billing, your whole history.
Limits and failure modes
- Not retroactive. Anything before setup has to come from the API or the reports.
- Failures stop it. After an error, Search Console retries the next day and holds unexported data for about a week. After about a month of failed attempts it stops exporting altogether. Owners and full users get an email when an export fails or recovers.
- Gaps can be permanent. Google's data anomalies page records that 28 February and 1 March 2026 are missing from some properties' exports and will not be recovered. Compare
ExportLogagainst the calendar now and then. - Stopping. Deactivate export in the settings page ends exports within 24 hours. Existing tables stay in BigQuery.
Do you need it?
If you need every long-tail query, search appearance flags per URL, or SQL joins with other company data, yes. If you mainly want history past 16 months for ordinary reporting, a stored property in AutoPSEO does that without a Cloud project: switch on full storage and it backfills 16 months, then saves up to 25,000 query, page and query-and-page rows a day for web search, kept for up to ten years. That is less than every row, and fully enough for most sites. See administration, how long Search Console keeps data and the Search Console API.
Sources: Google's bulk data export overview, setup, monitoring, table reference and sample queries.
More in Performance Reports & Data
- How do I use the Performance report in Google Search Console?
- What do clicks, impressions, CTR, and average position mean?
- How much historical data does Google Search Console store?
- Can I use Google Search Console for keyword research?
- Why does my Search Console data differ from Google Analytics?
- What is a good CTR in Google Search Console?
Put your SEO content on autopilot
Connect Search Console and your site. AutoPSEO scans it and plans the first topics right away. No credit card needed.