Tokens API

Trade stats by trailing window

Buyer and seller wallet counts split apart, plus transactions, volume and price change, over trailing windows from 3h to 24h. The only endpoint splitting buyers from sellers per window.

GET/api/external/token-analysis/stats-windows/{chain}/{mint}

What it returns

The window set depends on the chain. SOL returns all six — 3h, 4h, 5h, 6h, 12h, 24h. ETH returns 4h, 12h and 24h only, and priceChangePct is absent from every ETH window. Those windows and that field are OMITTED on ETH rather than returned as null, because the source serving that chain cannot be asked for them at all — null on this API means a source was asked and had nothing, which would be a different and untrue statement. Every other field is present on every window of both chains. If the first ETH source cannot answer, a second one fills 24h only, and 4h and 12h are then null: it has no window of that length. On SOL, windows are 3h through 24h and not 1m-24h: the shorter windows exist only on a pool-scoped call this endpoint does not make, because reaching them costs a second upstream round trip, over budget for what this endpoint answers in one call. Also on SOL, uniqueBuyers, uniqueSellers, uniqueWallets and priceChangePct may all be null specifically on the 3h window — a known limitation of that source, not a real zero; every other field on 3h is a real reading.

Chains

  • Solana SOL
  • Ethereum ETH

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/token-analysis/stats-windows/SOL/<mint>"
Parameters
ParameterDescription
chain

path · string · required

SOL and ETH only; every other chain returns 400, because no wired source publishes these windows there. The WINDOW SET differs by chain — see the endpoint description.
mint

path · string · required

The token mint address (Solana) or contract address (EVM).

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Trade stats by trailing window
FieldTypeDescription
3hobject
3h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
3h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
3h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
3h.buysinteger | nullBuy-side transaction count in this window.
3h.sellsinteger | nullSell-side transaction count in this window.
3h.volumeUsdobject
3h.volumeUsd.buysnumber | null
3h.volumeUsd.sellsnumber | null
3h.volumeUsd.totalnumber | null
3h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.
4hobject
4h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
4h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
4h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
4h.buysinteger | nullBuy-side transaction count in this window.
4h.sellsinteger | nullSell-side transaction count in this window.
4h.volumeUsdobject
4h.volumeUsd.buysnumber | null
4h.volumeUsd.sellsnumber | null
4h.volumeUsd.totalnumber | null
4h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.
5hobject
5h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
5h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
5h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
5h.buysinteger | nullBuy-side transaction count in this window.
5h.sellsinteger | nullSell-side transaction count in this window.
5h.volumeUsdobject
5h.volumeUsd.buysnumber | null
5h.volumeUsd.sellsnumber | null
5h.volumeUsd.totalnumber | null
5h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.
6hobject
6h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
6h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
6h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
6h.buysinteger | nullBuy-side transaction count in this window.
6h.sellsinteger | nullSell-side transaction count in this window.
6h.volumeUsdobject
6h.volumeUsd.buysnumber | null
6h.volumeUsd.sellsnumber | null
6h.volumeUsd.totalnumber | null
6h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.
12hobject
12h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
12h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
12h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
12h.buysinteger | nullBuy-side transaction count in this window.
12h.sellsinteger | nullSell-side transaction count in this window.
12h.volumeUsdobject
12h.volumeUsd.buysnumber | null
12h.volumeUsd.sellsnumber | null
12h.volumeUsd.totalnumber | null
12h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.
24hobject
24h.uniqueBuyersinteger | nullDistinct wallets that bought in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
24h.uniqueSellersinteger | nullDistinct wallets that sold in this window. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
24h.uniqueWalletsinteger | nullDistinct wallets that did EITHER — not the sum of uniqueBuyers and uniqueSellers, because a wallet that both bought and sold in the window counts once here. null specifically on the shortest window (3h) — a known limitation of the underlying source, not a real zero.
24h.buysinteger | nullBuy-side transaction count in this window.
24h.sellsinteger | nullSell-side transaction count in this window.
24h.volumeUsdobject
24h.volumeUsd.buysnumber | null
24h.volumeUsd.sellsnumber | null
24h.volumeUsd.totalnumber | null
24h.priceChangePctnumber | nullPercent change from the price at the START of this window to now. Positive means the price ROSE. Verified 2026-09-16 by back-solving a consistent current price from 5 of the 6 windows on the same token. 3h is excluded from that check and is also the one window where this field itself is null — the same known source limitation as the wallet-count fields, not a real zero percent change. Present on `SOL` only. It is absent from every ETH window, not null: the source serving ETH has no price on these windows at all, so there is nothing it declined to answer.

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