Wallets API

The trading records of many wallets

Realised, unrealised and total profit, amount invested, tokens traded and mean buy size for up to 100 Solana wallets in one request. No window start, wins, losses or win rate in batch form. SOL only.

POST/api/external/wallet-analysis/trader-record-batch/{chain}

What it returns

The trader-record answer — realised, unrealised and total profit, amount invested, tokens traded and mean buy size — for many wallets on one chain in one request. SOL only. Each result is what trader-record answers for that wallet from its second SOL source, with the same caveats on every field, and with four fields always null here: since (the window start is not stated), and wins, losses and winRatePct (not available in batch form — ask trader-record for one wallet when they matter). A wallet with no record is a result with every field null, as on trader-record. 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

  • Solana SOL

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/wallet-analysis/trader-record-batch/SOL"
Parameters
ParameterDescription
chain

path · string · required

SOL. Every other chain returns 400: no source keeps these records in batch form there.
subjects

body · string[] · optional

Solana wallet addresses (base58). Between 1 and 100, each sent once.

Response fields

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

Response fields of The trading records of many wallets
FieldTypeDescription
resultsobject[]One entry per requested subject, in the order they were sent.
results[].subjectstringThe subject exactly as it was sent.
results[].resultobject | nullWhat the single-subject endpoint answers for this subject. null only when error is set.
results[].result.sincenumber | nullUnix SECONDS marking the start of the window these figures cover. The window is NOT the wallet's lifetime, which is why it is published rather than assumed: on SOL it came back as the same instant for every wallet measured, which is where that record starts, and a wallet that traded earlier is missing that history here. On ETH, BNB and BASE it is null because the window start is not stated at all, and on SOL it is null when the record came from the second SOL source, which states none either — null means UNKNOWN, never "since forever". Reading any of these figures as all-time is wrong.
results[].result.realizedPnlUsdnumber | null
results[].result.unrealizedPnlUsdnumber | null
results[].result.totalPnlUsdnumber | null
results[].result.totalInvestedUsdnumber | null
results[].result.tokensTradednumber | null
results[].result.winsnumber | nullTokens that ended in profit. SOL only; null on ETH, BNB and BASE, where only a win rate is reported and its denominator is not tokensTraded, so no count can be derived.
results[].result.lossesnumber | nullTokens that ended in loss. SOL only, for the same reason as wins.
results[].result.winRatePctnumber | null
results[].result.averageBuyUsdnumber | nullMean USD size of one buy. null for a wallet with no buys at all, rather than 0.
results[].errorstring | nullnull, 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