Skip to main content

Liquidity API: common questions

Each question below is one query on the Trading cubes, using the Liquidity, RankingDetail and LeadingPool fields. Every query was run against the live API on 2026-10-20; the IDE link opens it ready to run.

Two things to keep in mind throughout:

  • Liquidity.Usd is the quote-side reserve, not TVL. A pool explorers show at $2M TVL reports about $1M here.
  • Only Source: "real" and "real_stale" are measured. Everything else is an estimate; most queries below filter on it.

Checking one token​

Is this token's price backed by real liquidity, and which pool sets it?​

One Tokens row gives the liquidity summed over the token's pools, how much of it is measured (RealShare), the market cap, and the pool at Ranking.Position: 1.

note

LeadingPool.PoolAddress is empty on some rows; the pool address is the last segment of MarketId.

Run in IDE

query IsTokenBackedByRealLiquidity {
Trading {
Tokens(
limit: {count: 1}
orderBy: {descending: Block_Time}
where: {
Token: {Id: {is: "bid:solana:6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 10}}}
}
) {
Block { Time }
Token { Symbol Id }
Price { Average { Mean } }
Liquidity { Usd Source RealShare }
Supply { MarketCap }
LeadingPool { MarketId QuoteTokenId PoolAddress }
}
}
}

Which pool should I trade this token on?​

The token's pools ordered by measured liquidity, with the quote asset, reserves, the last price in each pool and its rank in the price blend. Only real and real_stale sources, so estimates cannot push a thin pool to the top.

Run in IDE

query BestPoolToTradeAToken {
Trading {
Pairs(
limit: {count: 5}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Liquidity_Usd}
where: {
Token: {Id: {is: "bid:solana:6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 10}}}
Liquidity: {Source: {in: ["real", "real_stale"]}}
}
) {
Market { Protocol Name }
Pool { Address }
QuoteToken { Symbol }
Price { Ohlc { Close } }
Liquidity { Usd QuoteReserve BaseReserve UpdatedAt Source }
Ranking { Position Weight }
}
}
}

How did one pool's liquidity move over the last 24 hours?​

Hourly rows for a single pool. Liquidity.Usd on an hourly row is the last snapshot in that hour; hours with no trade have no row.

Run in IDE

query PoolLiquidityHistoryHourly {
Trading {
Pairs(
limit: {count: 24}
orderBy: {descending: Block_Time}
where: {
Pool: {Address: {is: "EQEu6NyEq8nECAiem1YkTu3uDBiGTEA2tYBLBmr9YJ7Y"}}
QuoteToken: {Symbol: {is: "WSOL"}}
Interval: {Time: {Duration: {eq: 3600}}}
Block: {Time: {since_relative: {hours_ago: 24}}}
}
) {
Block { Time }
Interval { Time { Start } }
Liquidity { Usd Source }
Price { Ohlc { Open Close } }
Volume { Usd }
}
}
}

Screening for risk​

Which tokens show a big market cap on almost no liquidity?​

The classic scam shape: a tiny pool sets a price, the supply is huge, and the market cap looks like billions. RealShare: 1 keeps estimates out so the $20 pools are genuinely $20 pools.

Run in IDE

query BigMarketCapNoLiquidity {
Trading {
Tokens(
limit: {count: 10}
limitBy: {by: Token_Id, count: 1}
orderBy: {descending: Supply_MarketCap}
where: {
Token: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Supply: {MarketCap: {gt: 1000000}}
Liquidity: {Usd: {lt: 5000}, RealShare: {ge: 1}}
}
) {
Token { Symbol Id }
Supply { MarketCap }
Liquidity { Usd Source RealShare }
Volume { Usd }
}
}
}

Which pools trade heavily on almost no liquidity?​

Thousands of dollars of volume against a $20 reserve is a wash-trading or honeypot signal. Today's result is a cluster of Raydium pools named like stablecoin pairs, each with identical volume.

Run in IDE

query HighVolumePoolsAlmostNoLiquidity {
Trading {
Pairs(
limit: {count: 10}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Volume_Usd}
where: {
Market: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Liquidity: {Source: {is: "real"}, Usd: {lt: 1000}}
Volume: {Usd: {gt: 5000}}
}
) {
Token { Symbol Id }
Market { Protocol }
Pool { Address }
Liquidity { Usd }
Volume { Usd }
}
}
}

Which pools are priced off a reserve that is hours old?​

real_stale plus an UpdatedAt filter finds pools whose reserve snapshot is older than six hours but still counts in full. Their Verdict is still priced.

Run in IDE

query PoolsPricedOffAStaleReserve {
Trading {
Pairs(
limit: {count: 10}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Liquidity_Usd}
where: {
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Liquidity: {Source: {is: "real_stale"}, UpdatedAt: {till_relative: {hours_ago: 6}}}
}
) {
Block { Time }
Market { Network Protocol }
Token { Symbol }
Pool { Address }
Liquidity { Usd UpdatedAt Source }
RankingDetail { Verdict StaleMultiplier }
}
}
}

Which large tokens have the most, and the least, liquidity relative to market cap?​

Tokens above $10M market cap with at least 90 % measured liquidity. Divide Liquidity.Usd by Supply.MarketCap on your side: today Old Slerf is 87 %, BOME 16 %, PUMP 1 %.

Run in IDE

query LiquidityShareOfMarketCapSolana {
Trading {
Tokens(
limit: {count: 15}
limitBy: {by: Token_Id, count: 1}
orderBy: {descending: Liquidity_Usd}
where: {
Token: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 10}}}
Supply: {MarketCap: {gt: 10000000}}
Liquidity: {RealShare: {ge: 0.9}}
}
) {
Token { Symbol Id }
Liquidity { Usd RealShare }
Supply { MarketCap }
}
}
}

