BigQuery offers scalable, flexible pricing options to help fit your project and budget. BigQuery charges for data storage, streaming inserts, and for querying data, but loading and exporting data are free of charge.
BigQuery provides cost control mechanisms that enable you to cap your daily costs to an amount that you choose. For more information, see Cost Controls.
When charging in local currency, Google will convert the prices listed into applicable local currency pursuant to the conversion rates published by leading financial institutions.
The following table summarizes BigQuery pricing. BigQuery's quota policy applies for these operations.
|Storage||$0.020 per GB, per month||See Storage pricing.|
|Streaming Inserts||$0.01 per 200 MB||See Storage pricing.|
|Queries||$5 per TB||First 1 TB per month is free, subject to query pricing details.|
|Loading data||Free||See Loading data into BigQuery.|
|Copying data||Free||See Copying an existing table.|
|Exporting data||Free||See Exporting data from BigQuery.|
|Metadata operations||Free||List, get, patch, update and delete calls.|
- Free operations
- Storage pricing
- Query pricing
- Data size calculation
- Sample query costs
The following table shows BigQuery operations that are free of charge. BigQuery's quota policy applies for these operations.
|Loading data||Loading data into BigQuery|
|Copying data||Copying an existing table|
|Exporting data||Exporting data from BigQuery|
|Metadata operations||List, get, patch, update and delete calls|
Loading data into BigQuery is free, with the exception of a small charge for streamed data. Storage pricing is based on the amount of data stored in your tables, which we calculate based on the types of data you store. For a detailed explanation of how we calculate your data size, see data size calculation.
|Storage||$0.020 per GB, per month.|
|Streaming Inserts||$0.01 per 200 MB, with individual rows calculated using a 1 KB minimum size.|
Storage pricing is prorated per MB, per second. For example, if you store:
- 100 MB for half a month, you pay $0.001 (a tenth of a cent)
- 500 GB for half a month, you pay $5
- 1 TB for a full month, you pay $20
Query pricing refers to the cost of running your SQL commands and user-defined functions. BigQuery charges for queries by using one metric: the number of bytes processed.
Free Tier Pricing
The first 1 TB of data processed per month is free of charge (per billing account).
Query Pricing Details
Beyond your first 1 TB of data processed in a month, you are charged as follows:
|Queries||$5 per TB|
- You aren't charged for queries that return an error, or for cached queries.
- Charges are rounded to the nearest MB, with a minimum 10 MB data processed per table referenced by the query, and with a minimum 10 MB data processed per query.
- Cancelling a running query job may incur charges up to the full cost for the query were it allowed to run to completion.
- BigQuery uses a columnar data structure. You're charged according to the total data processed in the columns you select, and the total data per column is calculated based on the types of data in the column. For more information about how we calculate your data size, see data size calculation.
- You can opt-in to a higher pricing tier by enabling high-compute queries, which is necessary for fewer than 1% of queries. For more information, see High-Compute queries.
High-Compute queries are queries that require a large amount of resources to process per byte of source data. High-Compute queries account for less than 1 percent of all queries. In order to run these queries, you need to explicitly opt in.
Complex queries can consume extraordinarily large computing resources relative to the
number of bytes processed. Typically, such queries contain a very large number of
CROSS JOIN clauses or complex User-defined Functions.
How to opt in
If your query is too expensive for BigQuery to complete at the standard
$5 per TB pricing tier, BigQuery returns a
and an estimate of how much the query would cost.
To run the query at a higher pricing tier, pass a new value for
maximumBillingTier as part of the query request.
maximumBillingTier is a positive integer that serves
as a multiplier of the basic price of $5 per TB.
For example, if you set
maximumBillingTier to 2, the maximum
cost for that query will be $10 per TB. Alternatively, you can request a
project-wide default value by submitting the BigQuery High-Compute queries form.
You can also use the form
to disable the per-query override for your project.
Exercise caution when setting
maximumBillingTier because there
is no upper limit to the value that you can set, and high values can result
in very high billing. To help you control your costs, BigQuery offers custom
quotas, which can help mitigate the risk of runaway expenses. For more
information, see Cost Controls.
All projects created before January 1, 2016 can use High-Compute queries
at no extra cost until October 1, 2016. For these projects, all queries are
charged $5 regardless of the billing tier. On October 1, 2016,
these projects revert to a
maximumBillingTier value of 1
unless you have changed the value by using
the BigQuery High-Compute queries form. If you have a custom value in place, the setting
will continue to be in effect at the prevailing prices.
Project owners will be reminded about this change prior to October 1, 2016.
All projects created on January 1, 2016 or later start with a
maximumBillingTier value of 1, but you can opt in to a higher tier
at any time by setting
maximumBillingTier for a single query or
by submitting the BigQuery High-Compute queries form
to set a project-wide default.
BigQuery Slots is a model that lets you guarantee resources, regardless of demand on the overall multi-tenant pool. This allows you to minimize variability in query performance and maximize resources available for query processing. Use cases include SaaS platforms, mission-critical ETL tasks, and business reporting.
If you have workloads that require low resource variability, contact your local sales rep to discuss BigQuery Slots.
Data size calculation
When you load data into BigQuery or query the data, you're charged according to the data size. We calculate your data size based on the size of each data type.
||2 bytes + the UTF-8 encoded string size|
||0 bytes + the size of the contained fields|
Null values for any data type are calculated as 0 bytes. Repeated fields are calculated per entry. For example, a repeated
INTEGER with 4 entries counts as 32 bytes.
Sample query costs
When you run a query, you're charged according to the total data processed in the columns you select, even if you set an explicit
LIMIT on the results. The total bytes per column is calculated based on the types of data in the column. For more information about how we calculate your data size, see data size calculation.
The following table shows several sample queries and a description of how many bytes are processed for each query.
|Sample query||Bytes processed|
SELECT corpus, word FROM publicdata:samples.shakespeare LIMIT 1;
|Total size of the
SELECT corpus FROM (SELECT * FROM publicdata:samples.shakespeare);
|Total size of the
SELECT COUNT(*) FROM publicdata:samples.shakespeare;
|No bytes processed|
SELECT COUNT(corpus) FROM publicdata:samples.shakespeare;
|Total size of the
SELECT COUNT(*) FROM publicdata:samples.shakespeare WHERE corpus = 'hamlet';
|Total size of the
SELECT shakes.corpus, wiki.language FROM publicdata:samples.shakespeare AS shakes JOIN EACH publicdata:samples.wikipedia AS wiki ON shakes.corpus = wiki.title;
|Total size of the