Wallets API

Every token a wallet holds

The complete token list of a wallet — fungible tokens and NFTs, with raw amounts and decimals, unpriced — paged 100 at a time. Fungible tokens only on STABLE.

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

What it returns

The complete list of tokens this wallet holds — fungible tokens and NFTs, including tokens with no market — 100 per page: ERC-20 tokens first, then the other standards alphabetically, each by token address and token id. Amounts are raw and unpriced, and the native coin is not included. total counts every holding; ask nextPage until it is null. A wallet with thousands of tokens can take over 30 seconds the first time and its later pages answer at once; a few of the very largest (burn addresses) cannot be listed at all and fail rather than answer a partial list. A wallet that holds nothing answers an empty list. On STABLE the list carries fungible (ERC-20) tokens only, no NFT; its USDT0 amount is read from the chain itself, gas payments included. For a priced portfolio on the trading chains, see wallet-portfolio.

Chains

  • Ethereum ETH
  • Stable STABLE
  • 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-token-holdings/ETH/<address>"
Parameters
ParameterDescription
page

query · integer · optional

The page, from 1 (at most 1000). A page past the last answers an empty list.
chain

path · string · required

RHC, ETH, OP, SCROLL or STABLE; every other chain returns 400. On STABLE the list carries fungible (ERC-20) tokens only.
address

path · string · required

The wallet — 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.

Response fields of Every token a wallet holds
FieldTypeDescription
addressstringThe wallet asked about, lower-cased.
totalintegerHow many holdings the wallet has, across every page.
pageintegerThe page served.
holdingsobject[]This page of holdings. A real empty array for a wallet that holds nothing.
holdings[].tokenstringThe token contract, lower-cased.
holdings[].standardstringThe token standard: ERC-20, ERC-721, ERC-1155, ERC-404, ERC-7984 and so on.
holdings[].namestring | nullThe token's name; null when it has none.
holdings[].symbolstring | nullThe token's symbol; null when it has none.
holdings[].decimalsinteger | nullDecimals to apply to balanceRaw; null when the token declares none (NFTs, mostly).
holdings[].tokenIdstring | nullFor ERC-1155, the id held — one row per id, as a decimal string. null on every other standard: an ERC-721 row is the COUNT of that collection held, not one item.
holdings[].balanceRawstring | nullThe amount held, raw (decimals NOT applied), as a decimal string. null where the balance is not public — ERC-7984 confidential tokens.
nextPageinteger | nullThe next page to ask for; 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