Pools API
Pool trade stats for many pools
Buyer and seller wallet counts, transactions, volume and liquidity over eight trailing windows from 5m to 30d, for each of up to 30 pools in one request.
/api/external/pool-analysis/pool-stats-batch/{chain}What it returns
The pool-stats answer — volume, liquidity, transaction counts and unique buyer/seller wallet counts over eight trailing windows (5m, 15m, 1h, 4h, 12h, 1d, 7d, 30d) — for many pools on one chain in one request. Each result is exactly what pool-stats answers for that pool, with the same caveats on every field; a pool with no activity, or an unknown one, is every field null, as there. POST, because the list is the subject: it can run past what a URL comfortably holds, and a body keeps a watch list out of every proxy log between the caller and this service.
Chains
- BNB Chain BNB
- Ethereum ETH
- Stable STABLE
- Base BASE
- Robinhood Chain RHC
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -X POST -H "x-dex-data-key: $DEXDATA_API_KEY" \
-H "content-type: application/json" \
-d '{"subjects":["<subjects>"]}' \
"https://api.dexdata.io/api/external/pool-analysis/pool-stats-batch/BNB"| Parameter | Description |
|---|---|
chainpath · string · required | The chain every pool in the batch lives on. ETH, BNB, BASE, STABLE and RHC are served; SOL and ARC both return 400. CELO, ARB, OP and SCROLL return 400 here. |
subjectsbody · string[] · optional | Pool addresses, or pool IDs where the chain's pools are keyed by an ID. Between 1 and 30, each sent once. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
results | object[] | One entry per requested subject, in the order they were sent. |
results[].subject | string | The subject exactly as it was sent. |
results[].result | object | null | What the single-subject endpoint answers for this subject. null only when error is set. |
results[].result.5m | object | |
results[].result.5m.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.5m.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.5m.buys | integer | null | Buy-side transaction count in this window. |
results[].result.5m.sells | integer | null | Sell-side transaction count in this window. |
results[].result.5m.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.5m.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.5m.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.15m | object | |
results[].result.15m.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.15m.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.15m.buys | integer | null | Buy-side transaction count in this window. |
results[].result.15m.sells | integer | null | Sell-side transaction count in this window. |
results[].result.15m.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.15m.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.15m.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.1h | object | |
results[].result.1h.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.1h.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.1h.buys | integer | null | Buy-side transaction count in this window. |
results[].result.1h.sells | integer | null | Sell-side transaction count in this window. |
results[].result.1h.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.1h.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.1h.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.4h | object | |
results[].result.4h.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.4h.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.4h.buys | integer | null | Buy-side transaction count in this window. |
results[].result.4h.sells | integer | null | Sell-side transaction count in this window. |
results[].result.4h.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.4h.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.4h.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.12h | object | |
results[].result.12h.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.12h.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.12h.buys | integer | null | Buy-side transaction count in this window. |
results[].result.12h.sells | integer | null | Sell-side transaction count in this window. |
results[].result.12h.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.12h.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.12h.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.1d | object | |
results[].result.1d.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.1d.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.1d.buys | integer | null | Buy-side transaction count in this window. |
results[].result.1d.sells | integer | null | Sell-side transaction count in this window. |
results[].result.1d.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.1d.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.1d.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.7d | object | |
results[].result.7d.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.7d.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.7d.buys | integer | null | Buy-side transaction count in this window. |
results[].result.7d.sells | integer | null | Sell-side transaction count in this window. |
results[].result.7d.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.7d.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.7d.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].result.30d | object | |
results[].result.30d.volumeUsd | number | null | USD traded in this pool during the window. |
results[].result.30d.liquidityUsd | number | null | This pool's USD liquidity reading for the window. May not match pool-detail's own liquidityUsd for the same pool — the two come from different upstream questions. |
results[].result.30d.buys | integer | null | Buy-side transaction count in this window. |
results[].result.30d.sells | integer | null | Sell-side transaction count in this window. |
results[].result.30d.uniqueBuyers | integer | null | Distinct wallets that bought in this window. null on a known source placeholder (observed on the longest windows) — never a real zero when it fires. |
results[].result.30d.uniqueSellers | integer | null | Distinct wallets that sold in this window. Same placeholder caveat as uniqueBuyers. |
results[].result.30d.uniqueWallets | integer | null | Distinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers (a wallet doing both counts once here). Same placeholder caveat. |
results[].error | string | null | null, or unavailable when no source could be reached for this subject — retry it. A subject nobody has data for is NOT an error: its result says so. |
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