curl --request GET \
--url https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcvimport requests
url = "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"time_open": "2025-03-10T00:00:00Z",
"time_close": "2025-03-11T00:00:00Z",
"open": 126.43817748776037,
"high": 131.48201077049822,
"low": 115.52148830221141,
"close": 118.20275113239272,
"volume": 262402654
}
]Get OHLCV data for a token
Historical OHLCV candles for a token in USD, built from a volume-weighted price across every pool the token trades in. Needs a Dev or Pro plan.
curl --request GET \
--url https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcvimport requests
url = "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexpaprika.com/networks/{network}/tokens/{token_address}/ohlcv")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"time_open": "2025-03-10T00:00:00Z",
"time_close": "2025-03-11T00:00:00Z",
"open": 126.43817748776037,
"high": 131.48201077049822,
"low": 115.52148830221141,
"close": 118.20275113239272,
"volume": 262402654
}
]Endpoint overview
One candle series per token, in USD. Where pool OHLCV gives you the price of one pair in one pool, this endpoint gives you the token’s price across every pool it trades in on the network, weighted by volume. You do not have to pick a pool first, and a thin pool with a stray trade does not become your chart. The candles come from the same token price series as the real-time OHLCV stream, so you can load history here and continue live on/sse/ohlcv.
403 with {"message":"this endpoint requires a Dev or Pro plan"}. Paid plans call https://api-pro.dexpaprika.com with the key as the whole Authorization header. Get a key in console.dexpaprika.com and compare plans on pricing.curl -H "Authorization: $DEXPAPRIKA_API_KEY" \
"https://api-pro.dexpaprika.com/networks/ethereum/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/ohlcv?start=-24h&interval=1h&limit=24"
Plan limits
| Plan | Candle intervals | History depth |
|---|---|---|
| Free (no key or registered key) | not available | not available |
| Dev | all (1m to 24h) | last 30 days |
| Pro / Enterprise | all | no plan limit |
start, end and the number of candles are checked against the window the same way as on pool OHLCV. Details on the rate limits page. Each request costs one credit, whatever the number of candles it returns.
Reading the response
open,high,lowandcloseare USD prices. There is noinversedflag here, because a token series has no second token to flip to.volumeis the USD value traded in the token across all its pools during the candle, as a whole number.- A candle only exists for an interval in which the token traded. On a quiet token a series of
1mcandles has gaps; fill them on your side if your chart needs a continuous axis. - The latest candle can still be open. Its
time_closeis then earlier than a full interval aftertime_open, and its values change until the interval ends. Re-read it rather than caching it.
FAQs
How is this different from pool OHLCV?
How is this different from pool OHLCV?
inversed. Token OHLCV is the token’s USD price across every pool it trades in on the network, weighted by volume, with volume summed across those pools. Use token OHLCV for charts, backtests and valuation; use pool OHLCV when you care about one specific market.Which plans can call it?
Which plans can call it?
https://api-pro.dexpaprika.com. Dev can query the last 30 days; Pro and Enterprise have no plan limit on history. Keyless requests and free keys get 403. Plans are on pricing.Which intervals are supported?
Which intervals are supported?
1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h, up to 1000 candles per request. interval defaults to 24h and limit to 10, so set both.How do I request a time range?
How do I request a time range?
start is required: a relative offset from now (-24h, -7d, -90m), an RFC3339 timestamp, a date or Unix seconds. end is optional and takes the same formats. On Dev the range must fit inside the last 30 days.Why are some minutes missing?
Why are some minutes missing?
Path Parameters
Token contract address. Such as JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN for Jupiter on Solana.
Query Parameters
Start time for the OHLCV data. Required; "-24h" selects the last 24 hours. Accepted formats:
- Relative offset from now (e.g., "-24h", "-7d", "-90m"; units: s, m, h, d)
- Unix timestamp
- RFC3339 timestamp (e.g., "2023-10-27T08:07:20Z")
- Date (e.g., "2023-10-27", interpreted as 00:00:00 UTC)
"-24h"
End time for the OHLCV data. Accepted formats:
- Relative offset from now (e.g., "-1h", "-2d")
- Unix timestamp
- RFC3339 timestamp (e.g., "2023-10-27T10:00:00Z")
- Date (e.g., "2023-10-27", interpreted as 00:00:00 UTC)
"1741508640"
Maximum number of OHLCV records to return.
1 <= x <= 1000The time interval for each OHLCV record (candle).
1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h Returns the last N candles with data up to end, ignoring start.
0 <= x <= 350Response
A list of OHLCV records successfully retrieved.
The opening timestamp of the OHLCV period.
"2023-10-27T10:00:00Z"
The closing timestamp of the OHLCV period.
"2023-10-27T11:00:00Z"
The opening price for the period.
1500.5
The highest price reached during the period.
1525.75
The lowest price reached during the period.
1495.25
The closing price for the period.
1510
The total volume traded during the period.
1234567890123
Was this page helpful?