Spread statistics
curl --request GET \
--url https://api.hypedexer.com/market/spread/{coin} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hypedexer.com/market/spread/{coin}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hypedexer.com/market/spread/{coin}', 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.hypedexer.com/market/spread/{coin}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.hypedexer.com/market/spread/{coin}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hypedexer.com/market/spread/{coin}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/market/spread/{coin}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Spread statistics for BTC",
"data": {
"coin": "BTC",
"start_time": "2025-12-01T00:00:00Z",
"end_time": "2026-01-01T00:00:00Z",
"coverage_pct": 99.77,
"minutes_with_data": 44536,
"spread_bps_median": 0.1435,
"spread_bps_p10": 0.1145,
"spread_bps_p90": 0.2023,
"spread_bps_avg": 0.1555,
"spread_bps_max": 2.2621,
"mid_avg": 89000.230667,
"updates": 225302610,
"tightest_hour_utc": 7,
"widest_hour_utc": 15,
"by_hour_utc": [
{
"hour_utc": 0,
"spread_bps_avg": 0.1723,
"updates": 9095092
},
{
"hour_utc": 1,
"spread_bps_avg": 0.1623,
"updates": 9465540
},
{
"hour_utc": 2,
"spread_bps_avg": 0.1682,
"updates": 9635044
},
{
"hour_utc": 3,
"spread_bps_avg": 0.1606,
"updates": 8464076
},
{
"hour_utc": 4,
"spread_bps_avg": 0.1535,
"updates": 7294841
},
{
"hour_utc": 5,
"spread_bps_avg": 0.1519,
"updates": 6826738
},
{
"hour_utc": 6,
"spread_bps_avg": 0.1515,
"updates": 6486111
},
{
"hour_utc": 7,
"spread_bps_avg": 0.1506,
"updates": 6891036
},
{
"hour_utc": 8,
"spread_bps_avg": 0.1531,
"updates": 7699446
},
{
"hour_utc": 9,
"spread_bps_avg": 0.1528,
"updates": 7455441
},
{
"hour_utc": 10,
"spread_bps_avg": 0.1538,
"updates": 7366684
},
{
"hour_utc": 11,
"spread_bps_avg": 0.1523,
"updates": 7233631
},
{
"hour_utc": 12,
"spread_bps_avg": 0.1555,
"updates": 8030840
},
{
"hour_utc": 13,
"spread_bps_avg": 0.1717,
"updates": 10109865
},
{
"hour_utc": 14,
"spread_bps_avg": 0.2006,
"updates": 14210434
},
{
"hour_utc": 15,
"spread_bps_avg": 0.202,
"updates": 15470247
},
{
"hour_utc": 16,
"spread_bps_avg": 0.1813,
"updates": 14199150
},
{
"hour_utc": 17,
"spread_bps_avg": 0.1779,
"updates": 12584367
},
{
"hour_utc": 18,
"spread_bps_avg": 0.1704,
"updates": 11308041
},
{
"hour_utc": 19,
"spread_bps_avg": 0.1773,
"updates": 10909983
},
{
"hour_utc": 20,
"spread_bps_avg": 0.175,
"updates": 10588394
},
{
"hour_utc": 21,
"spread_bps_avg": 0.1652,
"updates": 8184223
},
{
"hour_utc": 22,
"spread_bps_avg": 0.1707,
"updates": 7742191
},
{
"hour_utc": 23,
"spread_bps_avg": 0.1584,
"updates": 8051195
}
]
},
"total_count": null,
"execution_time_ms": 368.45,
"next_cursor": null,
"has_more": null
}Market history
Spread statistics
Spread distribution over a window (median, p10, p90, mean), data coverage and the hour of day (UTC) with the tightest spread. Available for April 2024 to February 2026 (archive of every top-of-book update); not yet extended past February 2026.
GET
/
market
/
spread
/
{coin}
Spread statistics
curl --request GET \
--url https://api.hypedexer.com/market/spread/{coin} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hypedexer.com/market/spread/{coin}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hypedexer.com/market/spread/{coin}', 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.hypedexer.com/market/spread/{coin}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.hypedexer.com/market/spread/{coin}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hypedexer.com/market/spread/{coin}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hypedexer.com/market/spread/{coin}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Spread statistics for BTC",
"data": {
"coin": "BTC",
"start_time": "2025-12-01T00:00:00Z",
"end_time": "2026-01-01T00:00:00Z",
"coverage_pct": 99.77,
"minutes_with_data": 44536,
"spread_bps_median": 0.1435,
"spread_bps_p10": 0.1145,
"spread_bps_p90": 0.2023,
"spread_bps_avg": 0.1555,
"spread_bps_max": 2.2621,
"mid_avg": 89000.230667,
"updates": 225302610,
"tightest_hour_utc": 7,
"widest_hour_utc": 15,
"by_hour_utc": [
{
"hour_utc": 0,
"spread_bps_avg": 0.1723,
"updates": 9095092
},
{
"hour_utc": 1,
"spread_bps_avg": 0.1623,
"updates": 9465540
},
{
"hour_utc": 2,
"spread_bps_avg": 0.1682,
"updates": 9635044
},
{
"hour_utc": 3,
"spread_bps_avg": 0.1606,
"updates": 8464076
},
{
"hour_utc": 4,
"spread_bps_avg": 0.1535,
"updates": 7294841
},
{
"hour_utc": 5,
"spread_bps_avg": 0.1519,
"updates": 6826738
},
{
"hour_utc": 6,
"spread_bps_avg": 0.1515,
"updates": 6486111
},
{
"hour_utc": 7,
"spread_bps_avg": 0.1506,
"updates": 6891036
},
{
"hour_utc": 8,
"spread_bps_avg": 0.1531,
"updates": 7699446
},
{
"hour_utc": 9,
"spread_bps_avg": 0.1528,
"updates": 7455441
},
{
"hour_utc": 10,
"spread_bps_avg": 0.1538,
"updates": 7366684
},
{
"hour_utc": 11,
"spread_bps_avg": 0.1523,
"updates": 7233631
},
{
"hour_utc": 12,
"spread_bps_avg": 0.1555,
"updates": 8030840
},
{
"hour_utc": 13,
"spread_bps_avg": 0.1717,
"updates": 10109865
},
{
"hour_utc": 14,
"spread_bps_avg": 0.2006,
"updates": 14210434
},
{
"hour_utc": 15,
"spread_bps_avg": 0.202,
"updates": 15470247
},
{
"hour_utc": 16,
"spread_bps_avg": 0.1813,
"updates": 14199150
},
{
"hour_utc": 17,
"spread_bps_avg": 0.1779,
"updates": 12584367
},
{
"hour_utc": 18,
"spread_bps_avg": 0.1704,
"updates": 11308041
},
{
"hour_utc": 19,
"spread_bps_avg": 0.1773,
"updates": 10909983
},
{
"hour_utc": 20,
"spread_bps_avg": 0.175,
"updates": 10588394
},
{
"hour_utc": 21,
"spread_bps_avg": 0.1652,
"updates": 8184223
},
{
"hour_utc": 22,
"spread_bps_avg": 0.1707,
"updates": 7742191
},
{
"hour_utc": 23,
"spread_bps_avg": 0.1584,
"updates": 8051195
}
]
},
"total_count": null,
"execution_time_ms": 368.45,
"next_cursor": null,
"has_more": null
}Authorizations
Your Hypedexer API key. Create one in the console at https://app.hypedexer.com. Authorization: Bearer <key> and the api_key query parameter are accepted as well.
Path Parameters
Coin symbol (e.g. BTC, @107 for a spot pair, xyz:TSLA for HIP-3)
Query Parameters
Start time (ISO UTC)
End time (ISO UTC); default = start + 30 days
Response
OK
The response is of type object.