Reference
Limits & cost

Limits & cost

Rows and time

Rows per API/AI call1,000 default, 10,000 maximum
Default statement timeout60 seconds
Background submissionabove ~10 seconds of predicted runtime
Scratch result retention1 day
Saved resultsuntil you delete them
Export link validity1 hour

The console pages results rather than capping them, so a large result set is browsable there while an API caller sees the cap.

Cost

Every query is planned and priced before execution.

LimitDefault
Per query$5
Per day, per company$50

The estimate is scan-size based: bytes the plan expects to read, multiplied by a complexity factor for joins and aggregates. Refusals name the estimate, so the fix is usually visible — a filter, fewer columns, or an aggregate instead of raw rows.

Reserved budget is refunded when a query fails or is cancelled.

Unfiltered scans of large tables

Scanning a large external table with no selective predicate is refused regardless of dollar cost. The refusal is about the shape of the query, not its price; a cheaper rewrite of the same shape will not pass. Add a filter on an indexed column.

Container sizing

Queries execute in containers sized from the plan — more scanned bytes and more joins mean more CPU and memory, up to the largest tier. You do not choose a size; the plan does, which is why an unpinned BigQuery catalog or a missing filter shows up as cost rather than as a knob to turn.

Concurrency

Queries run in their own containers, so one heavy query does not slow another. The practical ceiling is your daily budget and your source systems' own capacity — Thunderduck will happily open several connections to the same database.