Skip to main content
balances_<chain>.updates records one row per observed balance change for native currencies and ERC20 tokens. Each row is the on-chain balance at a specific block for an (address, token_address) pair. Refreshed hourly. For most historical analysis prefer balances_<chain>.daily_updates, which is faster and includes USD values. Use balances_<chain>.updates when you need block-level resolution.

Table Schema

Usage Notes

balances_<chain>.updates is partitioned by block_date. For best performance, include block_date and at least one of address or token_address in your WHERE clause.

USD Values

This table is intentionally not enriched with USD prices. A balance change observed at a specific block can be priced against many different reference points (time of change, end of day, latest, custom benchmark) and there is no single right choice. Bring your own price by joining prices.minute, prices.hour, prices.day, or prices.latest at the time anchor that fits your analysis. If you only need end-of-day USD values, use balances_<chain>.daily_updates where balance_usd is precomputed from prices.day.

Example Queries

All balance updates for a wallet in the last 7 days:
Mark-to-market a wallet’s ETH balance at each change: For a volatile asset, attaching the price at the hour of each balance change shows the wallet’s USD position as both balances and prices move.