Интеграция с CryptoCompare API
CryptoCompare — один из старейших агрегаторов крипторынка с данными с 2010 года. В отличие от CoinGecko и CoinMarketCap, сильная сторона CryptoCompare — исторические OHLCV данные и данные по биржам: цены с конкретных торговых пар на конкретных биржах, а не усреднённые агрегаты. Это делает его незаменимым для торговых приложений, бэктестинга стратегий и аналитических дашбордов.
Что даёт API
Цены в реальном времени — /data/price, /data/pricemulti, /data/pricemultifull. Последний возвращает расширенные данные: изменение за 24h, объём, market cap, последняя биржа и цена.
Исторические OHLCV — это главное преимущество:
-
/data/v2/histominute— поминутные свечи (максимум 2000 точек за запрос) -
/data/v2/histohour— часовые -
/data/v2/histoday— дневные (данные с 2010 года для основных пар)
Параметр toTs позволяет пагинироваться в прошлое — для загрузки полной истории нужно несколько запросов с рекурсивным сдвигом.
WebSocket — /streaming/ endpoint для real-time updates. Поддерживает подписки на торговые пары с конкретных бирж.
Типичные задачи интеграции
Получение мультивалютных цен
const response = await fetch(
`https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH,SOL&tsyms=USD,EUR&api_key=${API_KEY}`
)
const prices = await response.json()
// { BTC: { USD: 67000, EUR: 62000 }, ETH: { ... } }
Rate limit на бесплатном тарифе — 100 calls/month для некоторых endpoints, 250k calls/month для базовых. Кэшируйте результаты — цены меняются раз в несколько секунд, запрашивать их при каждом user action избыточно.
Загрузка исторических данных
async function fetchFullHistory(fsym: string, tsym: string): Promise<OHLCV[]> {
const results: OHLCV[] = []
let toTs = Math.floor(Date.now() / 1000)
while (true) {
const res = await fetch(
`https://min-api.cryptocompare.com/data/v2/histoday` +
`?fsym=${fsym}&tsym=${tsym}&limit=2000&toTs=${toTs}&api_key=${API_KEY}`
)
const data = await res.json()
const candles = data.Data.Data
if (candles.length === 0 || candles[0].time === 0) break
results.unshift(...candles)
toTs = candles[0].time - 1
await sleep(300) // rate limit
}
return results
}
WebSocket для real-time
const ws = new WebSocket('wss://streamer.cryptocompare.com/v2?api_key=' + API_KEY)
ws.onopen = () => {
ws.send(JSON.stringify({
action: 'SubAdd',
subs: ['5~CCCAGG~BTC~USD', '5~CCCAGG~ETH~USD']
// формат: type~market~fsym~tsym
// type 5 = агрегированная цена
}))
}
ws.onmessage = (event) => {
const msg = JSON.parse(event.data)
if (msg.TYPE === '5') {
// обновление цены
console.log(msg.FROMSYMBOL, msg.PRICE)
}
}
CCCAGG — агрегированная цена по всем биржам. Для цены с конкретной биржи: 5~Binance~BTC~USDT.
Ограничения и подводные камни
Данные не real-time в строгом смысле — агрегированная цена CryptoCompare отстаёт от биржевых данных на 1–5 секунд. Для HFT или арбитража — не подходит. Для дашбордов и аналитики — достаточно.
Неравномерное покрытие — для топ-100 монет данные хорошие, для малоликвидных altcoin — могут быть пропуски в истории или устаревшие цены.
API ключ в клиентском коде — распространённая ошибка. Ключ должен быть на сервере, клиент ходит к вашему proxy endpoint. Иначе ключ утечёт, превысите лимиты, получите счёт.
Лимиты по тарифам — бесплатный тариф ограничен. Для production: Starter ($29/month) или выше. Перед выбором тарифа — посчитайте реальный RPS вашего приложения.
Что делается за 2–3 дня
Серверный proxy для API запросов с кэшированием (Redis или in-memory), интеграция endpoints: текущие цены, OHLCV история, WebSocket стрим, TypeScript/Python SDK-обёртка под ваш стек, базовый UI компонент или готовые данные для вашего фронтенда.







