Get Kalshi Market Data
curl --request GET \
--url https://api.entityml.com/api/v1/kalshi/market/data \
--header 'Authorization: <authorization>'import requests
url = "https://api.entityml.com/api/v1/kalshi/market/data"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.entityml.com/api/v1/kalshi/market/data', 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.entityml.com/api/v1/kalshi/market/data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.entityml.com/api/v1/kalshi/market/data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.entityml.com/api/v1/kalshi/market/data")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.entityml.com/api/v1/kalshi/market/data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"market_ticker": "<string>",
"date": "<string>",
"data_count": 123,
"data": [
{}
],
"pagination": {}
}Kalshi
Get Kalshi Market Data
Retrieve raw Kalshi order book events for a specific market ticker on a given date.
GET
/
api
/
v1
/
kalshi
/
market
/
data
Get Kalshi Market Data
curl --request GET \
--url https://api.entityml.com/api/v1/kalshi/market/data \
--header 'Authorization: <authorization>'import requests
url = "https://api.entityml.com/api/v1/kalshi/market/data"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.entityml.com/api/v1/kalshi/market/data', 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.entityml.com/api/v1/kalshi/market/data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.entityml.com/api/v1/kalshi/market/data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.entityml.com/api/v1/kalshi/market/data")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.entityml.com/api/v1/kalshi/market/data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"market_ticker": "<string>",
"date": "<string>",
"data_count": 123,
"data": [
{}
],
"pagination": {}
}Request
Headers
string
required
Bearer token. Example:
Bearer YOUR_API_KEYQuery Parameters
string
required
The Kalshi market ticker. Values are normalized to uppercase.
string
required
UTC date to retrieve, formatted as
YYYY-MM-DD. Orderbook data exists for a subset of Kalshi markets from 2026-02-17, but coverage is not continuous. Broad Kalshi crypto-related coverage begins on 2026-02-25, and broad all-market capture begins on 2026-03-31, with known March 31-April 24 quality exceptions for affected Kalshi orderbook payloads.integer
Number of records to skip. Default:
0.integer
Maximum number of records to return. Default:
10000. Max: 100000.Response
string
The Kalshi market ticker.
string
The requested date.
integer
Number of records returned in the current page.
array
Array of raw Kalshi records, typically snapshots and deltas. Record shapes vary by source event type and may include fields like
type, timestamp, epoch_ms, seq, yes, and no.object
Standard pagination metadata with
offset, limit, total_count, and has_more.For arbitrary windows across one or more days, use Get Kalshi Market Data Range.
Example
from entityml import EntityMLClient
client = EntityMLClient(api_key="YOUR_API_KEY")
data = client.kalshi.get_market_data(
ticker="KXBTC-26FEB2606-B60125",
date="2026-02-26",
offset=0,
limit=500,
)
print(data["data_count"])
export ENTITY_API_KEY="YOUR_API_KEY"
entityml kalshi market-data \
--ticker KXBTC-26FEB2606-B60125 \
--date 2026-02-26 \
--offset 0 \
--limit 500
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.entityml.com/api/v1/kalshi/market/data?ticker=KXBTC-26FEB2606-B60125&date=2026-02-26&offset=0&limit=500"
Example response
{
"market_ticker": "KXBTC-26FEB2606-B60125",
"date": "2026-02-26",
"data_count": 1,
"data": [
{
"type": "snapshot",
"ticker": "KXBTC-26FEB2606-B60125",
"timestamp": "2026-02-26T11:01:16.000623+00:00",
"epoch_ms": 1772103676000,
"seq": null,
"yes": [],
"no": [[40, 14], [39, 290.81]]
}
],
"pagination": {
"offset": 0,
"limit": 500,
"total_count": 1,
"has_more": false
}
}
Use Get Kalshi Market Date Range first if you need to discover which UTC dates exist for a ticker.