Google BigQuery

BigQuery public datasets: how to find, query and pay for them

BigQuery public datasets are tables Google hosts in the bigquery-public-data project for anyone to query. Storage is free; queries are billed like any other, so one careless SELECT * can read terabytes. This guide shows how to find and add them, measures what different queries read, explains the 10 MB minimum and the free tier, and shows how to join a public table with your own data.

Google BigQueryAlyona SamovarIevgen Krasovytskyi5 min read

BigQuery public datasets: how to find, query and pay for them

BigQuery public datasets are tables that Google stores in the project bigquery-public-data and that anyone with a Google Cloud project can query. Google pays for storing them. You pay for the queries, at the normal rates, and the first 1 TiB of on-demand query data each month is free.

That last point is where people get caught. Some public tables are enormous:

Query on bigquery-public-data.github_repos.contents Bytes it would read
SELECT * 2.68 TB
SELECT id, size 14.06 GB
SELECT COUNT(*) 0 bytes

These are dry-run estimates from 16 October 2026: what each query would be billed for, without running it. The first is more than the monthly free tier on its own. The second reads two columns out of five and costs 190 times less. Always check the estimate the console shows before you click Run.

Note: Originally published in April 2024. Fully rewritten in October 2026: every query and estimate below was run in BigQuery on 16 October 2026.

Find a dataset

Find a dataset

  • In the console: in BigQuery Explorer, click Add, then Star a project by name, and enter bigquery-public-data. Its datasets then appear in the Explorer under that project. You can also search the Explorer for a dataset name.
  • In the Marketplace: Google Cloud’s Marketplace lists public datasets with descriptions; each listing links to its tables in BigQuery.
  • By name in a query: any public table can be read by its full name without adding anything first, as in the queries on this page.

Listing every dataset in the project with INFORMATION_SCHEMA.SCHEMATA does not work: it returned “Access Denied … (‘bigquery.datasets.get’ permission(s) at the dataset level)”. The tables are readable; the project’s metadata as a whole is not.

Datasets worth knowing

Datasets worth knowing

Dataset What is in it Good for
ga4_obfuscated_sample_ecommerce three months of GA4 export data from the Google Merchandise Store learning the GA4 export; see query examples
samples small classic tables such as shakespeare first queries
google_trends top and rising search terms marketing research
github_repos GitHub repository contents and commits large-scale examples (watch the size)
noaa_gsod daily global weather joins with sales by date and place
usa_names US baby names by year practice with GROUP BY and window functions

Dataset names and contents change; check the table’s Details tab for its size and last update before relying on it.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

A first query

A first query

SELECT
  word,
  SUM(word_count) AS uses,
  COUNT(DISTINCT corpus) AS works
FROM `bigquery-public-data.samples.shakespeare`
GROUP BY word
ORDER BY uses DESC
LIMIT 5;
word uses works
the 25568 42
I 21028 42
and 19649 42
to 17361 42
of 16438 42

The table has four columns, word, word_count, corpus and corpus_date, read from samples.INFORMATION_SCHEMA.COLUMNS. The query processed 5.1 MB and was billed 10 MB: on-demand queries are billed at least 10 MB for each table they reference, and at least 10 MB per query, however small the table (pricing, read in October 2026).

Keep public queries cheap

Keep public queries cheap

  • Name the columns. BigQuery bills by the columns read. SELECT * on a wide table is the most expensive habit there is.
  • LIMIT does not help. It cuts the rows returned, not the data read.
  • Filter on the partition column when the table has one; the Details tab says whether it does. More in partitioned tables.
  • Preview instead of querying. The table’s Preview tab shows rows for free.
  • Copy what you reuse. If you will query the same slice daily, save it to a small table in your own dataset once.

What each part of the bill is, and the free tier, are in BigQuery pricing. No billing account at all? The BigQuery sandbox runs public queries inside the free limits.

Join public data with your own

