How to get OHLCV candles for any DEX token (the endpoint DexScreener's API doesn't have)

Mateusz Sroka

(3 months ago)

5 min read

Share:

DexScreener's public API has no historical candles, but the free DexPaprika API delivers real OHLCV data for any DEX pool on 35 chains - copy-paste code included, no API key required.

How to get OHLCV candles for any DEX token (the endpoint DexScreener's API doesn't have)

If you've gone looking for an OHLCV or candlestick endpoint in DexScreener's public API, you already know how this ends: it isn't there. You get current price, liquidity, volume, and 24-hour change, but no historical candles to build a chart or backtest a strategy. This guide shows you how to get real OHLCV data for any DEX pool from the free DexPaprika API, with working code you can run right now. No API key, 35 chains, one endpoint.

I kept hitting this wall myself while building a small price-chart widget. The DexScreener response had everything except the one thing a chart needs, the candles. So here's the workaround I settled on.

The gap, concretely

DexScreener's /latest/dex/tokens/{address} and /latest/dex/pairs/{chain}/{pair} endpoints return a snapshot: priceUsd, liquidity, volume, priceChange over a few fixed windows. That's great for a "current state" card. It's useless for a chart, because a chart needs a time series of open/high/low/close/volume bars, and the public API doesn't expose one. The charts you see on the DexScreener site are drawn from an internal endpoint that isn't part of the documented developer API.

So if your app needs candles, you need a different source for that piece. DexPaprika has a dedicated OHLCV endpoint that takes a pool address and gives you the bars.

Diagram: a DEX pool address feeds two API shapes. A snapshot API returns current price, liquidity, and 24h volume but no history, so it cannot  build a chart. An OHLCV API returns a time series of open, high, low, close, and volume candles, which powers price charts, indicators, and backtests.

Step 1: find the pool address

OHLCV is per-pool, so you need a pool address. If you already have one (from DexScreener, from a block explorer, from your own indexing), skip ahead. If you only have a token, search for its pools:

curl "https://api.dexpaprika.com/search?query=WETH"

Or list the top pools on a network by volume:

curl "https://api.dexpaprika.com/networks/ethereum/pools?limit=5"

For this guide I'll use the Uniswap V3 USDC/WETH pool on Ethereum: 0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640.

Step 2: get the candles

The endpoint is /networks/{network}/pools/{pool}/ohlcv. Here's a daily series:

curl "https://api.dexpaprika.com/networks/ethereum/pools/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640/ohlcv?start=2026-06-12&interval=24h&limit=3"

Response:

[
  {
    "time_open": "2026-06-12T00:00:00Z",
    "time_close": "2026-06-13T00:00:00Z",
    "open": 1.0005397362121917,
    "high": 1.0058630231121142,
    "low": 0.9917514683893423,
    "close": 0.9999299257162607,
    "volume": 29695306
  }
]

That's a real candle: open, high, low, close, and volume, exactly what a charting library or a backtest expects.

One gotcha that will save you a confused five minutes: the interval is 24h, not 1d. If you pass 1d you get a clear error listing the valid values. The accepted intervals are 1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, and 24h. Pick the granularity your chart needs.

In Python

import requests

POOL = "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640"
url = f"https://api.dexpaprika.com/networks/ethereum/pools/{POOL}/ohlcv"
params = {"start": "2026-06-01", "interval": "24h", "limit": 30}

candles = requests.get(url, params=params).json()
for c in candles:
    print(c["time_open"], c["open"], c["high"], c["low"], c["close"], c["volume"])

That's a month of daily candles for a charting library or a pandas DataFrame, in about six lines and with no API key.

In JavaScript

const POOL = "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640";
const url = new URL(`https://api.dexpaprika.com/networks/ethereum/pools/${POOL}/ohlcv`);
url.search = new URLSearchParams({ start: "2026-06-01", interval: "24h", limit: "30" });

const candles = await fetch(url).then((r) => r.json());
candles.forEach((c) => console.log(c.time_open, c.open, c.high, c.low, c.close, c.volume));

Feed candles straight into Lightweight Charts, Chart.js, or your own renderer. The field names already match what most candlestick libraries expect once you map time_open to the bar time.

Intraday and longer history

For an intraday chart, drop the interval to 1h or 15m:

curl "https://api.dexpaprika.com/networks/ethereum/pools/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640/ohlcv?start=2026-06-16&interval=1h"

The same endpoint works across all 35 supported chains. Swap ethereum for solana, base, bsc, or any other network ID, and pass a pool address from that chain.

What this unlocks

With candles in hand you can build the things the snapshot API can't support: price charts, moving averages and other indicators, volatility and volume analysis, and backtests over historical pool behavior. It's the missing half of a DEX data stack, and it's the same data whether you're charting a billion-dollar pool or a brand-new memecoin.

Frequently asked questions

?Does DexScreener have an OHLCV or candlestick API endpoint?

Not in its public developer API. You get current price, liquidity, volume, and short-window price changes, but no historical OHLCV time series. For candles, use a source that exposes them, like the DexPaprika pool OHLCV endpoint.

?Do I need an API key for DexPaprika OHLCV?

No. The public REST API needs no key and no registration. Just make the request.

?What time intervals are supported?

1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, and 24h. Note it's 24h, not 1d.

?Which chains work?

All 35 networks DexPaprika indexes, including Ethereum, Solana, Base, BSC, Arbitrum, and more. The endpoint shape is identical per chain.

?I only have a token address, not a pool. What do I do?

Use the search endpoint or list the token's pools first, pick the pool you want (usually the highest-liquidity one), then request OHLCV for that pool address.

Where to go next

Related articles

Latest articles

Coinpaprika education

Discover practical guides, definitions, and deep dives to grow your crypto knowledge.

Cryptocurrencies are highly volatile and involve significant risk. You may lose part or all of your investment.

All information on Coinpaprika is provided for informational purposes only and does not constitute financial or investment advice. Always conduct your own research (DYOR) and consult a qualified financial advisor before making investment decisions.

Coinpaprika is not liable for any losses resulting from the use of this information.

Go back to Education