Where the numbers come from

Direct exchange feeds from 26 venues every 60 seconds for the price, outlier-filtered and medianed before publication. A six-hourly snapshot built from independent aggregators, cross-checked against each other and against the live feeds, is where supply, classification, hashrate and DEX volume come from. The exchange feeds lead; the snapshot is the reference the live quote is judged against, and the published price for coins no exchange carries.

Primary source — direct exchange feeds

The ranking's price for any coin that trades on a known venue comes from that venue's public ticker API, not from a second-hand aggregator. 26 exchanges contribute on the server-side panel: Binance, Coinbase, Gate.io, Bybit, Kraken, MEXC, KuCoin, OKX, HTX, Poloniex, Bitfinex, Bitstamp, Bitget, WhiteBIT, HitBTC, CoinEx, Crypto.com, Upbit, Bithumb, Bitvavo, Bitrue, Bitbank, DigiFinex, BitMart, and the two no-KYC long-tail venues AnonKYC and NonKYC. The browser additionally pulls Safetrade directly (its Cloudflare rule blocks datacentre ASNs) for a handful of PoW coins (Clore, PulseChain, Tari, Qubic, Grin, Ycash) that trade nowhere else.

How a live price is judged

An exchange quote carries no issuer. A ticker match alone would hand one asset's price to every namesake — and there are plenty: two rows answer to FRAX, two to CAP, several to WBTC. Four rules shape the published figure:

Coins no exchange in the panel carries (the long tail, newly-listed) take the snapshot's cross-checked figure directly — a stale number is a known error, a wrong number isn't.

Sources

WhatSourceRefresh
Live prices — primaryDirect feeds from 24 exchanges, outlier-filtered then medianed. Published to /api/v1/live.json with every confirming venue listed per coin.60 s
24h sparklineRolling 1,440-sample buffer written from the per-minute live feed, published to /api/v1/spark.json.60 s
Structural snapshot — supply, classification, cross-check, fallback priceTwo independent aggregators lead: CoinGecko and CoinPaprika, cross-checked against each other and against the live feeds. Where the two disagree on a figure, or a chain is missing from one, CoinMarketCap is kept as a reserve for the handful of coins neither of the first two carry. The snapshot sources supply and max supply where no exchange ticker can, holds the band each live quote has to sit inside (4× / ¼ of the snapshot), and publishes the price itself for coins no live venue carries. Low-volume tail rows are hidden from the default view and returned by search.every 6 h
On-chain supply (where available)Preferred over the aggregator figure where the chain can be read directly: BTC, BCH, LTC, XMR, XEC and GRS via Blockchair's UTXO stats, ETH via ultrasound.money's execution + beacon balances. Independent read, independent of any aggregator's bookkeeping, and the one figure that is actually auditable.every 60 s
DEX volumeDefiLlama for EVM / Solana / Cosmos / everything-else; Cauldron via the Riften indexer for BCH / CashTokens.every 6 h
Network hashrateBlockchair · WhatToMine.every 6 h
Exchange order booksDirect from each venue's public depth endpoint — the thinner side of the book within 2% of mid, summed across the venue's ten largest markets. Feeds the standing-liquidity signal in the CoinSpectrum Grade and the exchange profile. Where the full book isn't served, the BTC book's thinner side within 0.1% of mid stands in.every 15 min (BTC proxy) · 6 h (full)
Exchange reservesWallet-address files and liabilities endpoints published by the venues themselves — Binance, OKX, Bitget, Kraken, HTX, BitMart. The site reads each at its disclosed cadence and sizes it against the venue's claimed customer liabilities. Gaps and missing publications are shown as such on /reserves/.per venue
BCH CashTokensCashToken Markets for the token directory · Cauldron DEX via the Riften indexer for market data · ChainGraph UTXO aggregation for PUSD supply.every 6 h
Grade inputsThirteen criteria from the same inputs above — supply shape, consensus and node telemetry, developer-share research, order books, reserves. Each criterion and the ladder it uses is documented at /about/grades/; the per-coin result lives at /api/v1/grades.json.every 6 h
FX ratesCoinGecko · open.er-api for currencies it omits.every 6 h
Venue web rankTranco research list.every 6 h
ChartsCoinSpectrum's own stored daily history (stitched from Bitstamp, Bitfinex, Poloniex, Coinbase, Binance, Kraken) + intraday from the live exchange; CoinGecko fallback for coins without a direct feed.on open

Between refreshes only price moves. Supply, classification, hashrate and every structural figure come from the six-hourly snapshot; the live overlay replaces the price where a fresh quote passes the rules above.

Attribution the API carries

Every per-asset shape at /api/v1/assets/{slug}.json carries a price_source block naming WHERE the published price came from: method: "exchange" plus the list of confirming venues when at least one exchange carries the coin in band; method: "snapshot" when none does. For the freshest attribution, /api/v1/live.json rebuilds the same map every 60 seconds, with the picked-single reference venue included alongside the median.

What this costs

Refusing an out-of-band quote means showing a price up to six hours old. That is the trade the site makes deliberately: stale is a known error, wrong is not.

Figures kept by hand

A few numbers have no usable feed and are curated, updated occasionally, and labelled where they appear: broad money (M2) per currency, Bitcoin locked on layer-2 networks, and the circulating supply of assets no aggregator lists. They are indicative, not authoritative.