Launches​

Which pump.fun curves are closest to graduation?​

On a launch curve Liquidity.NetQuoteUsd is the money paid in minus the money taken out, which is what migrates to the AMM at graduation. Ordering by it lists the curves nearest the threshold.

note

The graduation threshold is not in the API; divide NetQuoteUsd by the current threshold yourself to get a percentage.

Run in IDE

query PumpFunCurvesClosestToGraduation {
Trading {
Pairs(
limit: {count: 10}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Liquidity_NetQuoteUsd}
where: {
Market: {Network: {is: "Solana"}, Protocol: {is: "pump"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Liquidity: {Source: {is: "migration"}}
}
) {
Token { Symbol Id }
Pool { Address }
Liquidity { NetQuoteUsd Usd }
Volume { Usd }
Price { Ohlc { Close } }
}
}
}

Execution​

Where can I sell $100k of WETH inside 1 % slippage?​

DepthUsd is the quote-side amount that can be sold into the pool within the 1 % tier. Filter above your trade size and order by it. EVM only: Solana pools report 0.

Run in IDE

query PoolsDeepEnoughForA100kSale {
Trading {
Pairs(
limit: {count: 5}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Liquidity_DepthUsd}
where: {
Market: {Network: {is: "Ethereum"}}
Token: {Symbol: {is: "WETH"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Liquidity: {DepthUsd: {gt: 100000}}
}
) {
Market { Protocol }
Pool { Address }
QuoteToken { Symbol }
Liquidity { DepthUsd Usd QuoteReserveUsd }
Price { Ohlc { Close } }
}
}
}

Chain-wide rankings​

What are the ten deepest pools on a chain?​

Any token, measured reserves only, one row per pool.

Run in IDE

query TopPoolsByMeasuredLiquiditySolana {
Trading {
Pairs(
limit: {count: 10}
limitBy: {by: Pool_Address, count: 1}
orderBy: {descending: Liquidity_Usd}
where: {
Market: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 10}}}
Liquidity: {Source: {is: "real"}}
}
) {
Market { Protocol }
Pool { Address }
Token { Symbol }
QuoteToken { Symbol }
Liquidity { Usd QuoteReserve UpdatedAt }
Volume { Usd }
}
}
}

Which pools gained or lost the most liquidity in the last hour?​

Usd(maximum: Block_Time) returns the liquidity on the newest row and Usd(minimum: Block_Time) on the oldest row of the window. The change has to be computed on your side; the API cannot order by it.

Run in IDE

query PoolLiquidityNowVsOneHourAgo {
Trading {
Pairs(
limit: {count: 20}
orderBy: {descendingByField: "now_Usd_maximum"}
where: {
Market: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {hours_ago: 1}}}
Liquidity: {Source: {is: "real"}, Usd: {gt: 50000}}
}
) {
Pool { Address }
Token { Symbol }
QuoteToken { Symbol }
now: Liquidity { Usd(maximum: Block_Time) }
then: Liquidity { Usd(minimum: Block_Time) }
first: Block { Time(minimum: Block_Time) }
last: Block { Time(maximum: Block_Time) }
}
}
}

Which DEX protocols hold the most deep pools?​

Count of pools above $100k measured liquidity per protocol, plus the largest pool each one has.

Run in IDE

query DexProtocolsWithTheMostDeepPools {
Trading {
Pairs(
limit: {count: 10}
orderBy: {descendingByField: "pools"}
where: {
Market: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 10}}}
Liquidity: {Source: {is: "real"}, Usd: {gt: 100000}}
}
) {
Market { Protocol }
pools: count(distinct: Pool_Address)
Liquidity { Usd(maximum: Liquidity_Usd) }
}
}
}

How fragmented is liquidity: which tokens are spread over the most pools?​

Count of pools with at least $10k measured liquidity per token, and the largest pool for each.

Run in IDE

query TokenLiquidityFragmentation {
Trading {
Pairs(
limit: {count: 10}
orderBy: {descendingByField: "pools"}
where: {
Market: {Network: {is: "Solana"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
Liquidity: {Source: {is: "real"}, Usd: {gt: 10000}}
}
) {
Token { Symbol Id }
pools: count(distinct: Pool_Address)
Liquidity { Usd(maximum: Liquidity_Usd) }
}
}
}

Where is ETH's liquidity, chain by chain?​

Filtering Tokens by Currency.Id returns one row per ETH representation per chain, each with its own liquidity, source and measured share.

Run in IDE

query EthLiquidityByChain {
Trading {
Tokens(
limit: {count: 10}
limitBy: {by: Token_Id, count: 1}
orderBy: {descending: Liquidity_Usd}
where: {
Currency: {Id: {is: "bid:eth"}}
Interval: {Time: {Duration: {eq: 60}}}
Block: {Time: {since_relative: {minutes_ago: 5}}}
}
) {
Token { Network Symbol Id }
Liquidity { Usd Source RealShare }
Volume { Usd }
}
}
}

What these fields cannot answer​

  • Is the LP locked or burned? Not in the Trading cube; that is a token-program question on the chain schemas.
  • When was the pool created? No creation time here. Use the DEXPools cube on the chain schemas for pool-creation events, then come back here for liquidity.
  • Total liquidity per chain. There is no sum aggregate on Liquidity.Usd; page through limitBy: {by: Pool_Address} and add on your side.
  • Order by change. The now-vs-then query returns both values; sorting by the difference is yours to do.
Build with Bitquery

Ready to run this in production?

Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.