The same once-per-asset counting the site is built on, as JSON. No signup, no key, no query language — one file per thing, served straight from the CDN.
curl https://coin-spectrum.com/api/v1/assets/xrp.json
Live · 6,204 assets · 504 cryptocurrencies
Every endpoint is a plain JSON file. There are no query parameters and no auth on the free tier. Download the file, filter in the client. That is deliberate: it keeps the free tier truly free, and it keeps the surface small enough that a version bump is a real event.
https://coin-spectrum.com/api/v1/
Versioned from day one. Adding a field is a minor change and lands
silently; renaming, removing, or changing a shape opens v2/,
and v1/ is frozen for at least twelve months.
Schema version, counts, license, endpoint list. A one-shot health check for a consumer starting up.
Total market cap, per-category counts, chains, and the fiat exchange rates the site uses for currency conversion.
Every asset in one file — around 1.3 MB. Pull once, filter in memory; cheaper than one call per asset.
A single asset by its CoinSpectrum slug — e.g.
bitcoin, xrp, digibyte.
The slug matches the page URL at /assets/{slug}/.
The ranking — assets with their own blockchain and their own consensus mechanism. Nothing else.
Fiat-pegged tokens. Listed on the site but never added to the cryptocurrency total.
Wrapped, staked and pegged representations of assets that are already counted somewhere else.
Non-crypto tokens — utility, governance, and the long tail of things issued on someone else's chain.
Memecoins. Same shape, kept separate because they deserve their own bucket and their own explanation.
Slug + market cap only, pre-sorted descending. Small enough to be the ranking's cheapest paint.
Updated every 60 s. Per-coin aggregated USD
price — the median of every exchange in the 24-venue panel that quoted the coin
within the 0.25×..4× anchor band. Each asset carries every confirming venue
(sources_consulted), the venue count, the 6-hour snapshot anchor
(snapshot_usd) and picked_single for consumers that want
a single-venue read. The industry-standard pattern (CoinGecko, CoinPaprika and
CryptoCompare's CCIX all compute some flavour of outlier-filtered-then-averaged),
done on the box so a consumer doesn't have to re-run the picker.
Updated every 60 s. Compact companion to
/live.json: a single assets map of symbol →
[price_usd_now, price_usd_24h_ago]. Nothing else — no venue list, no
snapshot anchor, no volume — so a ticker tape, a widget or a browser price row can
decide what to show from two numbers per asset. Around 60 KB over the wire; the same
generated_at as /live.json, so a client that reads both
sees them agree. Powers CoinSpectrum's own
embeddable live tiles.
Updated every 60 s. Rolling 1,440-sample price
buffer for every quoted coin — one array per symbol, oldest at
[0], newest at [length-1], one slot per minute of the past
24 hours. Missing-tick slots are null (venue outage, briefly outside
the band) so a chart renders a line gap rather than a fake interpolation. Around 16
MB; cache it.
Chain jq for a pure Bash pipeline that names every
SHA-256 chain in the ranking:
curl -s https://coin-spectrum.com/api/v1/categories/cryptocurrencies.json \
| jq -r '.assets[] | select(.consensus == "SHA-256") | .name'
Every asset — cryptocurrency, stablecoin, wrapped, token, memecoin —
uses the same shape. Fields that don't apply stay null,
never omitted.
{
"slug": "bitcoin",
"symbol": "BTC",
"name": "Bitcoin",
"category": "cryptocurrency",
"consensus": "SHA-256",
"hashrate": 8.9e20,
"price_usd": 81449.12,
"price_source": {
"method": "exchange",
"aggregation": "median",
"confirmed_by": ["Binance","Bybit","OKX","Kraken","Bitstamp", /* ...22 total... */],
"count": 22,
"picked_single": { "venue": "Binance", "price_usd": 81445.52 },
"live_url": "/api/v1/live.json"
},
"change_pct_24h": null,
"volume_24h_usd": 37424313548,
"market_cap_usd": 1553734997147,
"rank": 1,
"supply": { "circulating": 20076428, "max": 21000000 },
"ledger": "overlay",
"nature": "commodity",
"nature_basis": "Named a digital commodity in the joint SEC-CFTC interpretation.",
"nature_tags": ["commodity"],
"chains": null,
"image": "https://..."
}
price_source.method is "exchange" when at least one
exchange in the 24-venue panel quoted the coin within the 0.25×..4× anchor band
at the build; "snapshot" when none did (long-tail coin, newly listed,
CMC-only — the second-hand price in price_usd comes from the
6-hourly aggregated snapshot). About 38% of assets are exchange-sourced and 62%
are snapshot-only at any given build. change_pct_24h stays
null until the provider pipeline carries 24h change through — the field
is in the shape so adding the data later doesn't break clients.
Two cadences, two publishers:
/api/v1/* files — every 6 hours. The
heavy pipeline runs build-data.mjs + pages.mjs + api.mjs
to rebuild the whole tree. Carries supply, classification, hashrate, nature, DEX
volume and the snapshot price. meta.json's
update_cadence_minutes: 360 is this cadence./api/v1/live.json
and /api/v1/spark.json are rebuilt by
coinspectrum-live.service on a 60-second timer, writing a
median-aggregated price per coin and appending to a 24-hour sparkline buffer.
For comparison, CoinGecko caches most public endpoints for one to five minutes and its
paid price endpoint for 20 to 30 seconds; exchanges themselves stream in real time.Every response includes a generated_at ISO-8601 timestamp; a caller
who wants the freshest reading should read that field rather than trust HTTP dates.
For near-real-time price in the per-asset shape, pull the asset's
price_source.live_url once per minute instead of refetching the 6-hourly
file.
The free tier has no per-key limit — every response is a static file behind a CDN, so throughput is effectively bounded by the CDN itself. Please cache. Aggressive polling of a file that only changes every 60 s (live overlay) or every 6 h (snapshot) is wasteful for both sides.
Not open yet: no payment is taken and no paid key is issued. The free tier above is the whole API today; test it first. When the paid tiers open they will add higher throughput, historical snapshots, webhooks and per-key identification. Prices will be quoted in USD and invoices settled in Bitcoin Cash only, locked at the spot rate for fifteen minutes.
The Bitcoin whitepaper opens by naming the problem the system is for: "commerce on the Internet", through "completely non-reversible transactions", with fees low enough that "small casual transactions" are possible. The paper is explicit that the cost of a mediator ruling disputes is what rules microtransactions out, and that non-reversibility is the alternative. The abstract follows: "a purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution." Payments, direct, with fees low enough for the small end — the design brief in one line.
BCH kept those properties: block space sized for everyday transactions, sub-cent on-chain fees, no replace-by-fee by default so an unconfirmed payment is a payment, and a chain of small transactions is exactly what the paper's double-spending analysis in Section 11 is built on. BTC's current form has moved its answer: on-chain fees above a cent, replace-by-fee by default, Lightning for everyday payments, and the most visible proponents describe BTC as "digital gold" or a store of value rather than a payment network. That is a legitimate choice; it is also, by its proponents' own words, no longer the whitepaper's answer.
CoinSpectrum uses BCH for payments for the same reason the whitepaper did: it is the system the paper describes. Other coins that match the same design — non-reversible, cheap enough for small payments, confirmed quickly — may be added as payment options later. The payment choice is independent of the CoinSpectrum Grade: BCH's grade comes from the published criteria, not from the API happening to settle in it.
$5 / mo
~0.015 BCH
$29 / mo
~0.09 BCH
$149 / mo
~0.45 BCH
Planned: annual plans pay ten monthly invoices in one BCH transaction and get two months free. No card processor, no chargebacks, no KYC — payment will be a single on-chain transaction and the API key will activate on the first confirmation.
Licensed under
CC BY 4.0.
Use the data anywhere, commercial use included. In return, please link
back to coin-spectrum.com — a footer credit or a note in
your project's README is enough. The API exists to be reused; a link
is how it stays sustainable.
The data is derived from public sources — see methodology. It is provided as-is, without warranty of any kind. If you use it to decide whether to spend money, that is entirely your call and entirely your risk.
Questions, bug reports, or a request for an endpoint that isn't here
yet: open an issue or write to api@coin-spectrum.com.
The /api/v1/ tier is free and unmetered — every file is served straight from
the CDN, no signup, no key. Paid tiers — higher throughput, historical endpoints and per-key
limits, priced in BCH — are planned and not open yet.
Not for /api/v1/. Files are served without authentication and without
rate-limiting beyond the CDN's own DDoS protection. Paid tiers issue a key for the proxy
endpoint.
Two cadences. Live prices — /api/v1/live.json and /live.json —
every 60 seconds. The structured files — rank, family, supply, classification, grades —
every six hours (update_cadence_minutes: 360 in meta.json). Every
response carries a generated_at ISO-8601 timestamp so a consumer can decide
whether to re-fetch. Use the live feed for prices and the structured files for everything
else.
Use the data anywhere — a chart, a screener, an app, a research paper, a commercial
product. The only requirement is credit somewhere reasonable: a byline, a data-source
line, or a link to coin-spectrum.com. Commercial use is included.
/api/v1/assets/xrp.json and /assets/xrp/?Same data, two consumers. The JSON is for machines; the HTML page is for readers. Both use the same canonical slug so the two URLs shape-match — one can be derived from the other with a trivial string replacement.
v1/ is frozen for at least twelve months from launch. Adding a field is a
minor change and lands silently; renaming, removing, or reshaping a field opens
v2/, and v1/ keeps serving unchanged until deprecation is
announced.