> ## 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.

> ## Agent Instructions
> To query the Token Terminal data catalog, read https://tokenterminal.com/docs/catalog/agents-manual.md first. It is the whole catalog as one page: table naming grammar, key columns, partition and cluster rules, units, additivity, and the tables that are documented but not served yet.
> Never query a catalog table on a time bound alone. Also filter its cluster key, which you read from INFORMATION_SCHEMA.COLUMNS; an empty result means the object is a view, whose pruning contract is on its page. Compute is billed to the caller's own Google Cloud project.

# Metrics

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

`metrics_tokens.price_daily` holds one row per token per day: the price in USD at midnight UTC. `metrics_tokens.price_hourly` holds the same figure at the top of every hour.

## 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>`timestamp`</td>
      <td>`TIMESTAMP`</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>`token_id`</td>
      <td>`STRING`</td>
      <td>Token the price belongs to: `{token_address}-{chain_id}`. Joins [`dimensions.tokens`](https://tokenterminal.com/docs/catalog/tokens/registry).</td>
    </tr>

    <tr>
      <td>`chain_id`</td>
      <td>`STRING`</td>
      <td>Chain the token is deployed on.</td>
    </tr>

    <tr>
      <td>`price`</td>
      <td>`FLOAT64`</td>
      <td>The price in US dollars at that moment. Every row has a value, and a token has a row on each day it was priced, so a null after a left join is a missing row.</td>
    </tr>
  </tbody>
</table>

## Sample queries

**Daily**

The daily table suits long histories and joins to the other daily tables at a fraction of the hourly table's size. `token_id` is the key on both sides of the join.

```sql theme={null}
select
    prices.timestamp,
    tokens.symbol,
    tokens.name,
    prices.price
from `metrics_tokens.price_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
```

**Hourly**

The hourly table suits analysis within a day, and pricing individual events. Both tables key the same way, so moving a query between them means swapping the table name and the time bounds.

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.