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

# Order-book markets

> Order books as a venue: the key, and how to rank them.

One row per order-book market that has traded in `dimensions.order_book_markets`, a book of buy and sell orders where the token itself changes hands, covering spot books and outcome markets. `order_book_market_id` is the venue's book identifier joined with the chain, and it is the key every order-book figure joins on.

## Coverage

One row per app, and a tick marks every app that reports the measure at this grain. It is the same table as the Order book market tab of [Perpetuals](https://tokenterminal.com/docs/catalog/perpetuals.md).

<table>
  <thead>
    <tr>
      <th width="230">App</th>
      <th width="140">Project</th>
      <th>Trading volume</th>
      <th>Fees</th>
      <th>Supply-side fees</th>
      <th>Revenue</th>
    </tr>
  </thead>

  <tbody>
    <tr><td>`hyperliquid-outcome-markets`</td><td>`hyperliquid`</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
    <tr><td>`hyperliquid-spot`</td><td>`hyperliquid`</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
  </tbody>
</table>

## Columns

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

  <tbody>
    <tr><td>`order_book_market_id`</td><td>STRING</td><td>Identifier of the market: the venue's book identifier joined with the chain.</td></tr>
    <tr><td>`project_id`</td><td>STRING</td><td>Project the operating app belongs to.</td></tr>
    <tr><td>`app_id`</td><td>STRING</td><td>The app running the book. A book runs under this one app, where a perpetual market has an exchange app and an interface app.</td></tr>
    <tr><td>`chain_id`</td><td>STRING</td><td>Chain the book settles on.</td></tr>
    <tr><td>`quote_asset_id`</td><td>STRING</td><td>The token volume is measured in, keyed like `dimensions.assets`. Every accepted quote token is a dollar stablecoin (`usdc`, `usdh`, `usdt0`, `usde`), so a trade's size times its price is already its dollar value.</td></tr>
    <tr><td>`base_symbol`</td><td>STRING</td><td>Symbol of the traded token, as the venue lists it. Several contracts can share one symbol.</td></tr>
    <tr><td>`name`</td><td>STRING</td><td>Readable pair name, for example `HYPE/USDC`.</td></tr>
    <tr><td>`created_at`</td><td>TIMESTAMP</td><td>Time of the first trade seen in the market, which is what puts the row in this table.</td></tr>
  </tbody>
</table>

## Sample queries

**Rank books by volume**

The volume table keys on `order_book_market_id`, and the registry turns that key into a readable pair and names the app running the book. Volume is a flow, so a week of it adds up.

```sql theme={null}
select
    markets.name,
    markets.app_id,
    markets.chain_id,
    sum(volume.trading_volume) as trading_volume
from `metrics_order_book_markets.trading_volume_daily` as volume
join `dimensions.order_book_markets` as markets
    using (order_book_market_id)
where volume.timestamp >= timestamp('2026-08-01')
  and volume.timestamp < timestamp('2026-08-08')
group by 1, 2, 3
order by trading_volume desc
limit 20
```

**Books per app and chain**

`created_at` is when the market first traded, so the earliest one per app reads as the date its book opened.

```sql theme={null}
select
    chain_id,
    app_id,
    count(*) as markets,
    min(created_at) as first_traded
from `dimensions.order_book_markets`
group by 1, 2
order by markets desc
```


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