Kalshi daily-weather
checking…
Every orderbook delta, trade, and lifecycle event for Kalshi daily-high
and daily-low temperature markets (KXHIGH*,
KXLOW*). Recorded tick-by-tick, archived to Parquet.
Data available
Loading live stats…
How to get data
Historical archive — /history/ 🔒 Bearer token
Daily Parquet (data.parquet = every message;
tob.parquet = reconstructed top-of-book) and the raw gzipped
JSONL, partitioned by date. Browse the tree or fetch a file directly.
All requests need Authorization: Bearer <token>.
# browse what's there
curl -H "Authorization: Bearer $TOKEN" \
https://kalshi-dailyweather.feeds.directory/history/parquet/
# pull one sealed day's top-of-book
curl -H "Authorization: Bearer $TOKEN" -O \
https://kalshi-dailyweather.feeds.directory/history/parquet/year=2026/month=06/day=07/tob.parquet
Live stream — /ws 🔒 token on CONNECT
A NATS WebSocket. Every recorded message is also published to
kalshi.<msg_type>.<ticker> in real time. Subscribe
with the NATS client of your choice; authenticate with the shared token.
# nats CLI (token auth)
nats sub --server wss://kalshi-dailyweather.feeds.directory/ws \
--user shared --password "$TOKEN" "kalshi.>"
Need a token? It's a single shared Bearer/NATS credential — ask the
operator. /health and this page need no auth.
What a record looks like
A raw message from data.parquet (denormalised columns + full JSON payload):
loading…
A reconstructed top-of-book change from tob.parquet:
loading…
Schema
| file | columns |
|---|---|
data.parquet |
recv_ns, seq, msg_type, ticker, channel, payload — one row per message; payload is the full Kalshi message as JSON. |
tob.parquet |
recv_ns, ticker, yes_bid, yes_ask, yes_mid — one row per top-of-book change (sparse). Skip replaying orderbook_delta yourself. |