Event and market monitoring
Use Kalshi endpoints to turn event and market monitoring into repeatable API requests with documented inputs and JSON responses.
Collect Kalshi events, markets, series, recent trades, order books, exchange schedule, and historical market candlesticks as normalized JSON for dashboards and research. Not investment advice or real-time trading data.
Extract Kalshi events, markets, series, trades, order books, and historical market data as structured JSON from credential-free public exchange data.
Endpoint families
6
Documented params
84
Examples
21
Live catalog snapshot
Active endpoints
21
Methods
GET
Required params
32
Schema refs
21
{
"platform": "Kalshi",
"endpoint": "kalshi-events",
"method": "GET",
"path": "/kalshi/events",
"auth": "apiKey"
}Related use cases
Use cases
Extract Kalshi events, markets, series, trades, order books, and historical market data as structured JSON from credential-free public exchange data.
Use Kalshi endpoints to turn event and market monitoring into repeatable API requests with documented inputs and JSON responses.
Use Kalshi endpoints to turn order book and trade research into repeatable API requests with documented inputs and JSON responses.
Use Kalshi endpoints to turn historical market data collection into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Kalshi endpoint catalog — 21 endpoints, 84 documented request parameters, and 21 published response schemas — the same catalog Docs and Playground run against.
21 documented Kalshi endpoints, grouped into 8 request families — Historical, Event and Market, plus 5 more.
84 request parameters are documented across those Kalshi endpoints, 32 of them required — the full input contract is public before you write any integration code.
21 of the 21 Kalshi endpoints ship a recorded example response, and 21 carry a documented response schema — you can code against the real JSON before the first request.
Kalshi endpoints document their error responses (400, 404, 429, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
21 hosted MCP tools back the Kalshi endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/kalshi/historical/markets
/kalshi/event/{event_ticker}
/kalshi/market/{ticker}
/kalshi/markets
/kalshi/events
/kalshi/exchange/status
Featured endpoints
/kalshi/eventsLists Kalshi events, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by `series_ticker`, `category`, `status` (`open`, `closed` or `settled`), `min_close_ts` and `min_updated_ts`. `with_nested_markets` adds each event's markets. Each event has its ticker, title, category and strike period. A `cursor` is returned when more rows exist.
Response notes
- `data.cursor` is present when Kalshi returns a next-page cursor. - Invalid `status`, `min_close_ts`, or `min_updated_ts` values return invalid-parameter errors before upstream IO.
Sampled 14 Oct 2026: 20 items, 6 fields filled in every item, 3 not. last_updated: 2026-08-27 to 2026-10-09; category: Elections (7), Politics (4), Science and Technology (3) and 3 more.
MCP tool kalshi_events
/kalshi/event/{event_ticker}Returns one Kalshi event by `event_ticker` (such as `KXELONMARS-99`) together with its markets. The event has its series ticker, title, subtitle, category, strike period and mutually-exclusive flag; each market has prices, bid and ask, volume, open interest, status and rules. An unknown ticker returns a not-found error.
Response notes
- Invalid or empty event tickers return invalid-parameter errors before upstream IO. - Missing upstream events return not-found errors.
Sampled 14 Oct 2026: 1 item, 19 fields filled in every item. open_time: 2025-08-28; ticker: “KXELONMARS-99”.
MCP tool kalshi_event
/kalshi/marketsLists Kalshi markets, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by `event_ticker`, `series_ticker`, `ticker`, or `status` (`unopened`, `open`, `closed` or `settled`). Each market has its title, status, prices, bid and ask, volume, open interest and rules text. A returned status can read `active` even though the filter does not accept it.
Response notes
- Invalid `status` values return invalid-parameter errors before upstream IO. - The upstream response status field can contain exchange lifecycle values such as `active`; the query `status` filter still only accepts `unopened`, `open`, `closed`, and `settled`. - This endpoint is not investment advice or real-time trading data.
Sampled 14 Oct 2026: 20 items, 18 fields filled in every item. open_time: 2026-10-13; ticker: “KXMVECROSSCATEGORY0-S20262BC98949215-DF1C410E741” and 19 other values.
MCP tool kalshi_markets
/kalshi/market/{ticker}Returns one Kalshi market by `ticker` (such as `KXELONMARS-99`). The response has the title, subtitle, event ticker, status, result, open, close and expiration times, last and previous price, yes and no bid and ask, volume, 24-hour volume, open interest, liquidity and rules text. An unknown ticker returns a not-found error.
Response notes
- Invalid or empty market tickers return invalid-parameter errors before upstream IO. - Missing upstream markets return not-found errors. - This endpoint is not investment advice or real-time trading data.
Sampled 14 Oct 2026: 19 of 19 fields returned with a value. market.open_time: 2025-08-28; market.last_price: 0.09.
MCP tool kalshi_market
/kalshi/market/{ticker}/orderbookReturns the order book for one Kalshi market by `ticker`: bid levels for the `yes` side and the `no` side, each with `price` and `size`. Kalshi publishes bids only, so ask levels are not listed. The response also carries a `raw_unit_hint` for the price unit.
Response notes
- Uses Kalshi's unauthenticated market orderbook JSON. - Kalshi returns bid levels for yes and no sides; no ask levels are returned directly.
Sampled 14 Oct 2026: 35 items, 2 fields filled in every item. price: 0.01 to 0.89, median 0.51; size: 7.84 to 19,691, median 400.
MCP tool kalshi_market_orderbook
/kalshi/tradesLists recent Kalshi trades, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by market `ticker` and by created time with `min_ts` and `max_ts` (Unix seconds, at most 366 days apart). Each trade has its id, count, yes and no price, taker side and created time.
Response notes
- Trade prices are normalized from dollar fields such as `yes_price_dollars` and `no_price_dollars`. - `min_ts` must be before `max_ts` when both are provided, and timestamp ranges are capped at 366 days. - This endpoint is not investment advice or real-time trading data.
Sampled 14 Oct 2026: 20 items, 10 fields filled in every item. created_time: 2026-10-11 to 2026-10-13; taker_side: yes (14), no (6).
MCP tool kalshi_trades
Related APIs
Prediction Markets
Collect Polymarket event and market detail, token prices, order books, midpoints, spreads, price history, tags, sports, leaderboards, and trade activity as normalized JSON for dashboards, research, and agent-native workflows. Not investment advice or real-time trading data.
Prediction Markets
Collect Metaculus questions, community forecasts and forecast history, question metadata, options, and comment feeds as normalized JSON for research and tracking. Not investment, forecasting, or decision advice.
How to scrape Kalshi
Kalshi is a regulated event exchange whose public market data is credential-free but split across live and historical services. Crawlora's 21 Kalshi endpoints return events, markets, series, order books, trades, schedules, and historical candlesticks as normalized JSON. Research data, not investment advice or a trading connection.
List events with a status of open, closed, or settled — optionally with nested markets — or list series and open one by its ticker.
Markets are addressed by ticker: market detail, order book, and trades all take it, and market lists filter by event or series ticker.
Market and event history take start and end timestamps with a period interval, and batch variants take several market tickers at once.
Exchange status and schedule tell you whether the exchange is open, and the historical-cutoff endpoint tells you how far back the historical services reach.
FAQ
Kalshi publishes credential-free public market-data JSON, which is what these endpoints read. Crawlora is not affiliated with Kalshi and this is not a trading connection — it is read-only data behind one key with a consistent response shape.
The live set covers currently listed events, markets, order books, and trades. The historical set covers settled and archived markets, and the historical-cutoff endpoint tells you the boundary between them so you know which to query for a given date.
Market history takes a ticker with start and end timestamps and a period interval. The batch variant takes a list of market tickers, so you can chart every market in an event at once.
No. These endpoints are read-only market data for dashboards and research. Crawlora is not a broker or an investment adviser, and nothing here is investment advice.
Yes. Kalshi's official API assigns every new account its default Basic tier — 200 read / 100 write tokens per second — and reserves the higher Advanced through Prime tiers for accounts that clear a trailing 30-day trading-volume threshold or get manually upgraded by Kalshi. A research or dashboard use case with no trading volume has no self-serve path to a higher tier; these endpoints read the same public data behind one Crawlora key instead.