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

TableGranularityUpdate FrequencyAggregation Time
prices.minute1 minutehourlystart of minute
prices.hour1 hourhourlystart of hour
prices.day1 daydaily00: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:

ColumnTypeDescription
contract_addressvarbinaryToken identifier (ERC20 contract address, Solana mint address, 0x00..00 for natives)
blockchainvarcharNetwork identifier
symbolvarcharToken symbol
pricedoubleUSD price
timestamptimestamptimestamp (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 AND blockchain
  • 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:

  1. Get USDC price from trusted tokens
  2. Use DEX trade amount_usd = amount_token * trusted_token_price
  3. 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