Real-time crypto arbitrage spreads across 6 exchanges plus Polymarket prediction market data — exposed as simple JSON endpoints. Free, CORS-enabled, no authentication required. Built for trading bots, dashboards, research, and Telegram/Discord integrations.
Live cross-exchange price snapshot for top 20 trading pairs (BTC, ETH, SOL, XRP, TON, DOGE, ADA, BNB, TRX, DOT, LINK, LTC, AVAX, MATIC, SHIB, UNI, XLM, NEAR, ATOM, APT — all in USDT). Includes best buy / best sell / spread percentage per asset, raw exchange prices, and per-exchange error states.
JSON{ "timestamp": "2026-05-11T09:33:18Z", "symbols": { "BTCUSDT": { "prices": { "Binance": 80877.50, "MEXC": 80888.19, "OKX": 80880.60, "KuCoin": 80881.60, "Gate": 80893.10 }, "absolute_diff": 15.60, "spread_percent": 0.00019288, "best_buy": { "exchange": "Binance", "price": 80877.50 }, "best_sell": { "exchange": "Gate", "price": 80893.10 } } }, "exchanges": ["Binance", "MEXC", "OKX", "KuCoin", "Gate"] }
JS// Browser or Node 18+ (no auth required) const r = await fetch('https://coinnavigator.net/spread_data.json'); const data = await r.json(); const profitable = Object.entries(data.symbols) .filter(([, s]) => s.spread_percent * 100 >= 0.30) .map(([sym, s]) => ({ symbol: sym, spreadPct: (s.spread_percent * 100).toFixed(3), buyOn: s.best_buy.exchange, sellOn: s.best_sell.exchange, })); console.log(profitable);
PYTHONimport requests r = requests.get('https://coinnavigator.net/spread_data.json', timeout=10) data = r.json() for sym, info in data['symbols'].items(): spread_pct = (info['spread_percent'] or 0) * 100 if spread_pct >= 0.30: print(f"{sym}: {spread_pct:.3f}% — buy {info['best_buy']['exchange']}, sell {info['best_sell']['exchange']}")
Top Polymarket markets by 24h volume with YES/NO prices, 24h probability change, end dates, and full market URLs. Source data is the public Polymarket gamma-api; this endpoint is a curated, CDN-cached snapshot refreshed once per day.
JSON{ "timestamp": "2026-05-11T02:01:05Z", "source": "gamma-api.polymarket.com", "markets": [ { "id": "553863", "slug": "will-the-lakers-win-the-2026-nba-finals", "question": "Will the Los Angeles Lakers win the 2026 NBA Finals?", "url": "https://polymarket.com/event/...", "endDate": "2026-07-01T00:00:00Z", "volume24hr": 653681.35, "volume": 22759403.29, "liquidity": 626861.44, "yes": 0.0015, "no": 0.9985, "oneDayPriceChange": -0.008 } ] }
Both endpoints above are free, forever, with reasonable use. Pro tiers (lower latency, custom symbols, historical data, webhooks) are in development — sign up below to be notified when they launch.
The fastest way to test it: paste either URL into your browser and you'll see the live JSON. Or run this in your terminal:
SHELLcurl -s https://coinnavigator.net/spread_data.json | jq '.symbols.BTCUSDT'
Drop your email to be first in line for the 1-minute refresh tier, historical data, and webhook alerts.
No. Both endpoints are publicly accessible with no authentication. Pro tier (when it launches) will use API keys for the lower-latency endpoints.
There's no hard limit, but please be reasonable — the data only refreshes every 15 minutes. Polling more than once per minute is wasted bandwidth. Aggressive abuse may get your IP rate-limited by Vercel.
Yes, the free tier is fine for commercial use. We appreciate attribution but don't require it. For high-volume or SLA-backed commercial use, contact us about Enterprise pricing.
Spread data: updated every 15 minutes via GitHub Actions polling the exchanges. Polymarket: refreshed once per day around 00:00 UTC. Pro tier will offer 1-minute spread refresh.
Not yet. WebSocket push notifications for price/probability movements are planned for the Pro tier — sign up for the waitlist above.
The endpoint will still return all reachable exchanges in prices, and list unreachable exchanges in errors[symbol][exchange]. Best-buy / best-sell will only consider available prices.