Wallets API
Every change of a wallet's native-coin balance
A wallet's native-coin balance changes (ETH, SOL and more), newest first and paged back to its first: signed change, balance after, block, time and transaction.
/api/external/wallet-analysis/wallet-native-balance-changes/{chain}/{address}What it returns
Each change of this wallet's native-coin balance, newest first, up to 50 per page: the block and its time, the signed change in the coin's smallest unit, the balance after it, and the transaction behind it. One row per block on the EVM chains; one row per transaction on SOL, where several rows can share a slot and amounts are in lamports. The whole history is reachable: pass nextCursor back as cursor until it is null (on SOL a page can come back shorter, even empty, when newer activity pushed rows already served into it; keep paging). Only the chain's native coin, not tokens. A wallet whose balance never moved answers an empty list. For a balance at the end of each recent day instead, see wallet-native-balance-history.
Chains
- Solana SOL
- Ethereum ETH
- Robinhood Chain RHC
- Optimism OP
- Scroll SCROLL
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-native-balance-changes/SOL/<address>"
| Parameter | Description |
|---|---|
cursorquery · string · optional | An opaque cursor from a previous response's nextCursor, for the next (older) page. It only pages the chain and wallet it was issued for; anything else is a 400. |
chainpath · string · required | SOL, RHC, ETH, OP or SCROLL; every other chain returns 400. |
addresspath · string · required | The wallet — on SOL a base58 address (case-sensitive); elsewhere 0x followed by 40 hexadecimal characters, any case. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
address | string | The wallet asked about — lower-cased on the EVM chains, exactly as given on SOL. |
changes | object[] | Newest first, one row per block (per transaction on SOL). A real empty array for a wallet whose balance never moved. |
changes[].blockNumber | integer | The block that moved the balance; on SOL, the slot. |
changes[].timestamp | integer | Unix SECONDS the block was produced at. |
changes[].deltaWei | string | What this change moved the balance by, in the native coin's smallest unit — WEI on the EVM chains, LAMPORTS on SOL — as a signed decimal string: negative when the wallet paid (a transfer out, or just the fee of a transaction it sent), positive when it received. Kept as a string: wei routinely exceeds what a JSON number holds exactly. |
changes[].balanceWei | string | The balance right after this change, in the same unit as deltaWei (wei; lamports on SOL), as a decimal string. Each row's balance minus the next (older) row's equals this row's deltaWei; that is checked on every page. |
changes[].transactionHash | string | null | The transaction behind the change — lower-cased on the EVM chains, the signature exactly as spelled on SOL; null when none is linked to it. |
nextCursor | string | null | Pass back as cursor for the next, older page. null on the last page. |
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