curl --request GET \
--url https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics"
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics', 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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics",
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics"
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics")
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{
"data": [
{
"liquidity": 45678,
"spread": 0.015,
"t": "2025-09-05T10:00:00Z",
"volume": 1200.5
},
{
"liquidity": 47010,
"spread": 0.012,
"t": "2025-09-05T11:00:00Z",
"volume": 980
}
],
"market_id": "618831",
"metadata": {
"count": 2,
"limit": 100
},
"resolution": "1h"
}Polymarket Liquidity & Volume Metrics API
Get historical market-level metrics including volume, liquidity, and spread.
Pagination limits:
- Default
limit: 100 points per page - Maximum
limit: 200 points per page - Use
cursorfrommetadata.next_cursorto fetch the next page
Aggregation: All metrics are averaged when aggregating to higher resolutions.
Format: JSON only. Covers Polymarket crypto markets from the PolyOrderbooks historical archive.
curl --request GET \
--url https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics"
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics', 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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics",
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics"
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.polyorderbooks.com/v1/markets/{id_or_slug}/metrics")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polyorderbooks.com/v1/markets/{id_or_slug}/metrics")
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{
"data": [
{
"liquidity": 45678,
"spread": 0.015,
"t": "2025-09-05T10:00:00Z",
"volume": 1200.5
},
{
"liquidity": 47010,
"spread": 0.012,
"t": "2025-09-05T11:00:00Z",
"volume": 980
}
],
"market_id": "618831",
"metadata": {
"count": 2,
"limit": 100
},
"resolution": "1h"
}Authorizations
Path Parameters
Market ID or market slug.
1 - 200"618831"
Query Parameters
Inclusive range start. Accepts ISO 8601 timestamp or Unix seconds.
"2025-09-01T00:00:00Z"
"1756684800"
Exclusive range end. Accepts ISO 8601 timestamp or Unix seconds.
"2025-09-05T00:00:00Z"
"1757030400"
Aggregation bucket size.
1s, 1m, 5m, 10m, 15m, 1h, 6h, 1d Maximum number of points to return in this page. Default: 100, max: 200.
x >= 1100
Opaque cursor from a previous response metadata.next_cursor.
Response
Historical market-level metrics in the requested resolution.
Response body for GET /markets/{id_or_slug}/metrics.
Canonical market ID.
"618831"
Applied resolution.
"1h"
Chronological time series points for the requested range.
Show child attributes
Show child attributes
Pagination metadata for this history page.
Show child attributes
Show child attributes