Інтеграція з 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 оновлень. Підтримує підписки на торгові пари з конкретних бірж.
Типові задачі інтеграції
Отримання мультивалютних цін
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 для базових. Кешуйте результати—ціни міняються раз в кілька секунд, запитувати їх при кожній дії користувача надмірно.
Завантаження історичних даних
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 компонент або готові дані для вашого фронтенду.







