Skip to main content
This endpoint requires a Growth or Enterprise plan. Learn more.

Returns

BalancesResponse
BalancesResponse!
See BalancesResponse

Arguments

input
BalancesInput!
required
See BalancesInput

Example

Test this query in the Explorer →
{
  balances(
    input: {walletAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", networks: [1], removeScams: true, limit: 10}
  ) {
    items {
      tokenId
      shiftedBalance
      balanceUsd
      tokenPriceUsd
      token {
        name
        symbol
        info {
          imageSmallUrl
        }
      }
    }
    cursor
  }
}
For EVM wallets, native balances are only available on networks with traces enabled.

EVM networks with traces enabled:
Ethereum
BNB Chain (BSC)
Unichain
Polygon
Base
Story
Meld
Yominet
Ham
Berachain
Avalanche
Sanko
Arbitrum
Superposition
Optimism
Abstract
Monad

Balances are also unavailable on Sui (Network 101).

Usage Guidelines

  • Use walletAddress with the wallet address (ENS names are not supported)
  • Specify networks array to filter balances to specific chains (e.g., [1] for Ethereum)
  • Use tokens array to request specific token balances (max 200 tokens)
  • Use removeScams: true to filter out likely scam and dust tokens. This removes tokens we’ve manually flagged (isScam: true), and for unlabeled tokens it applies a lightweight heuristic that drops ones with no recent trading activity and negligible liquidity. See the troubleshooting note below for the details and caveats.
  • Use the cursor parameter for pagination through large token holdings

Troubleshooting Tips

Native balances (ETH, BNB, etc.) are only available on EVM networks with traces enabled. Check the list above to see if your network is supported. For Solana, native SOL balances are available.
balanceUsd may be null if we don’t have price data for that token. This can happen with very new or low-liquidity tokens. The raw balance and shiftedBalance fields will still be available.
Use the tokens parameter with an array of token IDs (address:networkId) or addresses. When using addresses only, you must also provide the networks parameter. Max 200 tokens per request.
No, balances queries a single wallet. To get balances for multiple wallets, make separate requests for each wallet address.
Wallets accumulate scam and junk tokens over time, often as unsolicited airdrops. Setting removeScams: true may filter some of these out, but it will not catch everything. It does two things. First, it removes tokens we’ve manually flagged as a scam (isScam: true), which we do sparingly. Second, for tokens we haven’t labeled, it applies a lightweight heuristic that drops ones with no trading activity in the last 24 hours and negligible liquidity. If those activity and liquidity metrics aren’t readily available for a token at query time, we keep it rather than risk hiding a real holding, so plenty of low-quality tokens may still need client-side filtering.We intentionally keep this filtering conservative. Many tokens may look like scams, or may become scams, but can still be sellable by a user. If we hid them too aggressively, a user could lose the ability to see and sell a token that was flagged in error. For stricter filtering we recommend filtering client-side on metrics such as liquidity.
Under normal conditions, balances typically reflect a new transaction within a second or two after it finalizes. This is a general expectation rather than a guaranteed number, and we don’t currently publish a formal standard or SLA for it.Timing varies by network. Solana is the most common network for this query, where updates generally land within about 2 seconds of confirmation. Other networks may take longer. Response times can also be slower during periods of heavy balances indexing.Our team is alerted to balance delays and addresses them promptly. If you consistently see delays beyond a few seconds (for example, more than 5 seconds on Solana), reach out to support.
  • Wallets: Analyze wallet performance, discover top traders, and build portfolio views