BigQuery streaming inserts cost: when real-time ingestion adds up
BigQuery lets you stream rows in for immediate querying, but streaming ingestion is billed per gigabyte on top of storage and query costs, unlike free batch loads. Here is what streaming costs and how the Storage Write API changes the math.
Quick answer
BigQuery batch loads are free, but streaming rows in for immediate availability is billed per gigabyte ingested. The legacy streaming inserts API costs about 0.01 dollars per 200 MB, which is roughly 0.05 dollars per GB, while the newer Storage Write API costs about 0.025 dollars per GB with the first 2 TB per month free. So a workload streaming 1 TB a month costs roughly 50 dollars on the legacy API or about 25 dollars on the Storage Write API beyond the free tier. The optimization is use free batch loads when data does not need to be queryable within seconds, use the Storage Write API rather than legacy streaming when you do need real time, and reserve streaming for data that genuinely requires immediate availability.
BigQuery gives you two ways to get data in: batch loads, which are free, and streaming, which makes rows queryable within seconds but costs money per gigabyte. Teams often reach for streaming by default because it feels modern, then discover an ingestion line on the bill that batch loading would have avoided entirely. Understanding when streaming is necessary is the key to not paying for real time you do not need.
The ingestion options and their cost
| Method | Cost | Availability |
|---|---|---|
| Batch load | Free | Minutes, after the load job |
| Legacy streaming inserts | About 0.05 dollars per GB | Seconds |
| Storage Write API | About 0.025 dollars per GB, first 2 TB free | Seconds |
Batch loading data into BigQuery costs nothing for the ingestion itself, you pay only for storage and later queries. Streaming, which makes rows available for query almost immediately, is billed per gigabyte. The legacy streaming inserts API charges about 0.01 dollars per 200 MB, near 0.05 dollars per GB. The newer Storage Write API charges about 0.025 dollars per GB, half the legacy rate, and includes the first 2 TB per month free, so it is both cheaper and more capable.
What streaming costs at volume
Put numbers on it. Streaming 1 TB per month on the legacy API costs roughly 50 dollars just for ingestion. On the Storage Write API, the first 2 TB are free, so 1 TB costs nothing for ingestion, and 5 TB costs about 75 dollars for the 3 TB beyond the free tier. This is on top of storage, at about 0.02 dollars per GB per month for active storage, and query cost at about 6.25 dollars per TB scanned on demand. For high-volume pipelines, the ingestion line can rival the storage line.
Do you actually need streaming
The central question is latency. If your data must be queryable within seconds, a live dashboard, fraud detection, real-time monitoring, streaming is justified. If the data feeds reports, analytics, or dashboards that tolerate a few minutes of delay, batch loading every minute or few minutes gives near-real-time freshness for free. Many pipelines stream data that no one queries until the next day, paying for immediacy that delivers no value. This is the same batch-versus-stream tradeoff as streaming versus batch data generally.
Optimizing ingestion cost
Use free batch loads wherever the freshness requirement allows, schedule frequent small batch loads for near-real-time needs that do not require sub-second latency, and adopt the Storage Write API rather than legacy streaming when you do need real time, for its lower rate and 2 TB free tier. Reserve true streaming for data that genuinely must be queryable within seconds. Combine this with the broader BigQuery cost optimization levers on storage and query. Price your ingestion path against the resource catalog so the streaming cost is known before the pipeline is built.
FAQ
How much do BigQuery streaming inserts cost?
The legacy streaming inserts API costs about 0.01 dollars per 200 MB, roughly 0.05 dollars per GB, while the newer Storage Write API costs about 0.025 dollars per GB with the first 2 TB per month free. Batch loads, by contrast, are free. So streaming 1 TB a month costs roughly 50 dollars on the legacy API or nothing on the Storage Write API within its free tier.
Is batch loading into BigQuery free?
Yes. Batch loading data into BigQuery is free for the ingestion itself; you pay only for storage and later queries. The tradeoff is availability: batch-loaded data becomes queryable minutes after the load job rather than within seconds. For data that tolerates a few minutes of delay, batch loading gives near-real-time freshness at no ingestion cost.
Should I use the Storage Write API or legacy streaming?
Use the Storage Write API when you need real-time ingestion. It costs about 0.025 dollars per GB, half the legacy streaming rate, and includes the first 2 TB per month free, so it is both cheaper and more capable. The legacy streaming inserts API at about 0.05 dollars per GB has no free tier and is being superseded by the Storage Write API.
When do I actually need BigQuery streaming?
When your data must be queryable within seconds, such as for live dashboards, fraud detection, or real-time monitoring. If the data feeds reports or dashboards that tolerate a few minutes of delay, frequent batch loads give near-real-time freshness for free. Many pipelines stream data that no one queries until later, paying for immediacy that delivers no value.
How does C3X help with BigQuery ingestion cost?
C3X prices your BigQuery infrastructure from Terraform before you deploy, so the cost implications of a streaming versus batch ingestion path are visible at design time. That helps you confirm whether a pipeline genuinely needs streaming or whether free batch loads would meet the freshness requirement, avoiding paying per gigabyte for real-time ingestion the workload does not need.
What to do next
Decide streaming versus batch on cost before you build the pipeline. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.