DEV Community

loi pham
loi pham

Posted on

A free crypto price API with no API key (prices from 22 exchanges)

I needed crypto prices for a side project and got tired of signing up for keys, reading pricing pages and hitting "upgrade to continue" walls. So I built the data layer for my own site, CoinXview, and opened part of it as a free public API.

No key, no sign-up. CORS is open, so it works straight from the browser.

What you get

  • Live prices for 1,200+ coins, volume-weighted across 22 exchanges (Binance, OKX, Bybit, Coinbase, Kraken, Upbit…). An exchange that drifts more than 5% from the others is dropped from the average.
  • 1h / 24h / 7d change, market cap, 24h volume, ATH and distance from ATH
  • OHLC candles: 1h, 4h, 1d, 1w
  • Global market numbers and a Fear & Greed index
  • A 0–100 risk score per coin, with its components

Limit: 60 requests per minute per IP. Field names are stable; new fields may be added, existing ones won't be renamed.

Prices

curl "https://coinxview.com/api/v1/coins?symbols=BTC,ETH"
Enter fullscreen mode Exit fullscreen mode
{
  "data": [
    {
      "rank": 1,
      "symbol": "BTC",
      "name": "Bitcoin",
      "price_usd": 77966,
      "change_1h": -0.15,
      "change_24h": -0.11,
      "change_7d": -2.98,
      "market_cap_usd": 1567662728412,
      "volume_24h_usd": 4687188887,
      "ath_usd": 126199.6,
      "ath_change_pct": -38.22,
      "exchanges": 22,
      "risk": 0,
      "risk_level": "low"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Without symbols you get the list by rank. Page through it with start and limit.

JavaScript

const res = await fetch("https://coinxview.com/api/v1/coins?symbols=BTC,ETH,SOL");
const { data } = await res.json();

for (const c of data) {
  console.log(`${c.symbol}: $${c.price_usd} (${c.change_24h}% 24h)`);
}
Enter fullscreen mode Exit fullscreen mode

Python

import requests

r = requests.get("https://coinxview.com/api/v1/coins", params={"symbols": "BTC,ETH,SOL"})
for c in r.json()["data"]:
    print(c["symbol"], c["price_usd"], f'{c["change_24h"]}% 24h')
Enter fullscreen mode Exit fullscreen mode

Candles

curl "https://coinxview.com/api/v1/ohlc/BTC?interval=1d&limit=30"
Enter fullscreen mode Exit fullscreen mode

Each candle is [time, open, high, low, close, volume_usd], with time in Unix seconds. interval is 1h, 4h, 1d or 1w. The response tells you which exchange the candles come from (source_exchange).

Risk score

This is the part I haven't seen in other free APIs. Every coin gets a 0–100 score, where higher means riskier. It is computed only from market data:

  • liquidity (30%)
  • volatility (25%)
  • number of exchange listings (15%)
  • price gap between exchanges (15%)
  • how much price history exists (15%)
  • +10 if the project lost $1M+ to a hack in the last 12 months
curl "https://coinxview.com/api/v1/risk/SOL"
Enter fullscreen mode Exit fullscreen mode

You get the total, a level (low, medium, high, very_high) and each component. That makes it easy to flag thin, freshly listed tokens in a bot or a dashboard. It is a data signal, not investment advice.

Market overview and Fear & Greed

curl "https://coinxview.com/api/v1/global"
curl "https://coinxview.com/api/v1/fear-greed"
Enter fullscreen mode Exit fullscreen mode

global returns total market cap, 24h volume, BTC / ETH dominance and the current Fear & Greed value. fear-greed adds the daily history.

Limits, honestly

  • 60 requests/min per IP. Cache on your side if you poll.
  • Free, best effort, no SLA. Good for side projects, bots, dashboards and learning. If you need guaranteed uptime, keep a fallback.
  • Prices are computed from exchange data, not copied from other aggregators.

Full docs: coinxview.com/free-crypto-api

If you build something with it, I'd like to see it, and tell me what endpoint you'd want next.

Top comments (0)