Data Schemas
Markets catalog
A free Parquet file listing every Kalshi market KacData has recorded, with the UTC dates it has L2 data for.
The markets catalog is one Parquet file that lists the Kalshi markets KacData has recorded, and the UTC dates it has L2 data for each one. It needs no API key, uses no download quota and is updated once a day.
Use it to find a market's market_ticker and dates, then download the data with the API reference.
GET
https://api.kacdata.com/v1/kalshi/markets.parquetSchema
Columns are listed in file order.
| # | Field | Type | Description |
|---|---|---|---|
| 1 | exchange | string | Exchange: kalshi. |
| 2 | event_ticker | string | Kalshi event ticker. One event can contain many markets. |
| 3 | market_ticker | string | Kalshi market ticker. Use it as {market_ticker} in the API. |
| 4 | record_start | timestamp (UTC) | First UTC date KacData has L2 data for the market. |
| 5 | record_end | timestamp (UTC) | Last UTC date KacData has L2 data for the market. Updated daily while the market is still being recorded. |
| 6 | market_start | timestamp (UTC) | Market open time set by Kalshi. |
| 7 | market_end | timestamp (UTC) | Market close time set by Kalshi. |
| 8 | title | string | null | Market question. |
| 9 | event_title | string | Event title. |
| 10 | yes_sub_title | string | null | Kalshi's yes_sub_title. It is not an outcome name, and is usually the same as no_sub_title. |
| 11 | no_sub_title | string | null | Kalshi's no_sub_title. |
| 12 | series | string | Kalshi series ticker, e.g. KXBTC15M. |
| 13 | category | string | Kalshi category, e.g. Elections. |
Dates
record_startandrecord_endare UTC dates, the same dates as in the download URL/{YYYY}/{MM}/{DD}/.- A date between
record_startandrecord_endcan still have no file. The API then returns404 Not Found, which uses no download quota.
Example
Find markets in a series, then see which dates KacData recorded:
import pandas as pd
url = "https://api.kacdata.com/v1/kalshi/markets.parquet"
catalog = pd.read_parquet(url)
matches = catalog[catalog["series"] == "KXBTC15M"]
# Or search the market question
# matches = catalog[catalog["title"].str.contains("House", case=False, na=False)]
print(matches[["market_ticker", "title", "record_start", "record_end"]])Then download a date in that range:
https://api.kacdata.com/v1/kalshi/l2/{YYYY}/{MM}/{DD}/{market_ticker}.parquetThe catalog covers L2. A market can have L2 on a day with no trades file; see API reference.