---
title: "Get NFT balance of a wallet address"
method: GET
path: "/v4/data/nft/balances"
tags: ["NFT API"]
---

# Get NFT balance of a wallet address

`GET /v4/data/nft/balances`

/v4/data/nft/balances

**50 credits per API call**

Get all NFTs that a blockchain address holds. The NFTs are returned grouped by the smart contracts they were minted on.

This API is supported for the following blockchains:

*   Ethereum - ethereum-mainnet / ethereum-sepolia
*   Solana - solana-mainnet / solana-devnet
*   Base - base-mainnet / base-sepolia
*   Arbitrum - arb-one-mainnet / arb-testnet
*   BNB (Binance) Smart Chain - bsc-mainnet / bsc-testnet
*   Polygon - polygon-mainnet / polygon-amoy
*   Optimism - optimism-mainnet / optimism-testnet
*   Berachain - berachain-mainnet
*   Unichain - unichain-mainnet / unichain-sepolia
*   Monad - monad-testnet
*   Celo - celo-mainnet / celo-testnet
*   Algorand - algorand-mainnet-algod / algorand-testnet-algod
*   Avalanche - avax-mainnet / avax-testnet
*   Gnosis - gno-mainnet / gno-testnet
*   zkSync - zksync-mainnet / zksync-testnet
*   Rootstock - rsk-mainnet / rsk-testnet
*   Ethereum Classic - ethereum-classic-mainnet / ethereum-classic-testnet
*   Lisk - lisk-mainnet / lisk-testnet

On Solana and Algorand, if a blockchain address holds fewer than 50 NFTs, the API also returns each NFT's metadata. If the metadata is not returned, you can obtain it using the [API for getting NFT metadata](https://apidoc.tatum.io/tag/NFT-\(ERC-721-or-compatible\)/#operation/NftGetMetadataErc721).

## Query parameters

- `chain` 'ethereum-mainnet' | 'ethereum-sepolia' | 'solana-mainnet' | 'solana-devnet' | 'base-mainnet' | 'base-sepolia' | 'arb-one-mainnet' | 'arb-testnet' | 'bsc-mainnet' | 'bsc-testnet' | 'polygon-mainnet' | 'polygon-amoy' | 'optimism-mainnet' | 'optimism-testnet' | 'berachain-mainnet' | 'unichain-mainnet' | 'unichain-sepolia' | 'monad-testnet' | 'celo-mainnet' | 'celo-testnet' | 'algorand-mainnet-algod' | 'algorand-testnet-algod' | 'avax-mainnet' | 'avax-testnet' | 'gno-mainnet' | 'gno-testnet' | 'zksync-mainnet' | 'zksync-testnet' | 'rsk-mainnet' | 'rsk-testnet' | 'ethereum-classic-mainnet' | 'ethereum-classic-testnet' | 'lisk-mainnet' | 'lisk-testnet', required
- `address` string, required

## Response `200`

OK

- NftBalanceByAddressErc721[]
  - `contractAddress` string, required — On Algorand, this is the asset ID (the ID of the NFT); on the other blockchains, this is the address of the NFT smart contract.
  - `balances` string[], required — On Algorand, this is either an array of "1" to indicate that the NFTs with the specified IDs exist, or an array with the number of NFT fractions if the NFTs are <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional</a>; on the other blockchains, this is an array of the IDs of the NFTs.
  - `metadata` NftTokenByAddressErc721TokenMetadata[], required
    - `tokenId` string, uint256 — (EVM-based blockchains only) The ID of the NFT owned by this address
    - `url` string — The URL pointing to the NFT metadata; the URL may not be present, and if it is not returned, you can get it by calling the NFT Contract.tokenURI() method
    - `metadata` NftTokenByAddressErc721Metadata — The metadata scheme obtained from the metadata URL; the scheme may not be present, and if it is not returned, you can get it using the <a href="#operation/NftGetMetadataErc721">NFT metadata API</a>
  - `supply` number — (Algorand only) The number of fractions in the NFT if the NFT is <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional</a>
  - `decimals` number — (Algorand only) The number of decimal places in an NFT fraction if the NFT is <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional</a>

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/revisions/8622ee4b8fae/schema)
