KacDataDocs

API Reference

Historical Kalshi data downloads as daily Parquet files.

Base API Endpoint: https://api.kacdata.com/v1

V1 Parquet API

GEThttps://api.kacdata.com/v1/kalshi/{data_type}/{YYYY}/{MM}/{DD}/{symbol}.parquet

Returns one market's historical data for one data type and UTC date as a Parquet file. symbol is the Kalshi market_ticker for l2, trades and ticker, and markets_lifecycle for lifecycle (one file per day with every market).

See historical data details for availability and data schemas for file contents.

Authenticate with your API key in the api_key request header.

Path parameters

All path parameters are required.

NameTypeDescription
data_typestringl2, trades, ticker or lifecycle.
YYYY/MM/DDstringValid UTC date with a four-digit year and two-digit month and day, e.g. 2026/10/15.
symbolstringKalshi market_ticker, or markets_lifecycle for lifecycle. Tickers are case-sensitive.

Free accounts can download data older than 3 weeks (21 days). Data from the last 3 weeks needs Plus.

Example

Request one market's L2 data:

https://api.kacdata.com/v1/kalshi/l2/2026/10/15/KXBTC15M-26OCT150930-30.parquet

Request one day of lifecycle messages:

https://api.kacdata.com/v1/kalshi/lifecycle/2026/10/15/markets_lifecycle.parquet

Response

A successful request returns 200 OK with a Parquet file and consumes one download quota unit. Repeated downloads consume quota again.

Unavailable files return 404 Not Found and do not consume quota. A 404 for trades on a day the market has L2 data means it had no trades that day.

The endpoint returns the complete file; byte-range requests are not supported.

Errors

StatusMeaning
401 UnauthorizedThe API key is missing, invalid, or expired.
403 ForbiddenThe account is blocked from downloading, or a free account requested data from the last 3 weeks.
404 Not FoundThe path or parameters are invalid, or the requested file is unavailable.
429 Too Many RequestsThe account's download quota has been used up.

Error responses generally contain a JSON error field and may include a message. A free account requesting data from the last 3 weeks receives 403 Forbidden:

{
  "error": "Data from the last 3 weeks is not included in the free tier. Please upgrade at https://kacdata.com/pricing"
}

When a free account has insufficient download quota, the API returns 429 Too Many Requests:

{
  "error": "You have used up all your free download quota. Please upgrade at https://kacdata.com/pricing",
  "message": "You have used up all your free download quota. Please upgrade at https://kacdata.com/pricing"
}

Paid accounts with insufficient download quota receive 429 Too Many Requests:

{
  "error": "Too Many Requests",
  "message": "Download quota has been used up."
}