> Full docs in one file: https://kacdata.com/llms-full.txt

# Markets catalog

Source: https://kacdata.com/docs/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](https://kacdata.com/docs/api-reference).

`https://api.kacdata.com/v1/kalshi/markets.parquet`

## Schema

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_start` and `record_end` are UTC dates, the same dates as in the download URL `/{YYYY}/{MM}/{DD}/`.
- A date between `record_start` and `record_end` can still have no file. The API then returns `404 Not Found`, which uses no download quota.

## Example

Find markets in a series, then see which dates KacData recorded:

```python

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:

```text
https://api.kacdata.com/v1/kalshi/l2/{YYYY}/{MM}/{DD}/{market_ticker}.parquet
```

The catalog covers L2. A market can have L2 on a day with no `trades` file; see [API reference](https://kacdata.com/docs/api-reference#response).
