Data API
Everything the site checks, as JSON: tokens and where the market lists disagree, real vs paper cap, owner powers, unlocks, leverage, exchanges and how much of their volume their books carry, market gauges and on-chain signals. Every answer says when its data was read.
Keys
Every endpoint needs a key, sent in a header: Authorization: Bearer <key>, or X-API-Key: <key>. A key in the URL is refused. Make keys in your account, signing in with a passkey or GitHub: your account.
curl -H "Authorization: Bearer $CCS_KEY" \
https://cryptocoinstat.io/api/v1/tokens/uniswapLimits
Free: 30 a minute, 10,000 a day
Partner: 300 a minute, 300,000 a day
Counted per key over fixed windows. Each answer carries RateLimit and RateLimit-Policy headers; past the limit you get 429 with Retry-After.
OpenAPI 3.1 document
Import it into Postman, Insomnia or a client generator.
Answers: { data, meta: { publishedAt, readAt, page } }, with an ETag: send it back in If-None-Match and an unchanged answer is a 304. Errors are RFC 9457 problems (application/problem+json): { type, title, status, detail, code, requestId }.
The old API
The old cryptocoinstat.io API was retired; its paths answer 410. Ids from it (xrp, polygon…) still resolve: /api/v1/tokens/resolve?q=xrp.
Endpoints
GET/api/v1/tokens
List tokens
Every token CoinGecko and CoinMarketCap list, in a published order, with what we could check about each. Sort by rank, market cap, volume or price change (sort=change24h&dir=desc for gainers, dir=asc for losers); filter by a flag, a category or a search; page with offset and limit.
sortqueryOrder by: rank: market cap rank; name; price; mcap: market cap; code: commits by people over 90 days; fees: fees over 30 days; gap: how far CoinGecko and CoinMarketCap differ on market cap; volume: 24h volume; change1h, change24h, change7d: price change (desc for gainers, asc for losers)dirqueryasc: smallest first (rank 1 first); desc: largest first. Tokens without the value come last either wayqqueryName or ticker containsflagqueryOnly tokens carrying this signal. all: every token; code: commits by people in its public code over the last 90 days; fees: users paid fees over the last 30 days (DefiLlama); gaps: CoinGecko and CoinMarketCap differ on market cap by 5% or more; thin: real cap under half the market cap: order books too shallow for its size; unbacked: under half the volume exchanges report is carried by their order books (on $1M+ a day); unlocks: the next 30 days of vesting are worth more than a day of trading; heated: open interest at 30%+ of market cap, or funding beyond ±0.05% per 8h; mint: its contract’s owner can mint; whales: ten wallets hold half the supply; fakes: copies under its ticker whose owner can take or freeze tokenscategoryqueryA category slug from /categories, e.g. defi, nft, stablecoinsidsqueryUp to 100 token ids, comma separated: answers those tokens in that order, ignoring sort, filters and pagingcurrencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /ratesoffsetqueryHow many matching items to skip; the next page’s path is in meta.page.nextlimitqueryHow many to return, 1 to 100
GET/api/v1/tokens/index
Every token, compact
Id, ticker, name, rank and logo of every token in one answer, by rank: for search and autocomplete.
GET/api/v1/tokens/resolve
Find the token a name, ticker or old id stands for
Accepts our id, an id from the old cryptocoinstat.io API (xrp, polygon…), a ticker or a name; answers the token and how it was matched.
qqueryrequiredOur id, an old cryptocoinstat.io id, a ticker or a namecurrencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
GET/api/v1/tokens/trending
Most searched
The tokens most searched on CoinGecko over the last day, most first; read hourly.
currencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
GET/api/v1/tokens/new
Newly listed
Tokens we saw listed for the first time, newest first. Kept since 2026-11; older tokens aren’t on it.
currencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /ratesoffsetqueryHow many matching items to skip; the next page’s path is in meta.page.nextlimitqueryHow many to return, 1 to 100
GET/api/v1/tokens/popular
Most looked at
The tokens most looked at on cryptocoinstat.io over the last 7 days: page views by people and API lookups. Counted per day, with no visitor data.
currencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
GET/api/v1/tokens/{id}
One token, everything we read
Market figures from both lists and where they disagree, the day’s range, all-time high and low, max supply, ICO return, price ranges over 7, 30, 90 days and 52 weeks, links (sites, explorers, forums, chats, code, social), the project’s code and usage, and for the top 1000 what the chain and futures say: supply, owner powers, holders, unlocks, real vs paper cap, how much volume the books carry, leverage, supply on each chain, copies, and its latest signals.
idpathrequiredToken id, e.g. bitcoincurrencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
GET/api/v1/tokens/{id}/history
Price over a period, fees and weekly commits
Price over the last `days`: hourly for up to 7 days (top 1000), daily up to a year (top 1000 and every token we read in full). Daily fees from DefiLlama and commits by week.
idpathrequiredToken id, e.g. bitcoindaysqueryHow many days back, 1 to 365: hourly points up to 7, daily beyondcurrencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
GET/api/v1/rates
Currency rates
Fiat, crypto and commodity rates against the US dollar, from CoinGecko every 3 hours. Any code here works as ?currency= on token answers.
GET/api/v1/exchanges
Exchanges by reported volume
Every exchange seen across the top 1000’s markets: what it reports, what its order books could carry, on how many tokens its volume runs past its book, and how its trades tested.
offsetqueryHow many matching items to skip; the next page’s path is in meta.page.nextlimitqueryHow many to return, 1 to 100
GET/api/v1/exchanges/{slug}
One exchange and its largest markets
The summary plus its 50 largest markets, each with depth, turnover against the norm and the trade test.
slugpathrequiredThe slug a list returned, e.g. binance or defi
GET/api/v1/categories
Categories
Sectors, chains, venues and backers, with their size. Their tokens: /tokens?category={slug}.
GET/api/v1/categories/{slug}
One category
Its size, how much of it we read, live code, fees and where the lists disagree.
slugpathrequiredThe slug a list returned, e.g. binance or defi
GET/api/v1/market
Market gauges
Risk appetite and its parts, altcoin season, leverage, real volume, liquidations, unlocks ahead and search interest, with a month of daily history.
GET/api/v1/signals
Signals, newest first
The last month of on-chain signals for the top 1000, each sized against depth and a day of trading.
kindqueryOnly this kind: unlock, mint, bridge, admin, whale, drain, fake (see the Signal schema)tokenqueryOnly this token’s signals (token id)offsetqueryHow many matching items to skip; the next page’s path is in meta.page.nextlimitqueryHow many to return, 1 to 100
GET/api/v1/contracts/{address}
Is this address the real token?
A token’s own contract, a listed deployment or wrapper, or a copy under its ticker that no list names.
addresspathrequiredEVM 0x… or Solana address
GET/api/v1/watchlist
Your watchlist
The tokens the key’s account watches, newest first, with their list rows.
currencyqueryCurrency code for money figures, e.g. EUR or BTC; USD when absent. Codes: /rates
PUT/api/v1/watchlist/{id}
Watch a token
Adds the token to the key’s account’s watchlist; adding it again changes nothing.
idpathrequiredToken id
DELETE/api/v1/watchlist/{id}
Stop watching a token
Removes the token from the key’s account’s watchlist.
idpathrequiredToken id
Errors
Branch on code; show detail; quote requestId (also the X-Request-Id header) when you write to us. A 400 lists every bad parameter in invalidParams.
not_found404- Not found: no such endpoint, token, exchange or category (404)
bad_request400- A parameter or body is not valid: a parameter or body is missing, malformed or out of range (400); see invalidParams
gone410- This path was retired: a path of the retired old API (410)
rate_limited429- Over the limit: over the key’s per-minute or per-day limit; see Retry-After (429)
internal500- Something went wrong on our side: our fault; it was logged under requestId (500)
Changelog
v1 only grows: new fields, endpoints, parameters and enum values may appear at any time, so tolerate unknown ones. Nothing is removed or changes type without a deprecation first: the answers carry Deprecation and Sunset headers, and the sunset is at least six months later. Breaking changes go to /api/v2.
1.0.0 2026-11-05
- Added Tokens: list with sorting, filters, batches by id and paging; one token’s full record; price history; resolving a name, ticker or an id from the old API.
- Added Lists: the compact index, most searched, newly listed, most looked at, currency rates; money in any listed currency.
- Added Exchanges, categories, market gauges, on-chain signals and the contract check.
- Added Watchlist per account.
- Added Keys and plan limits with RateLimit headers; ETag and 304; X-Request-Id; errors as RFC 9457 problems.