Discovery and markets API
How much of this coin do exchanges hold, and is it rising or falling?
Exchange-held balances of one coin, biggest holder first: what each exchange holds and how many coins moved in or out over 1, 7 and 30 days, with totals. Coin units, no chain. Narrow coin coverage.
/api/external/discovery/exchange-reserves/{symbol}What it returns
What centralized exchanges hold of one coin, biggest holder first: the balance on each exchange and how many coins moved in or out over the last day, week and month, with the totals across the exchanges listed. Every figure is in COIN UNITS, never USD, and each percent is measured against the balance at the START of its window (129.99 = the balance grew 129.99% over that window). Falling reserves are usually read as coins leaving for self-custody, rising ones as coins moving in to be sold. Coverage is narrow — measured 2026-09-22, BTC, ETH, USDC, XRP, DAI and LINK answer while USDT, SOL, BNB, DOGE, LTC, TRX, WBTC and ADA do not — and a coin that is not covered returns 404. Each total is the sum over the exchanges that reported that figure, which is never every exchange, and is null when none of them did.
Chains
This endpoint is not tied to a chain: it takes no chain in its request.
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/exchange-reserves/<symbol>"
| Parameter | Description |
|---|---|
symbolpath · string · required | The coin ticker, e.g. "BTC" or "USDC" — not a token mint or contract address, and not a venue instrument id such as "BTCUSDT". Case-insensitive. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
symbol | string | The coin answered, upper case. |
totalBalance | number | null | Coins held across the exchanges that reported a balance, in coin units. null when none did. |
totalChange1d | number | null | Coins that moved in (positive) or out (negative) over the last day, summed over the exchanges that reported it. |
totalChange7d | number | null | The same over the last 7 days. |
totalChange30d | number | null | The same over the last 30 days. |
exchanges | object[] | One row per exchange, biggest balance first. Never empty: a coin with no row is a 404. |
exchanges[].exchange | string | The exchange's name, as the source spells it, e.g. Coinbase. |
exchanges[].balance | number | null | Coins this exchange holds now, in COIN UNITS, not USD. |
exchanges[].change1d | number | null | How many coins that balance moved over the last day. Negative means coins left the exchange. |
exchanges[].changePercent1d | number | null | That move as a percent of the balance a day ago (129.99 = +129.99%). |
exchanges[].change7d | number | null | How many coins the balance moved over the last 7 days. |
exchanges[].changePercent7d | number | null | That move as a percent of the balance 7 days ago. |
exchanges[].change30d | number | null | How many coins the balance moved over the last 30 days. |
exchanges[].changePercent30d | number | null | That move as a percent of the balance 30 days ago. |
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