Bytes per row
In Arrow, each selected field adds about this much per row:
JSON is about 2–2.5× more for the same rows.
Measured examples
From real responses on Ethereum and Robinhood Chain (Arrow):
The transfers are every
Transfer log (a topic0 filter only) in the first 100 blocks from
19426000 on Ethereum and from 61000000 on Robinhood Chain, with the fields blockNumber,
logIndex, transactionHash, address, topic1, topic2 and data. The transactions are all
of blocks 19426000–19426009 with blockNumber, transactionIndex, hash, from, to,
value and input (six fields without input).
Scaled up:
The biggest lever is which fields you select: here
input is about 90% of the bytes. If you
only need to know which function was called, select sighash (4 bytes) instead.
Activity varies a lot over a chain’s history (early Ethereum blocks are nearly empty), so
per-block figures from recent blocks overestimate old ranges.
Polling
Each poll that returns little is billed the 10 KB minimum:
Plus the rows the polls return. Poll at the chain’s block time; see
Following the head.
Estimate by sampling
The reliable way to estimate a big job:- Run your exact query (same filters, same fields) on a representative slice, for example 1,000 blocks from recent history.
- Read the size: the response’s byte size is close to what’s billed, or check the key’s data on the dashboard a minute later.
- Scale by the number of blocks, sampling a few periods if the range is long.