Wallets API

Wallet trade activity

Every swap a wallet made across every token it touched, in a bounded window — swaps only, so airdrops, bridges and treasury moves do not appear here.

GET/api/external/wallet-analysis/wallet-activity/{chain}/{address}

What it returns

Scope, stated plainly: this reports TRADE (swap) events only — a wallet buying or selling a token. It does NOT report airdrops, bridges, treasury sends, staking moves, mints or burns, or any other raw wallet-to-wallet transfer; a wallet that only received an airdrop in the window gets back an empty trades here, not an error. That different question — every raw token-transfer event this wallet made or received, across every token it touched — is answered by wallet-token-transfers; transfers cannot answer it, being token-scoped rather than wallet-scoped.

Chains

  • Solana SOL
  • BNB Chain BNB
  • Ethereum ETH
  • Stable STABLE
  • Base BASE
  • Robinhood Chain RHC
  • Arc ARC

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

query · integer · required

Window start, Unix SECONDS. Inclusive.
to

query · integer · required

Window end, Unix SECONDS. Inclusive.
limit

query · integer · required

Most events to return, newest-first within the window. Capped at 200 (enforced after the API-key gate; see above). A wide window costs no more than a narrow one: each answer is one page regardless of how wide [from, to] is. On SOL, ETH, BNB and BASE an answer can hold at most 100 events when the primary source is unavailable; a full page then comes back with truncated: true. On ARC an answer covers at most the newest 30 days of the window, and a longer window comes back with truncated: true; the same holds on any chain when the other sources are unavailable.
chain

path · string · required

The chain the wallet address belongs to. CELO, ARB, OP and SCROLL return 400 here.
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 Wallet trade activity
FieldTypeDescription
tradesobject[]
trades[].atnumberUnix SECONDS.
trades[].tokenAddressstringThe token this event concerns. NOT fixed across rows — a wallet can touch many.
trades[].counterTokenAddressstring | nullWhat tokenAddress was traded against on this row.
trades[].sidestringWhether the wallet bought or sold tokenAddress.
trades[].amountTokennumber | nullDecimalized amount of tokenAddress that changed hands.
trades[].priceUsdnumber | nullnull when this row's price could not be trusted — a literal 0 from the source, never a real free trade, or, when the primary source is unavailable, the two sides of the trade valued more than 5% apart in USD — NOT when the trade did not happen. amountToken, side and txHash are still real on a null-priced row.
trades[].volumeUsdnumber | nullnull whenever priceUsd is null — never re-derived from a rejected price.
trades[].txHashstring | null
coveredFromnumber | nullThe earliest instant actually covered by trades, Unix seconds. Equal to the requested from when the source's page reached back that far; LATER than from when this wallet made more trades than one page holds. Equal to the requested from too when the source answered a genuinely quiet window — an empty trades with a non-null coveredFrom IS a confirmed answer. null only when nothing answered trades at all (the source could not be reached) — a different claim from a confirmed-quiet window, and never paired with a populated trades.
truncatedbooleantrue when coveredFrom is later than the requested from — there may be trades between the requested from and coveredFrom that are NOT in this response. Narrow the window and retry to see them.

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