Wallets API

A wallet's own raw token-transfer events

Every raw token-transfer event a wallet made or received across every token it touched -- plain moves, mints and burns, not just its trades. SOL, RHC, ETH, BNB, BASE and STABLE.

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

What it returns

Every raw token-transfer event this wallet was a party to — a plain move, a mint (from the zero address) or a burn (to the zero address) — NOT just the swap-decoded trade events wallet-activity reports. Same item shape as transfers: {at, from, to, amountToken, txHash}. coveredFrom is the earliest instant this response covers COMPLETELY, and truncated says whether that is later than the requested from (there may be earlier transfers this response does not contain). How far one page reaches depends on the chain and on which source answered. Usually the source applies the [from, to] window itself, so a page that did not fill covers the whole window — coveredFrom is from and truncated is false, including an EMPTY window, which is a confirmed "no transfers in this range"; a page that filled can end part-way through a block, so its oldest second is left out and coveredFrom is the first second it holds completely. A window ending after now is read up to now, and on ETH, BNB and BASE a window longer than 30 days may be answered for its newest 30 days only, with truncated saying so. On RHC the first source asked cannot be given a window, so coveredFrom is the oldest instant its single page reached, clamped to from, and null when that page was empty: a wallet with no token-transfer history and one the source never resolved look the same there. coveredFrom is also null when no source could be reached, on every chain. Either way transfers itself is a real [], never omitted or replaced by an error. What counts as a transfer differs by chain, and is reported as each chain has it: on RHC the feed is NOT filtered by token standard, so a non-fungible transfer can appear in it; those carry no decimals, so amountToken is null for them. On ETH, BNB, BASE and STABLE the feed holds fungible-token transfers only, and a move of the chain's own native coin is NOT a token transfer there. On SOL, where the native coin is itself modelled as a mint, native moves ARE in the feed and are usually most of it; a single transaction also commonly contributes several rows there. A null amountToken therefore means "no fungible amount could be established for this row" — the source reported no decimals, or (RHC) the row was not a fungible-token move — and never a withheld or zero amount. A zero-value transfer is a real event and publishes 0.

Chains

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

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-transfers/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 transfers to return, newest-first within the window. Capped at 50 (enforced after the API-key gate; see above). A request is answered from ONE page of the source, so it can come back with fewer rows than limit even when more exist — never silent: coveredFrom/truncated report exactly how much of the window was actually covered.
chain

path · string · required

The chain the wallet address belongs to. SOL, RHC, ETH, BNB, BASE or STABLE; every other chain returns 400 — no wired source reports per-wallet raw token transfers there.
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 A wallet's own raw token-transfer events
FieldTypeDescription
transfersobject[]
transfers[].atnumberUnix SECONDS.
transfers[].fromstring | nullThe sending address. A mint shows the zero address here.
transfers[].tostring | nullThe receiving address. A burn shows the zero address here.
transfers[].amountTokennumber | nullDecimalized amount of whichever token moved in this row. null only when the source did not report a decimals count for it — never divided by an assumed value.
transfers[].txHashstring | null
coveredFromnumber | nullThe earliest instant transfers covers completely, Unix seconds. Equal to the requested from when the whole window was covered (on ETH/BNB/BASE/STABLE, also for a confirmed-empty window); LATER than from when the source's one page ran out first. null when there was nothing to anchor it to — see the summary above.
truncatedbooleantrue when coveredFrom is later than the requested from — there may be transfers between from and coveredFrom not in this response. 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