Wallets API

Which NFTs a wallet holds

Every NFT collection a wallet holds, with a per-collection count, or (given one collection's address) the token IDs held in it. SOL, ETH, BNB, BASE, STABLE.

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

Chains

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

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-nft-holdings/SOL/<address>"
Parameters
ParameterDescription
contract

query · string · optional

A collection address to drill into — the ERC-721 contract on an EVM chain, the collection's own address on Solana. Omit it to get every collection this wallet holds instead. With it, the response reports that ONE collection's specific token IDs rather than the general collection list — the two are never both fetched in the same request. Omitted, the answer stays under 32 KB up to about 250 collections held.
chain

path · string · required

SOL, ETH, BNB, BASE and STABLE; every other chain returns 400, and so does SOL on a deployment with no Solana node configured — the message says which of the two it is.
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 Which NFTs a wallet holds
FieldTypeDescription
collectionsobject[] | nullEvery collection this wallet holds one or more tokens from, counting only memberships the chain itself verifies. Up to 1,000 holdings are read per request. null only when contract was supplied — that mode answers a different, narrower question and does not also fetch this list.
collections[].contractAddressstring
collections[].namestring | null
collections[].symbolstring | null
collections[].quantitynumber | nullHow many distinct tokens of this collection the wallet holds. null when the answering source reports no distinct count (always on STABLE), never 0.
contractstring | nullEchoes the contract filter, or null when the request asked for every collection.
tokenIdsstring[] | nullThe identifiers of the specific tokens held within contract, always STRINGS: a numeric token id on an EVM chain (it can exceed a safe JSON integer), the asset's own address on Solana. Populated only when contract was supplied; null otherwise.

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