A price is one USD figure at one moment, held per token contract on one chain and per curated asset. price is that figure, and a row appears for each day a price was taken for that day.
Coverage
Every chain we cover prices on.
algorandaptosarbitrumavalanchebaseberachainblastbobbobanetworkbsccardanocelochainflipethereumflowevmfraxtalgnosisgravityalphahederahydradxhydradxevmhyperevmimmutablezkevminkiotexkatananetworklineamantamegaethmonadmovementnearopbnboptimismplasmapolkadotassethubpolygonripplerobinhoodchainrootstockscrollseievmsolanasonicstacksstarknetstellarsuitempotronunichainvictionworldchainxdcxlayerzksyncera
Tables
Token, daily
Token, hourly
Asset, daily
One row per token per day, in metrics_tokens.price_daily.| Column | Type | Description |
|---|
timestamp | TIMESTAMP | The moment the price was taken: midnight UTC in the daily table, the top of the hour in the hourly one. |
token_id | STRING | Token the price belongs to: {token_address}-{chain_id}. |
chain_id | STRING | Chain the token is deployed on. |
price | FLOAT64 | The price in US dollars at that moment. |
One row per token per hour, in metrics_tokens.price_hourly. It keys the same way as the daily table, so moving a query between them means swapping the table name and the time bounds.| Column | Type | Description |
|---|
timestamp | TIMESTAMP | The moment the price was taken: midnight UTC in the daily table, the top of the hour in the hourly one. |
token_id | STRING | Token the price belongs to: {token_address}-{chain_id}. |
chain_id | STRING | Chain the token is deployed on. |
price | FLOAT64 | The price in US dollars at that moment. |
One row per asset per day, in metrics_assets.price_daily. An asset price belongs to the asset itself, so it holds across every chain the asset is deployed on.| Column | Type | Description |
|---|
timestamp | TIMESTAMP | Midnight UTC of the day the price was taken. |
asset_id | STRING | Identifier of the asset, for example usdc. |
price_source | STRING | Which source the figure came from. It labels the price and measures nothing. |
price | FLOAT64 | The asset’s price in USD. Where more than one source has a price, we take them in a fixed order of preference. |
Sample queries
metrics_tokens.price_hourly is large and split by month. Bound timestamp and filter chain_id on every query against it, or you read the whole table and the whole table is billed to you.
One asset, every chain
Asset against deployment
Pricing an event
dimensions.asset_tokens maps one asset onto its deployments, and token_id is the key it shares with the price table, which holds one price per deployment.The two figures are measured separately, so they can differ on the same day. Both tables have timestamp at midnight UTC, and the join matches on it. The hourly table is keyed on the top of the hour, so timestamp_trunc matches an event to it. Bound block_timestamp and filter chain_id on the transfer side too: that table is billed on what the query reads.