PORTFOLIO API · GraphQL · Cross-chain

Wallet Portfolio API balances, PnL & history for any wallet, across chains

Stop calling ten RPCs per chain and stitching token lists, price feeds and trade logs into a portfolio. We've already indexed balances and trades across 40+ chains — so a wallet's full holdings, USD value, realized PnL and history come back in a single query, EVM and Solana together.

Powering portfolio & tax data forKoinly logoCrypto Tax Calculator logoBlockpit logoLukka logo
EVM.BalanceUpdatesTotal wallet value — every native and token holding, priced in USD, summed in one call.Docs
portfolio_value.graphqlCopy
query {
  EVM(network: eth) {
    BalanceUpdates(
      where: {BalanceUpdate: {Address:
        {is: "0xab5801a7d398351b8be11c439e05c5b3259aec9b"}}}
    ) {
      Currency { Symbol }
      balance: sum(of:
        BalanceUpdate_Amount)
    }
  }
}
responseSTREAMING
WalletHoldingsValue
200 · GraphQL · 180msgraphql.bitquery.io
Trusted by 40,000+ developers & teams like
Binance logoChainalysis logoTRM Labs logoNansen logo0x logoCoinMarketCap logoCoin Metrics logoBybit logoLukka logo3Commas logoNexo logoTether logo
40+
Chains supported
1PB+
Blockchain data indexed
10B+
API calls / month
99.9%
Production uptime
01
Forget calling ten RPCs per chain

A portfolio is more than a balance call.

Building a portfolio yourself means an archive node per chain, a token list you keep current, a price feed to join, and replaying every trade to compute PnL — repeated for each chain a wallet touched. We indexed balances and trades across every chain, so holdings, value, PnL and history come back in one query.

What you're doing
Build it yourself
Bitquery Portfolio API
Every token a wallet holds
Poll an RPC per token contract
Native + all tokens, one query
USD value of the portfolio
Join an external price feed
Priced at the row, on-chain
Realized & unrealized PnL
Replay every trade by hand
Computed from trade history
Value at a past date
Replay logs up to that block
Point-in-time, one query away
NFTs alongside tokens
A second indexer for ERC-721
Fungible + NFTs in one schema
Solana and EVM together
Two stacks, two schemas
Cross-chain in one call
02
Delivery channels

Four ways to get portfolio data — one schema underneath.

Design your query once in GraphQL, then read the exact same fields as GraphQL streams, Kafka, gRPC or a bulk cloud export. Pick the channel that fits your latency and volume — no second pipeline.

03
What's in a portfolio

Everything a wallet holds, in one view.

A single wallet resolves to its native balances, every token and NFT it holds, its realized and unrealized PnL, its full history and the same view across every chain — all from one schema. Filter by wallet, token, chain or time and read it as a query or a live stream.

What you getScopeDetails
ΞNative balancesETH · SOL · BNB · TRXThe gas-token balance for any wallet on every supported chain, summed from on-chain balance updates
$Token holdingsERC-20 · SPL · TRC-20Every fungible token a wallet holds with symbol, contract, amount and USD value — no per-token RPC calls
NfNFT holdingsERC-721 · ERC-1155Collections, token IDs and metadata for the NFTs a wallet holds, alongside its fungible balances
PLRealized & unrealized PnLPer token · per walletCost basis and profit per token computed from the wallet's full DEX trade history, realized and open
HiFull historyAny block · any datePoint-in-time portfolio value at any past block or timestamp for tax lots, audit and reconciliation
XcCross-chain in one call40+ chains · one schemaEVM and Solana holdings and value for the same wallet, combined — no per-chain RPC fan-out
+ staking positions, transfers and source / destination of funds across 40+ chains
05
Build it this weekend

The portfolio products people ship on us.

Each one is a filter on the same indexed balance and trade data — query GraphQL for dashboards and tax reports, or subscribe over Kafka or gRPC for live wallet tracking.

GraphQL

Portfolio dashboard

Pull every native and token balance for a wallet across chains in one query, value it in USD and render a live multi-chain portfolio view with NFTs included.

BalanceUpdates
  balance: sum(of: BalanceUpdate_Amount)
Read the docs
GraphQL

Crypto tax & PnL tool

Reconstruct a wallet's cost basis from its full DEX trade history with a USD price on every swap, then compute realized and unrealized PnL per token for tax lots.

DEXTradeByTokens {
  cost: sum(of: Trade_Side_AmountInUSD)
}
Read the docs
Kafka · gRPC

Wallet tracker & alerts

Stream balance updates for a watchlist of wallets and fire an alert the moment a holding moves — the feed behind copy-trading and whale-watch notifications.

