Prices
Token price data across multiple blockchains
Price Tables
Dune provides price data at multiple time resolutions to balance query performance and data granularity. Choose the appropriate table based on your needs:
- Use
prices.minute
for real-time analysis and examining short-term price movements - Use
prices.hour
for intraday patterns and medium-term trends - Use
prices.day
for long-term analysis and optimal query performance
For best performance, use the table with the coarsest granularity that meets your analytical needs. Querying minute-level data over long time periods can be very resource-intensive.
Available Tables
Table | Granularity | Update Frequency | Aggregation Time |
---|---|---|---|
prices.minute | 1 minute | hourly | start of minute |
prices.hour | 1 hour | hourly | start of hour |
prices.day | 1 day | daily | 00:00 UTC |
Coverage
- 180,000+ unique tokens
- 700,000+ contract addresses
- 20+ blockchains
- Automatic inclusion of new tokens exceeding $10k volume threshold
- Coverage relies on
dex.trades
entries for respective blockchains
For anything not covered in the prices.day
, prices.hour
or prices.minute
tables, you can use the legacy tables: prices.usd
, prices.usd_daily
, and prices.usd_latest
. There we keep a historical record of prices for ~2,800 tokens that extends beyond our current dex.trades coverage.
Schema
All price tables share the following schema:
Column | Type | Description |
---|---|---|
contract_address | varbinary | Token identifier (ERC20 contract address, Solana mint address, 0x00..00 for natives) |
blockchain | varchar | Network identifier |
symbol | varchar | Token symbol |
price | double | USD price |
timestamp | timestamp | timestamp (start of minute, hour, or day) |
Technical Notes
- Prices are calculated independently per blockchain
- Prices are aggregated across all liquidity pools per blockchain
- Token identification requires both
contract_address
ANDblockchain
symbol
is not unique - do not use for token identification- if there is no trades for a token, we use the last available price and carry it forward until there is new trade data
Methodology
Dune’s price data is derived primarily from DEX trading activity captured in dex.trades
, providing broad coverage across 180,000+ tokens and 20+ blockchains. The data undergoes rigorous processing including volume filtering, outlier removal, and VWAP calculations to ensure accuracy and reliability. This methodology enables automatic price tracking for any token that achieves meaningful trading volume (>$10k), while maintaining data quality through statistical controls.
Despite comprehensive internal testing and measures to prevent data errors, it’s possible for prices to be inaccurate due to outlier trades (arbitrage, hacks etc.) which can skew the data. If you happen to notice a price error, please open an issue on GitHub.
Step 1: Importing Trusted Token Prices
Dune sources trusted token prices from Coin Paprika. These prices:
- Cover major tokens that are defined in the
prices.trusted_tokens
table - Serve as base prices for calculating prices of other tokens traded against them in DEX pairs
Step 2: DEX-Derived Prices
For details on how Dune processes DEX trade data to derive accurate token prices, see the DEX Trade Processing:
- We start by collecting raw trading data from the
dex.trades
table - We calculate prices for trading pairs where one token is from our trusted token list
- The data then goes through our processing pipeline which:
- Excludes trades with less than $10,000 USD in total volume
- Takes the median price from each block to reduce outlier impact
- Calculates USD prices using our trusted token prices as reference
- Applies volume-weighted averaging (VWAP) for each time interval
- Filters out extreme price movements exceeding 1000% from previous period
- Uses forward-filling to handle periods without valid trades
Example
For a USDC/TOKEN pair:
- Get USDC price from trusted tokens
- Use DEX trade
amount_usd
= amount_token * trusted_token_price - Apply processing pipeline to calculate final TOKEN price
Legacy Tables
The following tables are maintained for historical compatibility but we no longer add tokens to them.
prices.usd
prices.usd_daily
prices.usd_latest
Was this page helpful?