List Markets
curl --request GET \
--url https://api.polyhistorical.com/v1/markets \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://api.polyhistorical.com/v1/markets"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://api.polyhistorical.com/v1/markets', 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.polyhistorical.com/v1/markets",
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: <x-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.polyhistorical.com/v1/markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-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.polyhistorical.com/v1/markets")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polyhistorical.com/v1/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"markets": [
{}
],
"total": 123,
"limit": 123,
"offset": 123,
"warning": "<string>",
"slug": "<string>",
"market_id": "<string>",
"event_id": "<string>",
"market_type": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"coin_price_start": 123,
"coin_price_end": 123,
"condition_id": "<string>",
"clob_token_up": "<string>",
"clob_token_down": "<string>",
"winner": "<string>",
"final_volume": 123,
"final_liquidity": 123,
"resolved_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}Polymarket
List Markets
List all markets with filtering and pagination
GET
/
v1
/
markets
List Markets
curl --request GET \
--url https://api.polyhistorical.com/v1/markets \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://api.polyhistorical.com/v1/markets"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://api.polyhistorical.com/v1/markets', 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.polyhistorical.com/v1/markets",
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: <x-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.polyhistorical.com/v1/markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-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.polyhistorical.com/v1/markets")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polyhistorical.com/v1/markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"markets": [
{}
],
"total": 123,
"limit": 123,
"offset": 123,
"warning": "<string>",
"slug": "<string>",
"market_id": "<string>",
"event_id": "<string>",
"market_type": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"coin_price_start": 123,
"coin_price_end": 123,
"condition_id": "<string>",
"clob_token_up": "<string>",
"clob_token_down": "<string>",
"winner": "<string>",
"final_volume": 123,
"final_liquidity": 123,
"resolved_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}List Markets
Returns markets sorted bystart_time descending (newest first).
Request
https://api.polyhistorical.com/v1/markets
Headers
string
required
Your API key. See Authentication.
Query parameters
string
required
Cryptocurrency to query. Supported:
BTC, ETH, SOLinteger
default:"100"
Number of results to return (1-100)
integer
default:"0"
Pagination offset
string
Filter by market type:
5m, 15m, 1hr (all coins), 4hr, 24hr (BTC only)boolean
Filter by resolution status.
false for active markets, true for resolved.string
Filter markets starting after this time. Accepts epoch milliseconds or ISO 8601.
string
Filter markets starting before this time. Accepts epoch milliseconds or ISO 8601.
Response
array
Array of market objects
integer
Total number of markets matching the filter
integer
Number of results returned
integer
Current pagination offset
string
Warning message if applicable (null otherwise)
Market object fields
string
Market slug identifier
string
External market ID
string
External event ID
string
Market interval — 5m, 15m, 1hr (all coins), 4hr, 24hr (BTC only)
string
Market start time (ISO 8601)
string
Market end time (ISO 8601)
number
Coin price at market start (null if not yet recorded)
number
Coin price at market end (null if unresolved)
string
Polymarket condition ID
string
CLOB token ID for the “Up” outcome
string
CLOB token ID for the “Down” outcome
string
Winning outcome (null if unresolved)
number
Final trading volume (null if unresolved)
number
Final liquidity (null if unresolved)
string
Resolution timestamp (null if unresolved)
string
Record creation timestamp
string
Record last updated timestamp
Examples
Get active 5-minute BTC markets
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.polyhistorical.com/v1/markets?coin=BTC&market_type=5m&resolved=false&limit=10"
response = requests.get(
"https://api.polyhistorical.com/v1/markets",
params={"coin": "BTC", "market_type": "5m", "resolved": False, "limit": 10},
headers={"X-API-Key": API_KEY}
)
Response
{
"markets": [
{
"slug": "btc-updown-5m-1774975800",
"winner": "Down",
"market_id": "1793728",
"event_id": "325933",
"market_type": "5m",
"start_time": "2026-03-31T16:50:00Z",
"end_time": "2026-03-31T16:55:00Z",
"coin_price_start": 67701.82777476,
"condition_id": "0x740cfdbafa8d1b1d51729da79b05e641158d3a7c889175dab1eab20a2c92b5cc",
"clob_token_up": "83511279567738325562016865404511480598726292757090195771777541218161914729159",
"clob_token_down": "66091509674921971407227514952521456996907573303653223323107401767726760115252",
"final_volume": 202849.44,
"final_liquidity": 12435.04,
"coin_price_end": 67611.61304387,
"resolved_at": "2026-03-31T16:55:25Z",
"created_at": "2026-03-31T16:50:00.943587Z",
"updated_at": "2026-03-31T17:21:20.768590Z"
}
],
"total": 2289,
"limit": 50,
"offset": 0,
"warning": null
}
Data access limits by plan
| Plan | BTC 5m & 15m | BTC 1h & 4h | BTC 24h | ETH/SOL Polymarket | Binance Spot | Binance Futures |
|---|---|---|---|---|---|---|
| Starter (Free) | Last 50 | Last 24 | Last 5 | — | — | — |
| Pro | 31 days | 31 days | 31 days | 31 days | 31 days | 31 days |
| Suite | 31 days | 31 days | 31 days | 31 days | 31 days | 31 days |