subscribe BalanceUpdates
  where: { Address: "0x…" }
See Kafka streams

What teams say about our data

"We did a thorough search of the market for the best onchain data. Bitquery came out on top — and now powers all live prices across Nansen. We don't think of them as a vendor. They're a partner."

A
Alexander Karsten
Nansen
40+
Chains in one cross-chain portfolio call
Token + NFT
Holdings, value & PnL in one schema
Any date
Point-in-time portfolio value, one query

Bitquery does the hard work of parsing blockchain transaction data into a usable form so that we don't have to. We use their interface to diagnose issues with complex transactions and their analytics as a starting point for our own.

0x Protocol logo
Alex Knaggs
0x Protocol

They proved they had the technology to deliver sophisticated data solutions. We extended our support through the Binance X fellowship — building an open-source library of visualization widgets on their blockchain data.

Director, Binance X logo
Flora Sun
Director, Binance X

The complex raw data is available at different levels of detail and from different viewpoints — whether we need simple aggregated transfers or parameters for failed contract calls. The support is responsive, friendly and quick.

Backend Developer, Blockpit logo
Jan Dreske
Backend Developer, Blockpit

Partnering with Bitquery has been highly cost-effective — leveraging their established infrastructure rather than building our own let us rapidly expand our blockchain support and reach a much broader segment of on-chain users.

Co-Founder, Syla logo
Nick Christie
Co-Founder, Syla

Bitquery's products are very intuitive and easy to use. We currently use their products to obtain DEX-related trading and liquidity information, which saves us the manpower and tedious technical details required to develop our own system. Their excellent technical team deserves special praise; they provide near-24/7 support and resolve issues quickly. I greatly appreciate their products and work ethic.

Ourbit logo
Data Team
Ourbit

Bitquery provides the infrastructure we rely on every day. Fast, reliable, and comprehensive across the chains that matter to our business.

Webacy
Webacy
webacy.com
06
Pricing

Start free. Scale when you ship.

Query every blockchain on every plan — no chain is paywalled. Move to commercial when you need volume, SLAs and bulk datashares.

Developer
$0 / month
Free plan for developers or small projects.
  • All blockchains, all plans
  • 10 requests / minute
  • 2 streams for testing
  • GraphQL IDE access
Get started free
Most popular
Commercial
Custom
Tailored solutions for business and enterprise.
  • Scalable calls, no throttling
  • SQL, Cloud, Kafka & more
  • 24/7 engineering access
  • Dedicated onboarding & SLA
Talk to sales
Datashares
Custom
Bulk historical & real-time data on your cloud.
  • Snowflake, BigQuery, S3, Azure
  • No setup or infrastructure
  • Structured for AI agents & MCP
  • Audit data for custodians
Talk to sales
FAQ

Wallet portfolio questions, answered.

How do I get a wallet's full portfolio with Bitquery?
Query the BalanceUpdates dataset for any address and read sum(of: BalanceUpdate_Amount) per currency — native and token balances in one call. Sign up at ide.bitquery.io for an API key, then pull a wallet's holdings, value, PnL and history across 40+ chains from a single endpoint.
Can I compute realized and unrealized PnL?
Yes. Pull a wallet's full DEX trade history with DEXTradeByTokens — every swap carries a USD price, so you can reconstruct cost basis and compute realized PnL on closed positions and unrealized PnL on open holdings, per token and per wallet.
Does it cover NFTs as well as tokens?
Yes. The same BalanceUpdates schema returns ERC-721 and ERC-1155 holdings alongside fungible tokens — filter by Currency: {Fungible: false}to list a wallet's NFTs with collection and token ID next to its token balances.
Can I get a portfolio's value at a past date?
Yes. Add a Block.Time filter with a till date or a block height to read the exact holdings and value as of any point in time — ideal for tax lots, audits, reconciliation and backfilling portfolio charts.
Does it work across multiple chains in one call?
Yes. The same schema spans 40+ chains across EVM and Solana — Ethereum, BNB Chain, Base, Arbitrum, Polygon, Tron and Solana — so a wallet's holdings and value come back combined, with no per-chain RPC fan-out.
Do you support Solana wallet portfolios?
Yes. The Solana.BalanceUpdates dataset returns SOL and SPL-token balances for any Solana account over gRPC, WebSocket and GraphQL, summed from on-chain balance updates the same way as EVM chains.

Ship your portfolio product this week.

Free API key, balances, PnL and history on every chain, no node to run. Pull a wallet's full portfolio in your first call.

No credit card · 10K free points for your first month · All 40+ chains included