Wallet portfolio API chain coverage, listed vs probe-verified
Chains where each wallet-portfolio API actually returns balances for identical public test addresses, probed daily and published next to the vendor's own self-declared chain list.
This benchmark measures how many blockchains each wallet-portfolio API actually covers, not how many it claims. Every provider gets the same daily probe. one call to its own machine-readable chain catalog (the listed count) and a portfolio sweep over a shared set of public test addresses that hold balances on many chains, one per non-EVM chain plus one EVM address (the probe-verified count). A chain is verified when the API returns a balance worth more than $1 on it. The gap between the two numbers is the story. a chain in a marketing list is not the same as a chain where the balance indexer actually works. On the first full sweep of the shared address set (2026-07-06), CoinStats demonstrated 94 of its 151 listed chains, Mobula 27 of 79 and Zerion 17 of 65. Verified is an address-dependent lower bound. the test wallets do not hold assets on every chain in existence, so a provider can cover more chains than the probe observes, but every verified chain is one where the API demonstrably returned real balances today.
Methodology
We benchmark wallet-portfolio APIs on two numbers per provider, once per day. listed, the chain count the vendor self-declares through its own catalog endpoint, and probe-verified, the number of distinct chains where the vendor's portfolio API returned a balance above $1 for canonical public test addresses (a Binance-labeled EVM hot wallet plus fixed Solana and Bitcoin addresses, identical across providers). Both numbers are published side by side because self-declared lists can be inflated while verified is a conservative, address-dependent lower bound. The cohort is currently limited to providers with free, reproducible API access; expansions are welcome.
Frequently asked
Which portfolio API supports the most blockchains?
CoinStats currently leads at 134 probe-verified chains across 4 measured providers. Probe-verified means the provider's portfolio API returned a balance above $1 on that chain for identical public test addresses within the last daily cycle, so the leaderboard reflects chains where the balance indexer demonstrably works, not chains claimed in a catalog.
Why publish both a listed and a verified chain count?
Because they answer different questions. listed is what the vendor self-declares through its own catalog endpoint and can be inflated by chains where indexing is partial or broken. verified is what the probe actually observed and is a conservative, address-dependent lower bound. On the first full sweep of the shared address set, CoinStats listed 151 chains and verified 94, Mobula 79 and 27, Zerion 65 and 17. Reading both numbers together tells you how much weight a vendor's own list deserves.
What does the probed column add?
It splits the gap between listed and verified into its two honest parts. probed counts chains tested with an address that demonstrably holds a real balance per the chain's own explorer, where the API gave a definitive answer; a failed probe only counts when the target chain is in the vendor's own catalog, so nobody is debited for chains they never claimed. So verified/probed is the indexer's real success rate on testable chains, and listed minus probed is the residue where no funded public address could be sourced, about which the bench stays silent. A chain that is probed but not verified is a documented indexer gap, not a guess.
Why are Zapper, DeBank, Dune and Codex not in the cohort?
The cohort is limited to providers with free, reproducible API access so anyone can rerun the harness and get the same numbers. Zapper is excluded for now pending an API key. DeBank offers no free API tier. Codex gates its balances query behind the paid Growth plan. Dune's Sim API, the natural candidate for its wallet balances product, is sunsetting on August 1, 2026 per its own site banner, so it cannot be measured on an ongoing basis. Expansions are welcome; the harness already ships a Zapper source that activates as soon as a key is configured.
How is Moralis measured without a chain catalog endpoint?
Moralis exposes no machine-readable chain catalog and every wallet call takes an explicit chain list, so its listed count carries listed_source=probe: the chains its net-worth endpoint accepted this cycle out of a candidate list mirroring its own supported-chains documentation, plus Solana through its separate gateway. That makes Moralis's listed a floor on its acknowledged surface rather than a self-declared claim, and the label is published so the distinction stays visible.
Does a low verified count mean the provider is bad?
No. verified is a lower bound that depends on where the shared test addresses hold balances. A provider can support chains the probe never observes, and Zerion's probe is EVM-only because its portfolio endpoint takes a single EVM address. What a low count does tell you is how much of the vendor's self-declared list was demonstrable with real addresses through the public API today.
Why do the numbers move by a chain or two between days?
Three benign reasons. The test addresses are live wallets: a balance can cross the $1 threshold in either direction. Some vendors compute portfolios on demand and a cold-cache wallet can time out one cycle and answer the next; timeouts are recorded as errors, never as failures, so they cost at most one cycle of visibility. And vendor catalogs themselves drift as chains get added or retired. Structural changes look like steps that persist across cycles; single-cycle wiggles of one or two chains are noise by design.
How often are the counts refreshed?
Once per day. Probes spend paid API credits, so the cadence is deliberately conservative, roughly 150 spaced calls across the whole cohort per cycle. A failed cycle leaves the provider's previous gauge values in place and buckets the failure in portfolio_probe_errors_total, so a temporary outage never silently zeroes a provider's row.
Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/portfolio-chain-coverage