Skip to main content
This page covers Cubes for DEX pool and liquidity analysis:
  • DEXPoolEvents (DWD) — liquidity add/remove events with per-event reserves and prices
  • DEXPools (DWS) — pool snapshots (current liquidity and prices, refreshed periodically)
  • TokenSupplyUpdates (DWD) — token supply, market cap, and FDV updates
Examples use the Solana and EVM Chain Groups: Solana { ... } for Solana, EVM(network: eth | bsc | polygon) { ... } for EVM chains (including Polygon).

How do I get liquidity pools for a token?

Find DEX pools that list a token as token A in the snapshot. Pools where the asset appears only as token B need a second query with tokenB (or a where clause); for event-level rows with full pair context, use DEXPoolEvents.
query {
  Solana {
    DEXPools(
      limit: {count: 10}
      tokenA: {is: "TOKEN_ADDRESS"}
    ) {
      Pool {
        Address
        ProgramAddress
        TokenAAddress
        TokenBAddress
        LiquidityUSD
        PriceAtoB
        PriceBtoA
        LastUpdated
      }
    }
  }
}
Open in GraphQL IDE — paste the query above to run it interactively with auto-complete and schema exploration.
Replace TOKEN_ADDRESS with the token mint (Solana) or contract address (EVM). Repeat with tokenB: {is: "TOKEN_ADDRESS"} to include pools where the token is the quote side.
FieldDescription
Pool.AddressLiquidity pool / market address
Pool.ProgramAddressDEX program or factory address
Pool.TokenAAddressBase-side token address
Pool.TokenBAddressQuote-side token address
Pool.LiquidityUSDTotal pool liquidity in USD (snapshot)
Pool.LastUpdatedWhen this snapshot row was last updated
  • Filter by liquidity: Add where: {Pool: {LiquidityUSD: {gt: 10000}}} for pools above a USD depth threshold
  • Specific DEX: Add where: {Pool: {ProgramAddress: {is: "DEX_PROGRAM_OR_FACTORY_ADDRESS"}}}
  • More pools: Increase count to discover additional pools for the token
  • Per-event reserves: Use DEXPoolEvents with tokenAddress / poolAddress and orderBy: Block_Time_DESC for add/remove history

How do I get details of a specific pool?

Read the latest snapshot for one pool by address. DEXPools does not expose a block timeline per row — use DEXPoolEvents for historical reserve series.
query {
  Solana {
    DEXPools(
      limit: {count: 1}
      poolAddress: {is: "POOL_ADDRESS"}
    ) {
      Pool {
        Address
        TokenAAddress
        TokenBAddress
        ProgramAddress
        LiquidityUSD
        PriceAtoB
        PriceBtoA
        LastUpdated
      }
    }
  }
}
FieldDescription
Pool.TokenAAddress / Pool.TokenBAddressPair token addresses
Pool.LiquidityUSDTotal liquidity in USD (snapshot)
Pool.LastUpdatedLast snapshot refresh for this pool
  • Reserve history: Query DEXPoolEvents with poolAddress: {is: "POOL_ADDRESS"} and orderBy: Block_Time_DESC
  • Time range on events: On DEXPoolEvents, add where: {Block: {Time: {since: "2025-03-01T00:00:00Z"}}} to scope add/removes
The poolAddress selector filters by Pool.Address. It is available on DEXPools (snapshot) and DEXPoolEvents (events).

How do I rank pools or read snapshot liquidity?

DEXPools (DWS) stores current-state rows (typically refreshed every few minutes). Use it to rank pools by LiquidityUSD and compare DEX programs without scanning raw events.
query {
  Solana {
    DEXPools(
      limit: {count: 20}
      tokenA: {is: "TOKEN_ADDRESS"}
    ) {
      Pool {
        Address
        ProgramAddress
        TokenAAddress
        TokenBAddress
        LiquidityUSD
        LastUpdated
      }
    }
  }
}
FieldDescription
Pool.AddressPool address
Pool.ProgramAddressDEX program / factory
Pool.TokenAAddress / Pool.TokenBAddressPair tokens
Pool.LiquidityUSDSnapshot liquidity in USD
Pool.LastUpdatedHow fresh the snapshot is
  • Rank by liquidity: Sort client-side by LiquidityUSD, or use orderBy if your schema exposes a pool snapshot ordering
  • Active pools: Prefer pools with recent LastUpdated
  • Compare DEXes: Group or filter by Pool.ProgramAddress
DEXPoolEvents (DWD) is the right Cube for time series of reserves and every liquidity event. DEXPools (DWS) is optimized for latest pool state and discovery.

How do I get token supply and market cap?

Use TokenSupplyUpdates for supply, market cap, price, and FDV tied to supply events.
query {
  Solana {
    TokenSupplyUpdates(
      limit: {count: 1}
      tokenAddress: {is: "TOKEN_ADDRESS"}
      orderBy: Block_Time_DESC
    ) {
      TokenSupplyUpdate {
        Currency { MintAddress, Decimals }
        PostBalance
        MarketCapInUSD
        PriceInUSD
        FDVInUSD
        TotalSupply
      }
      Block { Time }
    }
  }
}
FieldDescription
TokenSupplyUpdate.Currency.MintAddressToken address
TokenSupplyUpdate.Currency.DecimalsToken decimals
TokenSupplyUpdate.PostBalanceCurrent supply after the event
TokenSupplyUpdate.MarketCapInUSDMarket capitalization in USD
TokenSupplyUpdate.PriceInUSDToken price at the time of the supply event
TokenSupplyUpdate.FDVInUSDFully diluted valuation
TokenSupplyUpdate.TotalSupplyTotal token supply
  • Supply history: Increase count to see how supply changed over time (mint/burn events)
  • Market cap history: Query multiple supply updates to chart market cap over time
  • Combined with price: Use PriceInUSD alongside TotalSupply to verify market cap calculations
This page uses TokenSupplyUpdates for supply-linked market cap, price, and FDV. For additional token metrics and summaries, see OHLC & Statistics.

Multi-Chain Examples

query {
  Solana {
    DEXPools(
      limit: {count: 5}
      tokenA: {is: "TOKEN_ADDRESS"}
    ) {
      Pool { Address, LiquidityUSD, LastUpdated }
    }
  }
}

Next Steps

DEX Trades

Query DEX trading data — token trades, wallet activity, and top traders.

Transfers

Track on-chain token transfers between wallets.

Balances & Holders

Look up wallet balances, balance history, and top holders.

OHLC & Statistics

Fetch candlestick data, trade stats, market cap, and token metadata.