Join public data with your own

A public table can be joined with your tables in the same query, as long as both are in the same location. Each public dataset has its own location, shown on its details page; the samples used here are in the US multi-region, so a dataset of yours in the EU cannot join them in an ordinary query. Google’s global queries can span regions, but as of October 2026 they are in Preview, off by default, need an administrator to enable them, and add the cost of copying data between locations (global queries). For most teams the simpler route is to keep the dataset that joins public data in the same location.

SELECT s.data_date, COUNT(*) AS matches
FROM `myproject.searchconsole.searchdata_site_impression` AS s
JOIN `bigquery-public-data.samples.shakespeare` AS w
  ON LOWER(s.query) = w.word
WHERE s.data_date = '2026-10-01'
GROUP BY s.data_date;

This join between a Search Console export in our project and the Shakespeare sample was estimated at 1.95 MB, because the date filter limits the export table to one day. Weather, holidays and search trends are the public tables most often joined with marketing data, to explain a sales dip or a campaign spike.

To query across datasets you only need read access to each and the right to run jobs in one project; see BigQuery IAM roles.

From practice data to your own

From practice data to your own

Public datasets are good for learning SQL and for adding context, and Google’s GA4 sample is the closest thing to a real export most people can practise on. Your own reports, though, run on your own data, and the same query written against public data needs the same care when it moves to production. In OWOX Data Marts a query that works is published as a Data Mart, runs in your own BigQuery project, and feeds the sheets and dashboards people read. OWOX Data Marts does not transform the data.

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

FAQ

Frequently Asked Questions

Are BigQuery public datasets free?

Google pays to store them; you pay for the queries you run, at normal on-demand rates, with the first 1 TiB of query data each month free. Some tables are huge: SELECT * on github_repos.contents was estimated at 2.68 TB, while selecting two columns was 14.06 GB. Check the estimate before running.

How do I query a BigQuery public dataset?

Use its full name in the query editor: SELECT word, SUM(word_count) FROM `bigquery-public-data.samples.shakespeare` GROUP BY word. You need a Google Cloud project to run the query in; the BigQuery sandbox works without a billing account.

How do I find BigQuery public datasets?

In BigQuery Explorer, click Add, then Star a project by name, and enter bigquery-public-data; its datasets then appear in the Explorer. Google Cloud's Marketplace also lists public datasets with descriptions.

Can I join a public dataset with my own data in BigQuery?

Yes, in one query, as long as both datasets are in the same location. Most public datasets are in the US multi-region, so a dataset of yours in the EU cannot join them directly. You need read access to both and the right to run jobs in one project.

Why was my small public-data query billed 10 MB?

On-demand queries are billed at least 10 MB per table read. A query on the Shakespeare sample processed 5.1 MB and was billed 10 MB.

How do I see what a BigQuery public table contains?

Open the table in the Explorer: the Schema tab lists columns, Details shows size and last update, and Preview shows rows without running a query, for free. INFORMATION_SCHEMA.COLUMNS on the dataset returns the columns with SQL.

Who wrote this

Alyona Samovar

Alyona Samovar · Senior Digital Analyst

Alyona Samovar is a Senior Digital Analyst who spent years at OWOX helping enterprise clients design analytics systems, build BigQuery reporting pipelines, and optimize marketing measurement. She specializes in SQL-based analytics, data modeling, and turning raw marketing data into actionable insights. Alyona writes about practical analytics workflows, BigQuery best practices, and data-driven decision-making.

Ievgen Krasovytskyi

Ievgen Krasovytskyi · Head of Marketing

Ievgen Krasovytskyi is the Head of Marketing at OWOX, leading strategy across content, SEO, product marketing, and AI-powered automation. With deep expertise in analytics infrastructure, data warehouses, and marketing technology, he builds systems that connect marketing performance to business outcomes. Ievgen writes about SaaS growth, analytics workflows, and the future of AI in marketing operations.