Wallets API

What did this wallet trade in this token, and when?

One wallet's buys and sells of one token over a window: time, side, amount, USD price, transaction, program. Solana only.

GET/api/external/wallet-analysis/wallet-token-trades/{chain}/{address}

What it returns

Every buy and sell of ONE token by ONE wallet between from and to, newest first: when, which side, how much, at what USD price, in which transaction, on which program and pools. trades narrowed to a wallet, so a wallet's history in a busy token is not lost among everyone else's trades. With pool, only the trades that went through that pool (a routed trade counts when one of its hops did), reaching further back on it. A wallet that never traded the token in the window answers trades: []; when the trades cannot be read the request fails instead. SOL only; every other chain returns 400.

Chains

  • Solana SOL

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/wallet-analysis/wallet-token-trades/SOL/<address>?token=<token>&from=<from>&to=<to>&limit=<limit>"
Parameters
ParameterDescription
token

query · string · required

The token mint address (base58, 32-44 characters).
from

query · integer · required

Window start, Unix SECONDS. Inclusive.
to

query · integer · required

Window end, Unix SECONDS. Inclusive.
limit

query · integer · required

Most trades to return, newest first within the window. At most 100.
pool

query · string · optional

Optional pool address (base58, 32-44 characters): only the trades that went through this pool. A pool of another token answers trades: [].
chain

path · string · required

The chain the wallet address belongs to. SOL only; every other chain returns 400.
address

path · string · required

The wallet address.

Response fields

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

Response fields of What did this wallet trade in this token, and when?
FieldTypeDescription
tokenstringThe token asked for, echoed back.
tradesobject[]Newest first. Empty when the wallet made no trade of this token in the window.
trades[].atintegerUnix SECONDS.
trades[].sidestringRelative to the token asked for: the wallet bought it or sold it.
trades[].amountTokennumber | nullDecimalized amount of the token the wallet sent or received. null when that amount is not known for this trade.
trades[].priceUsdnumber | nullUSD price of the token at this trade. null when no price was recorded for it; the trade itself still happened.
trades[].volumeUsdnumber | nullUSD value of the trade (amountToken x priceUsd). null whenever priceUsd is.
trades[].txHashstringThe transaction signature.
trades[].programstring | nullThe program the trade ran through: a DEX or launchpad (e.g. raydium-cpmm) or a router or aggregator (e.g. jupiter). Open set. null when not recorded.
trades[].poolsstring[]The pool addresses the trade went through; several when it was routed.
trades[].isSniperboolean | nulltrue on a buy that landed within one slot of its pool's creation, and on a later sell by a wallet that made such a buy (for about 12 hours after it). false when the trade was checked and did not qualify, so a sniper's other buys, and its sells after those 12 hours, read false. null when it was not recorded for this trade, which is the common case: most trades carry no such record.
coveredFromintegerUnix seconds the answer is complete from. Equal to from when every trade of the window was reachable; later when the wallet traded more often than one request can reach back (see truncated).
truncatedbooleantrue when coveredFrom is later than from: trades between from and coveredFrom may be missing. Narrow the window (set to before coveredFrom) to read them. Independent of limit.

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