Get Kalshi Orderbooks
curl --request GET \
--url https://api.predexon.com/v2/kalshi/orderbooks \
--header 'x-api-key: <api-key>'import requests
url = "https://api.predexon.com/v2/kalshi/orderbooks"
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.predexon.com/v2/kalshi/orderbooks', 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.predexon.com/v2/kalshi/orderbooks",
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.predexon.com/v2/kalshi/orderbooks"
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.predexon.com/v2/kalshi/orderbooks")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.predexon.com/v2/kalshi/orderbooks")
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{
"snapshots": [
{
"ticker": "<string>",
"timestamp": 123,
"yes_bids": [
{
"price": 123,
"size": 123
}
],
"yes_asks": [
{
"price": 123,
"size": 123
}
],
"best_bid": 123,
"best_ask": 123,
"bid_depth": 123,
"ask_depth": 123,
"sequence": 123
}
],
"pagination": {
"limit": 123,
"count": 123,
"has_more": true,
"pagination_key": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}Orderbooks
Orderbook History
Fetch historical orderbook snapshots for a Kalshi market
GET
/
v2
/
kalshi
/
orderbooks
Get Kalshi Orderbooks
curl --request GET \
--url https://api.predexon.com/v2/kalshi/orderbooks \
--header 'x-api-key: <api-key>'import requests
url = "https://api.predexon.com/v2/kalshi/orderbooks"
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.predexon.com/v2/kalshi/orderbooks', 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.predexon.com/v2/kalshi/orderbooks",
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.predexon.com/v2/kalshi/orderbooks"
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.predexon.com/v2/kalshi/orderbooks")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.predexon.com/v2/kalshi/orderbooks")
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{
"snapshots": [
{
"ticker": "<string>",
"timestamp": 123,
"yes_bids": [
{
"price": 123,
"size": 123
}
],
"yes_asks": [
{
"price": 123,
"size": 123
}
],
"best_bid": 123,
"best_ask": 123,
"bid_depth": 123,
"ask_depth": 123,
"sequence": 123
}
],
"pagination": {
"limit": 123,
"count": 123,
"has_more": true,
"pagination_key": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}Fetch historical orderbook snapshots for a Kalshi market. Data starts from January 7th, 2026.
This endpoint will be deprecated soon. Kalshi prices markets in sub-cent
increments; this endpoint rounds prices to whole cents, which widens spreads and
merges neighboring price levels. Use the
Sub-Cent Orderbook History endpoint
instead. The deprecation date will be announced in the changelog.
Free & Unlimited. This endpoint does not count toward your monthly usage limits on any plan.
| Constraint | Value |
|---|---|
limit | 1–2000 (default 100) |
Timestamps are in milliseconds. Prices are in cents (1–99).
Authorizations
Query Parameters
The Kalshi market ticker
Start time in Unix timestamp (milliseconds)
End time in Unix timestamp (milliseconds)
Maximum number of snapshots to return
Required range:
1 <= x <= 2000Pagination key to get the next chunk of data
⌘I
