| name | crypto-price-data-guide |
| description | How cryptocurrency prices work — the complete data pipeline from CEX order books and DEX pools through oracle networks to aggregators. Covers free API alternatives to CoinGecko, VWAP/TWAP calculations, and building price feeds without paid APIs. Use when explaining price sources, building market data features, or comparing data providers. |
| metadata | {"openclaw":{"emoji":"📈","homepage":"https://sperax.io"}} |
Crypto Price Data Guide
Where do crypto prices actually come from? This guide breaks down the entire data pipeline — from raw exchange data to the numbers you see in apps.
The Price Data Pipeline
┌──────────────────────────────────────────────────────────┐
│ LAYER 1: Primary Sources (where prices originate) │
│ │
│ CEX Order Books DEX AMM Pools │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Binance │ │ Uniswap V3 │ │
│ │ Coinbase │ │ Curve │ │
│ │ Kraken │ │ Camelot │ │
│ │ OKX, Bybit │ │ Balancer │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │
├─────────┼───────────────────────┼────────────────────────┤
│ LAYER 2: Oracle Networks (aggregate + post on-chain) │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ Chainlink Pyth Redstone │ │
│ │ (median of multiple data sources) │ │
│ └──────────────────┬───────────────────┘ │
│ │ │
├─────────────────────┼────────────────────────────────────┤
│ LAYER 3: Aggregators (combine everything) │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ CoinGecko DeFi Llama CoinMarketCap │ │
│ │ DexScreener CoinCap CoinPaprika │ │
│ └──────────────────┬───────────────────┘ │
│ │ │
├─────────────────────┼────────────────────────────────────┤
│ LAYER 4: Consumer Apps │
│ ▼ │
│ Portfolio trackers, trading bots, DeFi protocols, │
│ AI agents (like SperaxOS), wallets │
└──────────────────────────────────────────────────────────┘
Layer 1: Primary Price Sources
Centralized Exchange (CEX) APIs
CEXes are the dominant price source for high-cap tokens. Their order books determine the "true" price through supply/demand matching.
| Exchange | Public API | Rate Limit | WebSocket |
|---|
| Binance | api.binance.com/api/v3/ | 1200 req/min | ✅ Real-time |
| Coinbase | api.exchange.coinbase.com/ | 10 req/sec | ✅ Real-time |
| Kraken | api.kraken.com/0/public/ | 1 req/sec | ✅ Real-time |
| OKX | okx.com/api/v5/market/ | 20 req/2sec | ✅ Real-time |
| Bybit | api.bybit.com/v5/market/ | 120 req/sec | ✅ Real-time |
All of these are free, no API key required for public market data.
Example: Binance Spot Price
GET https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT
Response: { "symbol": "BTCUSDT", "price": "64523.45000000" }
Example: Binance 24h Ticker
GET https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT
Response: {
"symbol": "ETHUSDT",
"priceChange": "45.20",
"priceChangePercent": "1.42",
"lastPrice": "3245.67",
"volume": "584231.45",
"highPrice": "3289.00",
"lowPrice": "3178.23"
}
DEX On-Chain Data
For tokens that aren't listed on CEXes (the long tail), DEX pools are the only price source.
| Source | Chains | How Price Is Determined |
|---|
| Uniswap V2 | ETH, Arbitrum, etc. | Constant product: price = reserveB / reserveA |
| Uniswap V3 | ETH, Arbitrum, etc. | Square root price from pool slot0: sqrtPriceX96 |
| Curve | ETH, Arbitrum, etc. | StableSwap invariant (optimized for pegged assets) |
| Camelot | Arbitrum | V2 + V3 pools (Arbitrum-native) |
Reading DEX prices:
- Direct RPC — Call pool contracts to read reserves/sqrtPrice
- The Graph — Query indexed swap events via GraphQL
- DexScreener API — Aggregated DEX data across 80+ chains
DexScreener Example
GET https://api.dexscreener.com/latest/dex/tokens/0xD74f5255D557944cf7Dd0E45FF521520002D5748
Returns: SPA pair data across all DEXes
How CEX and DEX Prices Stay in Sync
Arbitrage bots. If ETH is $3,200 on Binance but $3,210 on Uniswap:
- Bot buys on Binance (cheaper)
- Bot sells on Uniswap (expensive)
- Price difference narrows until it's less than gas + bridge costs
This is why prices across venues are usually within 0.1–0.5% of each other.
Layer 2: Oracle Networks
Oracles aggregate CEX + DEX data and make it available on-chain for smart contracts.
Chainlink
The dominant oracle network. ~1000+ price feeds across EVM chains.
How it works:
- Multiple independent oracle nodes fetch prices from CEXes and DEXes
- Each node submits its observation to the aggregator contract
- The contract takes the median of all observations
- Updates when: deviation > threshold (typically 0.5–1%) OR heartbeat time passes
Reading a Chainlink feed on-chain:
// ETH/USD on Ethereum: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
// SPA/USD on Arbitrum: Available via Chainlink
function getPrice() {
(, int256 price,,,) = priceFeed.latestRoundData();
return uint256(price); // 8 decimals
}
Key feeds:
| Feed | Address (Ethereum) | Decimals |
|---|
| ETH/USD | 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 | 8 |
| BTC/USD | 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c | 8 |
| USDC/USD | 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6 | 8 |
Sperax Context: USDs uses Chainlink price feeds via its MasterPriceOracle to value collateral (USDC, USDT) and maintain its peg.
Pyth Network
Pull oracle — prices update sub-second but consumers must "pull" the latest update on-chain.
GET https://hermes.pyth.network/api/latest_price_feeds?ids[]=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace
Returns: { price: "6452345000000", expo: -8, conf: "2500000" }
Chainlink vs Pyth
| Feature | Chainlink | Pyth |
|---|
| Model | Push (auto-updates) | Pull (consumer requests) |
| Latency | 1–60 min heartbeat | ~400ms |
| Cost | Gas paid by oracle network | Gas paid by consumer |
| Coverage | 1000+ feeds | 500+ feeds |
| Security | Battle-tested (5+ years) | Newer but growing fast |
Layer 3: Free Aggregator APIs
These combine CEX + DEX + oracle data into convenient APIs.
DeFi Llama (Best Free Option)
Zero rate limiting. Zero API key. Most generous free API in crypto.
| Endpoint | What It Returns |
|---|
coins.llama.fi/prices/current/{coins} | Current prices for any token |
api.llama.fi/protocols | All tracked protocols with TVL |
yields.llama.fi/pools | All yield pools across DeFi |
stablecoins.llama.fi/stablecoins | All stablecoin market data |
Price query example:
GET https://coins.llama.fi/prices/current/arbitrum:0xD74f5255D557944cf7Dd0E45FF521520002D5748
Returns: USDs price from on-chain sources
CoinCap
Simple, clean API for top 2000 coins.
GET https://api.coincap.io/v2/assets?limit=10
Returns: Top 10 coins by market cap with price, volume, change
CoinPaprika
Decent free tier with ATH data and social links.
GET https://api.coinpaprika.com/v1/tickers/btc-bitcoin
Returns: Price, ATH, ATH date, volume, market cap, beta, supply
CryptoCompare
Good for OHLCV (candlestick) data.
GET https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=30
Returns: 30 days of daily OHLCV data
Building Without CoinGecko
A practical multi-source approach:
| Data Need | Primary Source | Fallback |
|---|
| Top coin prices | Binance API | CoinCap |
| Long-tail tokens | DexScreener | DeFi Llama |
| Historical OHLCV | CryptoCompare | Binance klines |
| TVL / protocol data | DeFi Llama | — (only source) |
| Yield / APY data | DeFi Llama yields | — |
| On-chain accurate price | Chainlink feeds | Pyth |
| Token metadata | CoinPaprika | Token Lists |
| Market sentiment | Fear & Greed API | — |
Waterfall strategy (what production apps use):
1. Try Binance (fastest, most liquid)
2. Fall back to CoinCap (broader coverage)
3. Fall back to DexScreener (on-chain tokens)
4. Fall back to DeFi Llama (universal)
SperaxOS uses a similar multi-provider waterfall: Binance → CoinCap → DexScreener → CoinGecko for maximum reliability.
Price Calculation Methods
VWAP (Volume-Weighted Average Price)
How aggregators compute a single price from multiple exchanges:
VWAP = Σ(Price_i × Volume_i) / Σ(Volume_i)
Example:
| Exchange | Price | 24h Volume |
|---|
| Binance | $3,200 | $2B |
| Coinbase | $3,205 | $500M |
| Kraken | $3,198 | $100M |
VWAP = (3200×2B + 3205×500M + 3198×100M) / (2B + 500M + 100M)
= $3,200.96
TWAP (Time-Weighted Average Price)
Used by Uniswap V3 oracle and some protocols:
TWAP = Average price over a time window (e.g., last 30 minutes)
More resistant to manipulation than spot price.
Agent Tips
- Never rely on a single source — always implement fallbacks
- CEX data is freshest for major tokens — use Binance/Coinbase first
- DEX data is essential for tokens not listed on CEXes
- DeFi Llama is the best free API — zero rate limiting, comprehensive
- Chainlink feeds are the gold standard for on-chain price verification
- Always show the data source — users should know where prices come from
Links