A free, no-signup HTTP + WebSocket feed of real-time cross-venue VWAP prices. Same data the site runs on. No API key needed for the free tier. CORS-open. Use it.
https://crypto-ai-prices.fly.devEvery REST endpoint below is relative to this host. WebSocket connects at wss://crypto-ai-prices.fly.dev/ws.
Current price, VWAP, 24h change, 24h volume (USD notional), and contributing venues for every tracked asset.
curl https://crypto-ai-prices.fly.dev/api/prices{
"live": false,
"delay": 15,
"timestamp": 1776297071902,
"prices": {
"BTC": {
"price": 74745.19,
"vwap": 74721.33,
"change24h": 0.71,
"volume24h": 52183902311.44,
"sources": ["binance", "coinbase", "kraken", "okx"],
"name": "Bitcoin"
}
}
}Same data, one asset. 404 if the symbol isn't tracked.
curl https://crypto-ai-prices.fly.dev/api/prices/ETH24-hour price history for an asset, sampled on a fixed cadence. Useful for sparklines and backtests.
curl https://crypto-ai-prices.fly.dev/api/history/BTC{
"symbol": "BTC",
"points": [
{ "t": 1776211219958, "price": 74150.07 },
{ "t": 1776214820013, "price": 74573.51 },
{ "t": 1776218420068, "price": 74637.68 }
]
}Coin-tagged news from CoinDesk, CoinTelegraph, Decrypt, and The Block. Deduped, sorted, last 72 hours. Hosted on crypto-ai.dev (not Fly). Filter with ?coin=BTC or ?q=halving.
curl 'https://crypto-ai.dev/api/wire?coin=BTC&limit=5'{
"items": [
{
"id": "kvj84z",
"title": "…",
"link": "https://www.coindesk.com/…",
"source": "CoinDesk",
"publishedAt": "2026-04-15T23:08:06.000Z",
"summary": "…",
"coins": ["BTC", "SOL"]
}
],
"total": 109
}Real-time stream. On connect you receive a snapshot with every tracked symbol, then update messages whenever prices change. Send {"type":"subscribe","symbols":["BTC","ETH"]} to narrow the stream.
const ws = new WebSocket("wss://crypto-ai-prices.fly.dev/ws");
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
if (msg.type === "snapshot") console.log("initial prices", msg.prices);
if (msg.type === "update") console.log("tick", msg.prices);
};
// Optional: limit to specific symbols
ws.onopen = () => ws.send(JSON.stringify({ type: "subscribe", symbols: ["BTC", "ETH"] }));Unauthenticated requests see a 15-second delayed feed. Real-time access is gated by an API key passed in the X-API-Key header (or ?apiKey= on WebSocket). The paid tier is in private beta — join the waitlist if you need it.
curl -H "X-API-Key: YOUR_KEY" https://crypto-ai-prices.fly.dev/api/prices429 with a Retry-After header.Machine-readable spec for code-gen, Postman, or agent tool-use. Served from /openapi.json.
import requests
r = requests.get("https://crypto-ai-prices.fly.dev/api/prices")
btc = r.json()["prices"]["BTC"]
print(btc["price"], btc["vwap"])const r = await fetch("https://crypto-ai-prices.fly.dev/api/prices/BTC");
const { price, vwap, sources } = await r.json();
console.log(price, vwap, sources);curl -s https://crypto-ai-prices.fly.dev/api/prices | jq '.prices | to_entries | sort_by(-.value.volume24h) | .[:5]'