Discovery and markets API
Which liquidity pools on this chain are the biggest right now?
A chain-wide pool ranking by 24h volume, liquidity or trades; optionally one venue, a liquidity/volume floor, or only pools paired with tokenized stocks. Rows: price, reserves, FDV.
/api/external/discovery/top-pools/{chain}What it returns
A chain-wide ranking of liquidity pools, largest first, computed across every pool indexed on the chain rather than re-sorted from one page. sort picks the figure: volume24h (the default), liquidity (pool reserves in USD) or transactions24h. dex narrows the ranking to one venue by its id — the same id every row publishes as dexId (raydium, pancakeswap_v2, uniswap-v4-base…) — and an id no venue on the chain carries returns 404. minLiquidityUsd and minVolume24hUsd are floors applied before the ranking, not after it, so they change WHICH pools compete rather than trimming the answer. pairedWith=tokenized-stock ranks only pools quoted in a tokenized equity or ETF (SPYx, NVDAx…), so the stock is quoteTokenAddress; most such pools are on SOL, few on ETH, and BNB and BASE currently have none, which is an empty ranking rather than an error. A volume ranking is not a quality ranking: the two highest-volume pools measured on one chain carried reserves of $1.18 and $0.08, which is what minLiquidityUsd is for. count is how many rows came back; there is no match total, because the underlying ranking publishes none. For one token's pools see pools, for one narrative's see sector-pools, and for one pool in full see pool-detail.
Chains
- Solana SOL
- BNB Chain BNB
- Ethereum ETH
- Base BASE
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/discovery/top-pools/SOL"
| Parameter | Description |
|---|---|
sortquery · string · optional | What to rank by, largest first: trailing 24h volume24h, pool liquidity (reserves in USD), or transactions24h. Defaults to volume24h.volume24hliquiditytransactions24h |
limitquery · integer · optional | How many pools to return. Defaults to 20, at most 100. Each 20 rows costs one upstream call, so a limit of 100 costs five. limit ≤ 50 keeps the answer under 32 KB. |
dexquery · string · optional | Rank only the pools of this venue, by the id rows publish as dexId. An id no venue on this chain carries returns 404; a string no venue id can be returns 400. |
minLiquidityUsdquery · number · optional | Rank only pools whose reserves are at least this many USD. Applied before the ranking: it decides which pools compete, it does not trim the result. |
minVolume24hUsdquery · number · optional | Rank only pools whose trailing 24h volume is at least this many USD. Applied before the ranking. |
pairedWithquery · string · optional | Rank only pools whose quote token is of this class. tokenized-stock: pools quoted in a tokenized equity or ETF (SPYx, NVDAx, TSLAx…), so the stock is quoteTokenAddress. Applied before the ranking. Omit it for every quote token.tokenized-stock |
chainpath · string · required | SOL, ETH, BNB or BASE. RHC, STABLE and ARC all return 400 — none is offered on this resource. CELO, ARB, OP and SCROLL return 400 here. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
chain | string | The chain ranked. |
sort | string | The ranking answered. |
dex | string | null | The venue the ranking was narrowed to, or null for every venue on the chain. |
minLiquidityUsd | number | null | The liquidity floor applied, or null when none was asked for. |
minVolume24hUsd | number | null | The 24h-volume floor applied, or null when none was asked for. |
pairedWith | string | null | The quote-token class the ranking was narrowed to, or null for every quote token. |
count | integer | How many pools are in pools. This is NOT a match total — the ranking publishes none — so a count below limit means the filtered ranking ran out, not that it was trimmed. |
pools | object[] | Largest first by sort. |
pools[].pool | string | The pool's address on its own chain. |
pools[].chain | string | null | The chain the pool trades on — the chain asked for on every row measured. |
pools[].name | string | null | The pair as the venue names it, e.g. SOL / USDC. |
pools[].dexId | string | null | The venue the pool belongs to, e.g. raydium — the value dex takes. |
pools[].baseTokenAddress | string | null | The base token of the pair. |
pools[].quoteTokenAddress | string | null | The quote token of the pair. |
pools[].priceUsd | number | null | Price of the base token in USD. |
pools[].liquidityUsd | number | null | Pool reserves in USD. 0 means drained; null means no reading. |
pools[].volume24hUsd | number | null | Trailing 24h traded volume in USD. |
pools[].transactions24h | number | null | Trades over the trailing 24h: buys24h + sells24h. |
pools[].buys24h | number | null | Buy trades over the trailing 24h. |
pools[].sells24h | number | null | Sell trades over the trailing 24h. |
pools[].buyers24h | number | null | Distinct buying wallets over the trailing 24h — not the same figure as buys24h. |
pools[].sellers24h | number | null | Distinct selling wallets over the trailing 24h. |
pools[].priceChange24hPct | number | null | 24h price change in percent (4.5 = +4.5 %). |
pools[].fdvUsd | number | null | Fully diluted valuation of the base token in USD. |
pools[].marketCapUsd | number | null | Market cap of the base token in USD. Often null while fdvUsd is populated. |
pools[].createdAt | integer | null | When the pool was created, in Unix SECONDS (not milliseconds). |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key