Wallet labels: source and trust
How an address gets a label: a consensus over several sources, what each source claimed, how to read the fields and why a thin answer is ambiguous.
An address label is a consensus over several sources (several third-party label providers and Vike's own heuristic classifier), and the API returns both the consensus and what each source said. Provenance is read from Ethereum only. The labels on /labels/batch and in the counterparty, compare, trace and token-holder results follow the requested chain (ethereum, bsc, base or hyperevm): each reads that chain's own label table, never Ethereum's for the same 20 bytes (hyperevm has labels for only a few hundred wallets). The fields are listed on the Wallet labels dataset; the routes are /labels/batch and /labels/{address}/provenance.
Sources and consensus
Two structural notes on the provenance response:
sources[]entries are not the same shape asconsensus. A source carries{source, label, entity, category}in the provider's own vocabulary — note"entity": "Binance"capitalised and"category": "Hot Wallet"— whileconsensuscarries the normalised{entity, wallet_type, cex_product, user_subtype, risk_flag, confidence}with"entity": "binance"lower-cased and"wallet_type": "cex". Join on the consensus fields; the source fields are free text.- The
sourcefield readsprovider_a, not a vendor name. The sources are anonymised on the wire, so you cannot use this route to tell which of the named providers made a claim — only how many distinct sources did, and what each said.
source_count counts raw claims, while consensus comes from our own classification, so
found: true with one source, or none, is still a successful lookup. Sources can disagree with the
consensus and with each other: on 2026-10-19 vitalik.eth drew "Vitalik Buterin" from one source
and "sushiswap" from another. An address genuinely unknown to the cascade (found: false) is the
case to test your handling against separately.
Coverage by chain
Each chain has its own label table, built separately, so how far a label can be trusted depends on the chain you ask about.
| Chain | Consensus labels | Per-source provenance | 30-day flow fields on /labels/batch |
|---|---|---|---|
ethereum | Its own table | Yes: the one chain the provenance route reads | From the chain's own flow data; null where it holds no row for the wallet, and for an address with no label (found: false) |
bsc | Its own table | No | null today: no flow data is held for bsc |
base | Its own table | No | From the chain's own flow data; null where it holds no row for the wallet, and for an address with no label (found: false) |
hyperevm | Its own table, with only a few hundred labelled wallets | No | From the chain's own flow data; null where it holds no row for the wallet, and for an address with no label (found: false) |
- Provenance always answers for Ethereum.
/labels/{address}/provenancetakes nochain; asked about an address you met on another chain, it reports what the sources say about the same 20 bytes on Ethereum, which can be another owner or nobody. - A miss on
hyperevmsays little. With so few labelled wallets there, an unlabelled sender on/first-funderor an emptyexchangeson/exchange-usageis not evidence that the address is unlabelled anywhere. The HyperCore system addresses (native HYPE bridge-ins, token mints) are typedsystemonce registered: protocol flow, not a trader. - A label is a consensus, not a certainty, on every chain:
/labels/batchreturns itsconfidence,/first-funderreturns alabel_confidencebeside each sender, and/exchange-usagereturnslabel_confidenceper exchange as counts of its addresses gradedhigh,mediumandunrated.
Reading the fields
Two field notes. risk_flag is the empty string rather than null on a clean
row, so a truthiness check is the right test and an is None check is not. And
wallet_type is a classification of behaviour, not of ownership: vitalik.eth is typed dex
by /labels/batch, which describes where its transfers land rather than what the address is — do not read
wallet_type as "this address is a DEX".
A thin answer is ambiguous
This route does not fail when a label source is unavailable. While one of its label sources is being refreshed the route returns fewer rows instead of a failure. A thin provenance list is therefore ambiguous between few sources know this address and a source is rebuilding — re-query before concluding an address is unlabelled.