Free crypto price API
Live prices for 1,200+ coins aggregated from 22 exchanges, CoinXview Risk Score, global market data, our Fear & Greed index and OHLC candles. JSON over HTTPS, free for personal and commercial use.
- No API key
- 60 req/min
- CORS enabled
https://coinxview.com/api/v1Quick start
No sign-up. Paste this in a terminal, or press Run to call the live API from your browser.
curl "https://coinxview.com/api/v1/coins?symbols=BTC,ETH"Endpoints
GET/api/v1/coins
Coins ranked by market cap. Stablecoins and wrapped coins are included and flagged (stablecoin, wrapped). Each row has risk and risk_level (low / medium / high / very_high).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
start | integer | 1 | Rank to start from. |
limit | integer | 100 | Number of coins, up to 500. |
symbols | string | — | Comma-separated symbols, up to 50 (e.g. BTC,ETH). Returns only these coins. |
curl "https://coinxview.com/api/v1/coins?symbols=BTC,ETH"const r = await fetch("https://coinxview.com/api/v1/coins?symbols=BTC,ETH");
const { data } = await r.json();
data.forEach(c => console.log(c.symbol, c.price_usd, c.change_24h));import requests
r = requests.get("https://coinxview.com/api/v1/coins", params={"symbols": "BTC,ETH"}, timeout=10)
for c in r.json()["data"]:
print(c["symbol"], c["price_usd"], c["change_24h"], c["risk_level"])Example response
{
"updated": 1793635113383,
"total": 1,
"start": 1,
"limit": 1,
"data": [
{
"rank": 1,
"symbol": "BTC",
"name": "Bitcoin",
"price_usd": 77415.9,
"change_1h": -0.57,
"change_24h": -0.73,
"change_7d": -3.71,
"market_cap_usd": 1556609640075,
"volume_24h_usd": 5889754963,
"circulating_supply": 20107097,
"ath_usd": 126199.6,
"ath_change_pct": -38.66,
"exchanges": 22,
"stablecoin": false,
"wrapped": false,
"url": "https://coinxview.com/coin/BTC",
"risk": 1,
"risk_level": "low"
}
]
}GET/api/v1/coins/{symbol}
One coin with 24h high / low, 30-day change, supply, risk score and its price and volume share on each exchange (markets).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
symbol | string | required | Coin symbol, e.g. ETH. Unknown symbol → 404. |
curl "https://coinxview.com/api/v1/coins/ETH"const { data: eth } = await (await fetch("https://coinxview.com/api/v1/coins/ETH")).json();
console.log(eth.price_usd, eth.high_24h_usd, eth.low_24h_usd);
eth.markets.slice(0, 3).forEach(m => console.log(m.exchange, m.price_usd));import requests
eth = requests.get("https://coinxview.com/api/v1/coins/ETH", timeout=10).json()["data"]
print(eth["price_usd"], eth["high_24h_usd"], eth["low_24h_usd"])
for m in eth["markets"][:3]:
print(m["exchange"], m["price_usd"], m["share_pct"])Example response
{
"updated": 1793635113440,
"data": {
"rank": 2,
"symbol": "ETH",
"name": "Ethereum",
"price_usd": 2271.41,
"change_24h": 0.21,
"change_7d": -2.41,
"change_30d": -15.3,
"high_24h_usd": 2317.84,
"low_24h_usd": 2247.84,
"market_cap_usd": 277349526233,
"circulating_supply": 122104582,
"total_supply": 122104582,
"max_supply": null,
"risk": 1,
"risk_level": "low",
"markets": [
{
"exchange": "Binance",
"quote": "USDT",
"price_usd": 2272.19,
"volume_24h_usd": 695803396,
"share_pct": 21.01
},
…
]
}
}GET/api/v1/risk/{symbol}
CoinXview Risk Score (0–100, higher = riskier) with its 5 weighted components, hack penalty and the method text. Embeddable badge: /badge/risk/{symbol}.svg.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
symbol | string | required | Coin symbol, e.g. SOL. |
curl "https://coinxview.com/api/v1/risk/SOL"const { data: r } = await (await fetch("https://coinxview.com/api/v1/risk/SOL")).json();
console.log(r.risk, r.risk_level);
r.components.forEach(c => console.log(c.name, c.score));import requests
r = requests.get("https://coinxview.com/api/v1/risk/SOL", timeout=10).json()["data"]
print(r["risk"], r["risk_level"])
for c in r["components"]:
print(c["name"], c["weight_pct"], c["score"])Example response
{
"updated": 1793635113541,
"data": {
"symbol": "SOL",
"name": "Solana",
"risk": 5,
"risk_level": "low",
"partial": false,
"components": [
{"key":"liq","name":"Liquidity","weight_pct":30,"score":0},
{"key":"vol","name":"Volatility","weight_pct":25,"score":7},
{"key":"ex","name":"Exchange listings","weight_pct":15,"score":0},
{
"key": "spread",
"name": "Cross-exchange price gap",
"weight_pct": 15,
"score": 23
},
{"key":"age","name":"Price history depth","weight_pct":15,"score":0}
],
"hack_penalty": 0,
"method": "CoinXview Risk Score is 0-100, higher = riskier…",
"url": "https://coinxview.com/coin/SOL"
}
}GET/api/v1/global
Total market cap, 24h volume, BTC / ETH dominance, number of coins and exchanges, current Fear & Greed.
Parameters
No parameters.
curl "https://coinxview.com/api/v1/global"const { data: g } = await (await fetch("https://coinxview.com/api/v1/global")).json();
console.log(g.total_market_cap_usd, g.btc_dominance_pct, g.fear_greed.value);import requests
g = requests.get("https://coinxview.com/api/v1/global", timeout=10).json()["data"]
print(g["total_market_cap_usd"], g["btc_dominance_pct"], g["fear_greed"]["value"])Example response
{
"updated": 1793635113598,
"data": {
"coins": 1257,
"exchanges": 22,
"total_market_cap_usd": 2665221580652,
"total_volume_24h_usd": 19613009052,
"btc_dominance_pct": 58.4,
"eth_dominance_pct": 10.41,
"fear_greed": {"value":46,"label":"Neutral"}
}
}GET/api/v1/fear-greed
Our own Fear & Greed index (0–100): current value and up to 90 days of daily history (time in unix seconds).
Parameters
No parameters.
curl "https://coinxview.com/api/v1/fear-greed"const fg = await (await fetch("https://coinxview.com/api/v1/fear-greed")).json();
console.log(fg.now.value, fg.now.label, fg.history.length);import requests
fg = requests.get("https://coinxview.com/api/v1/fear-greed", timeout=10).json()
print(fg["now"]["value"], fg["now"]["label"], len(fg["history"]))Example response
{
"updated": 1793635113632,
"now": {"value":46,"label":"Neutral","time":1793634806},
"history": [{"time":1788912000,"value":54},{"time":1788998400,"value":42},…]
}GET/api/v1/ohlc/{symbol}
OHLC candles from the exchange with the most volume for that coin (source_exchange). Each row: [time (unix s), open, high, low, close, quote volume].
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
symbol | string | required | Coin symbol, e.g. BTC. |
interval | string | 1d | 1h · 4h · 1d · 1w |
limit | integer | 1000 | Newest N candles, 1–1000. |
curl "https://coinxview.com/api/v1/ohlc/BTC?interval=1d&limit=2"const r = await (await fetch("https://coinxview.com/api/v1/ohlc/BTC?interval=1d&limit=30")).json();
r.data.forEach(([t, o, h, l, c]) => console.log(new Date(t * 1000), c));import requests
r = requests.get("https://coinxview.com/api/v1/ohlc/BTC", params={"interval": "1d", "limit": 30}, timeout=10).json()
for t, o, h, l, c, v in r["data"]:
print(t, c)Example response
{
"symbol": "BTC",
"interval": "1d",
"source_exchange": "Binance",
"data": [
[1793491200,77582.02,78422.23,77517.2,78354,510160451.25],
[1793577600,78354.01,78878.01,77298.28,77437.01,666701507.43]
]
}Authentication
None. There is no sign-up and no API key: call the endpoints directly over HTTPS. CORS is open (Access-Control-Allow-Origin: *), so it works from the browser too.
Rate limits
60 requests per minute per IP. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining; over the limit you get HTTP 429 with Retry-After: 60. Data is cached for 30–300 seconds, so polling faster does not return newer numbers.
Errors
Errors return JSON with an error message.
HTTP 404
{"error": "Coin not found"}
HTTP 429 (Retry-After: 60)
{"error": "Rate limit: 60 requests per minute per IP"}Attribution
Required: show “Data: CoinXview” with a link to coinxview.com wherever you display the data. No reselling the raw data as your own API. Best effort, no uptime guarantee. Not investment advice.
<a href="https://coinxview.com">Data: CoinXview</a>Changelog
-
riskandrisk_leveladded to/coinsand/coins/{symbol}; new/risk/{symbol}. - v1 released:
/coins,/coins/{symbol},/global,/fear-greed,/ohlc/{symbol}.
Status: data status page (live per-exchange feed health). Methodology: how every number is calculated. Higher limits: contact us.
FAQ
Is the API free?
Yes. All endpoints are free for personal and commercial use, as long as you show “Data: CoinXview” with a link to coinxview.com.
Do I need an API key?
No. There is no sign-up and no key — call the endpoints directly over HTTPS. CORS is open, so it also works from the browser.
What is the rate limit?
60 requests per minute per IP address. Responses are cached for 30–300 seconds, so polling faster does not return newer data.