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

# DEX pools

> Pools as a venue: the key, and how the pool list compares to what traded.

One row per DEX pool on one chain in `dimensions.dex_pools`, listing every pool ever created. `dex_pool_id` is the pool address joined with the chain, and it is the key every pool 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 Pool tab of [DEX](/docs/catalog/dex).

<div class="tt-roster">
  <table class="tt-coverage">
    <thead>
      <tr>
        <th width="230">App</th>
        <th width="140">Project</th>
        <th>Trading volume</th>
      </tr>
    </thead>

    <tbody>
      <tr><td><code>aerodrome-slipstream</code></td><td><code>aerodrome</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>aerodrome-stable</code></td><td><code>aerodrome</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>aerodrome-volatile</code></td><td><code>aerodrome</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>aperture-swap-v1</code></td><td><code>aperture</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>apeswap-dex</code></td><td><code>apeswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>blackhole-dex</code></td><td><code>blackhole</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>camelot-dex</code></td><td><code>camelot</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>curve-dex</code></td><td><code>curve</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>dodo-dex</code></td><td><code>dodo</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>equalizer-dex</code></td><td><code>equalizer</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>etherex-dex</code></td><td><code>etherex</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>euler-swap</code></td><td><code>euler</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>fathom-dex</code></td><td><code>fathom</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>honeypop-dex</code></td><td><code>honeypop</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>instadapp-fluid-dex</code></td><td><code>instadapp</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>instadapp-fluid-dex-lite</code></td><td><code>instadapp</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>integral-dex</code></td><td><code>integral</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>maverick-dex</code></td><td><code>maverick</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>meteora-launchpad</code></td><td><code>meteora</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>meteora-liquidity-pools</code></td><td><code>meteora</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>okutrade-dex</code></td><td><code>okutrade</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>orca-token-swap-v2</code></td><td><code>orca</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>orca-whirlpools</code></td><td><code>orca</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pancakeswap-v2</code></td><td><code>pancakeswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pancakeswap-v3</code></td><td><code>pancakeswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pangolin-dex</code></td><td><code>pangolin</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pharaoh-dex</code></td><td><code>pharaoh</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pumpfun-amm</code></td><td><code>pumpfun</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>pumpfun-launchpad</code></td><td><code>pumpfun</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>quickswap-v2</code></td><td><code>quickswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>quickswap-v3</code></td><td><code>quickswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>ramses-dex</code></td><td><code>ramses</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>raydium-clmm</code></td><td><code>raydium</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>raydium-cpmm</code></td><td><code>raydium</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>raydium-launchlab</code></td><td><code>raydium</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>raydium-openbook</code></td><td><code>raydium</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>raydium-stable-swap</code></td><td><code>raydium</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>shadowexchange-concentrated-liquidity</code></td><td><code>shadowexchange</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>shadowexchange-constant-product</code></td><td><code>shadowexchange</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>shadowexchange-dex</code></td><td><code>shadowexchange</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>solidlizard-dex</code></td><td><code>solidlizard</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>spookyswap-dex</code></td><td><code>spookyswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>sushiswap-dex</code></td><td><code>sushiswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>thena-dex</code></td><td><code>thena</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>thruster-clamm</code></td><td><code>thruster</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>thruster-classic</code></td><td><code>thruster</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>traderjoe-dex</code></td><td><code>traderjoe</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>uniswap-v2</code></td><td><code>uniswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>uniswap-v3</code></td><td><code>uniswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>uniswap-v4</code></td><td><code>uniswap</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>velodrome-dex</code></td><td><code>velodrome</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>versedex-dex</code></td><td><code>versedex</code></td><td><span class="tt-check">✓</span></td></tr>
      <tr><td><code>zkswap-dex</code></td><td><code>zkswap</code></td><td><span class="tt-check">✓</span></td></tr>
    </tbody>
  </table>
</div>

## Columns

<table>
  <thead>
    <tr>
      <th width="230">Column</th>
      <th width="120">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr><td><code>dex\_pool\_id</code></td><td>STRING</td><td>Identifier of the pool: the pool address joined with the chain.</td></tr>
    <tr><td><code>protocol\_id</code></td><td>STRING</td><td>The app operating the pool. Older name for <code>app\_id</code>, and the same values.</td></tr>
    <tr><td><code>chain\_id</code></td><td>STRING</td><td>Chain the pool lives on.</td></tr>
    <tr><td><code>project\_id</code></td><td>STRING</td><td>Project the operating app belongs to.</td></tr>
    <tr><td><code>pool\_address</code></td><td>STRING</td><td>Onchain address of the pool. Where one contract holds every pool, this is the pool's id inside that contract.</td></tr>
    <tr><td><code>pool\_name</code></td><td>STRING</td><td>The pool's tokens as a name, for example <code>USDC-WETH</code>.</td></tr>
    <tr><td><code>pool\_display\_name</code></td><td>STRING</td><td>Pool name with the fee added on, where the pool charges a fixed one.</td></tr>
    <tr><td><code>fee\_tier</code></td><td>BIGNUMERIC</td><td>The fee the pool charges on every swap, as a decimal fraction, so <code>0.0005</code> reads 0.05%. Empty where the venue sets the fee swap by swap.</td></tr>
    <tr><td><code>created\_at</code></td><td>TIMESTAMP</td><td>Time of the block the pool was created in.</td></tr>
    <tr><td><code>hooks\_address</code></td><td>STRING</td><td>Address of the pool's hooks contract, on venues that attach one. A hooks contract is extra code the venue runs around each swap.</td></tr>
    <tr><td><code>token\_ids</code></td><td>ARRAY\<STRING></td><td>The tokens the pool holds, in pool order, as keys of <code>dimensions.tokens</code>.</td></tr>
  </tbody>
</table>

## Sample queries

<Tabs>
  <Tab title="Rank pools by volume">
    The volume table keys on `dex_pool_id`, and the registry turns that key into a readable pair and the fee the pool charges. Filter `chain_id` on both sides so the result stays on one chain.

    ```sql theme={null}
    select
        pools.pool_display_name,
        pools.protocol_id as app_id,
        pools.fee_tier,
        sum(volume.trading_volume) as trading_volume
    from `metrics_dex_pools.trading_volume_daily` as volume
    join `dimensions.dex_pools` as pools
        using (dex_pool_id)
    where volume.chain_id = 'ethereum'
      and pools.chain_id = 'ethereum'
      and 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
    ```
  </Tab>

  <Tab title="Registry against traded pools">
    A pool enters the registry when its factory emits the creation event, so the registry side counts every pool an app has ever created and the traded side counts the ones that saw a swap. `protocol_id` is the older name for `app_id`, so alias it to join the two.

    ```sql theme={null}
    with registry as (
        select
            protocol_id as app_id,
            count(*) as pools_in_registry
        from `dimensions.dex_pools`
        where chain_id = 'ethereum'
        group by app_id
    ),

    traded as (
        select
            app_id,
            count(distinct dex_pool_id) as pools_traded
        from `metrics_dex_pools.trading_volume_daily`
        where chain_id = 'ethereum'
          and timestamp >= timestamp('2026-08-01')
          and timestamp < timestamp('2026-08-08')
        group by app_id
    )

    select
        app_id,
        registry.pools_in_registry,
        traded.pools_traded
    from registry
    left join traded
        using (app_id)
    order by registry.pools_in_registry desc
    ```
  </Tab>
</Tabs>
