Skip to main content

DexPaprika API

Free API for on-chain DEX data and real-time price streaming. 33+ blockchains, 25M+ tokens, 27M+ pools. No API key, no authentication. All examples use curl, but any HTTP client works. The CLI (dexpaprika-cli) wraps every endpoint into simple commands with --output json --raw for scripting. REST responses are JSON. Streaming responses are Server-Sent Events.

Core concepts

Network IDs are lowercase chain identifiers: ethereum, solana, bsc, arbitrum, base, polygon, optimism, avalanche, etc. Get the full list from GET /networks. Token addresses are the on-chain contract addresses (e.g., 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 for WETH on Ethereum, So11111111111111111111111111111111111111112 for SOL on Solana). Pool addresses are the on-chain liquidity pool contract addresses. Find them via token pools or network pools endpoints. If you don’t know the network or address for a token, use search first.

Endpoints

Search (start here when you don’t have addresses)

Search tokens, pools, and DEXes by name, symbol, or address. Case-insensitive. Use this to resolve “what’s the ETH price” into the actual network + address you need. Example: Find Jupiter token

Token price and details

Returns name, symbol, chain, decimals, USD price, fully diluted valuation, liquidity, and volume/transaction stats at multiple time windows (24h, 6h, 1h, 30m, 15m, 5m). The price is at response.summary.price_usd Example: Get SOL price
Extract just the price:

Batch token prices

Fetch USD prices for multiple tokens in one request. Comma-separated addresses, max 10 per request. Unknown or unpriced tokens are silently omitted from the response. Example: WETH + USDC on Ethereum
Response is an array of {id, chain, price_usd} objects. Order is not guaranteed.

Top pools on a network

List top liquidity pools. Pages are 1-indexed, max 100 per page. Order by: volume_usd, price_usd, transactions, last_price_change_usd_24h, created_at. Example: Top 5 Ethereum pools by volume

Advanced pool filtering (new)

Filter pools with range queries on volume, transactions, and creation date. This is the endpoint to use for building pool screeners, finding high-volume pools, or discovering recently created pools that meet specific criteria. Parameters: Note: volume_7d_min, volume_30d_min, liquidity_usd_min, liquidity_usd_max exist in the spec but are not functional yet — they return empty results. All filters combine with AND logic. The response includes page_info with total_items and total_pages. Example: High-volume Ethereum pools (>$100k daily volume)
Example: Recently created Solana pools with activity

Pool details

Returns liquidity, reserves, pricing, token pair info, and DEX metadata for a specific pool. Set inversed=true to flip the price ratio (token1/token0 instead of token0/token1).

Pool OHLCV (historical candlesticks)

Historical price candlestick data. start is required (ISO 8601 or UNIX timestamp). Optional end (max 1 year from start). Intervals: 1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h Max data points: 366 per request Example: Last 30 days of daily candles for a pool

Pool transactions

Recent swaps, liquidity adds, and removes. Reverse chronological order. Pages 1-indexed, max 100 pages. For deep pagination, use cursor parameter (transaction ID) instead of page numbers. Each transaction includes: token amounts (amount_0, amount_1), volumes (volume_0, volume_1), USD prices (price_0_usd, price_1_usd), token symbols, sender/recipient, and timestamps.

Pools for a token

Find all pools containing a specific token. Optional: add address parameter to filter to pools paired with a second specific token. Add reorder=true to make the queried token the primary token in all metrics.

DEXes on a network

List all DEXes on a network with their identifiers. Use the dex id to filter pools:

Networks

Returns all supported blockchain networks with their IDs. Use these IDs in all other endpoints.

Platform stats

High-level counts: total networks, DEXes, pools, and tokens. Useful for health checks.

Streaming API — Real-time prices via SSE

Stream live token prices with ~1 second update intervals. Uses Server-Sent Events (SSE) — works with any HTTP client that supports streaming. For full streaming docs, guides, and code examples see: https://docs.dexpaprika.com/streaming/introduction Base URL: https://streaming.dexpaprika.com (no landing page — only the /stream paths below work)

Stream a single token (GET)

Stream multiple tokens (POST) — recommended for 2+ tokens

Send a JSON array of assets. Single connection, up to 2,000 tokens.
Each asset object requires chain (network ID), address (token contract), and method (always t_p for token price).

SSE event format

Use now() - t for network latency, now() - t_p for total price data latency.

Python streaming example

Streaming constraints

  • Max 2,000 assets per POST request
  • All assets must be valid — one invalid asset cancels the entire stream with HTTP 400
  • Global stream limit: 10,000 concurrent streams per server
  • Validate assets via REST /search before streaming
  • Use multiple smaller requests (100-500 each) rather than one massive request for better load distribution
  • Reconnect with exponential backoff on disconnect

Streaming errors

Errors during an active stream arrive as SSE events: event: error + data: {"message": "..."}. Handle both HTTP errors (before stream starts) and SSE errors (during streaming).

Constraints and limits

REST API

  • Rate limit: 10,000 requests per day
  • Batch prices: max 10 tokens per request
  • Pagination: max 100 items per page
  • OHLCV: max 366 data points per request, max 1 year range
  • Transactions: max 100 pages of pagination
  • Pagination: all endpoints are 1-indexed (page=0 is silently treated as page=1)

Streaming API

  • Max assets per request: 2,000
  • Global concurrent streams: 10,000 per server
  • All assets must be valid or entire stream is cancelled

Error handling

When a batch price request contains only invalid tokens, you get HTTP 200 with an empty array — not an error.

Common workflows

”What’s the price of X?”

  1. GET /search?query=X to find the network and token address
  2. GET /networks/{network}/tokens/{address} to get price at .summary.price_usd

”Show me the top pools on Ethereum”

  1. GET /networks/ethereum/pools?limit=10&order_by=volume_usd&sort=desc

”Find new pools with high volume”

  1. GET /networks/{network}/pools/filter?created_after={unix_timestamp}&volume_24h_min=50000&sort_by=created_at&sort_dir=desc

”Get historical price data for a token”

  1. Find the token’s pools via GET /networks/{network}/tokens/{address}/pools?order_by=volume_usd&sort=desc&limit=1 (the highest-volume pool is the best source)
  2. GET /networks/{network}/pools/{pool_address}/ohlcv?start={date}&interval=24h&limit=30

”Compare prices of multiple tokens”

  1. GET /networks/{network}/multi/prices?tokens={addr1},{addr2},{addr3}

”Stream live price updates for a token”

  1. GET https://streaming.dexpaprika.com/stream?method=t_p&chain={network}&address={token_address}

”Build a real-time dashboard tracking multiple tokens”

  1. Validate tokens exist via REST: GET /search?query={name} or GET /networks/{network}/tokens/{address}
  2. POST https://streaming.dexpaprika.com/stream with JSON array of {chain, address, method: "t_p"} objects
  3. Parse SSE events, read price from p field (string — parse as decimal for precision)

“Monitor a token’s price with alerts”

  1. Stream the token via GET or POST to streaming.dexpaprika.com
  2. Compare each incoming p value against your threshold
  3. Reconnect with exponential backoff on disconnect

What this skill does NOT cover

  • CoinPaprika centralized exchange data — that’s a different API (api.coinpaprika.com)
  • Trading or swapping — DexPaprika is read-only; it does not execute trades

Full documentation