> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Prices

> One USD price per token per day, and per hour.

`metrics.tokens_prices_daily` carries one row per token per day: the price in USD at midnight UTC. `metrics.tokens_prices_hourly` carries the same price hour by hour. Both cover every token in the catalog, so every priced row joins to `dimensions.tokens` on `token_id`.

## Columns

Both tables share one schema.

<table>
  <thead>
    <tr>
      <th width="280">Column</th>
      <th width="130">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>timestamp</code></td>
      <td><code>TIMESTAMP</code></td>
      <td>The moment the price was taken: midnight UTC in the daily table, the top of the hour in the hourly one.</td>
    </tr>

    <tr>
      <td><code>token\_id</code></td>
      <td><code>STRING</code></td>
      <td>Token the price belongs to: <code>\{token\_address}-\{chain\_id}</code>.</td>
    </tr>

    <tr>
      <td><code>chain\_id</code></td>
      <td><code>STRING</code></td>
      <td>Chain the token is deployed on.</td>
    </tr>

    <tr>
      <td><code>price</code></td>
      <td><code>FLOAT64</code></td>
      <td>The price in US dollars at that moment.</td>
    </tr>
  </tbody>
</table>

## Sample queries

<Tabs>
  <Tab title="Daily">
    **Read one token's daily price series with its metadata.**

    ```sql theme={null}
    select
        prices.timestamp,
        tokens.symbol,
        tokens.name,
        prices.price
    from `metrics.tokens_prices_daily` as prices
    join `dimensions.tokens` as tokens
        using (token_id)
    where prices.token_id = '0xdac17f958d2ee523a2206206994597c13d831ec7-ethereum'
      and prices.timestamp >= timestamp('2026-07-01')
    order by prices.timestamp
    ```
  </Tab>

  <Tab title="Hourly">
    **Read one token's hourly prices over three days.**

    ```sql theme={null}
    select
        timestamp,
        price
    from `metrics.tokens_prices_hourly`
    where token_id = '0xdac17f958d2ee523a2206206994597c13d831ec7-ethereum'
      and timestamp >= timestamp('2026-08-20')
      and timestamp < timestamp('2026-08-23')
    order by timestamp
    ```
  </Tab>
</Tabs>

## Notes

The daily table suits long histories, and joins to the other daily tables at a fraction of the hourly table's size. The hourly table suits analysis within a day, and pricing individual events precisely. Both key the same way, so moving a query from one to the other means swapping the table name and the time bounds.

`price` is never empty in either table. A token with no price on a day has no row for that day, rather than a row with nothing in it. A left join from another table comes back empty because the join found nothing, not because the column was blank.
