Search markets
Search
Search markets
Find markets by text query, by series, or both.
GET
Search markets
You must pass either
q or series_id (or both). Requests with neither return 400.
Use q for free-text search and series_id to scope results to one series. If you don’t have a series_id yet, find one via Search series. To list every outcome under a single known event, use Event markets instead.
Parameters
Full-text search on
question. Required when series_id is not provided.Filter to one series. Examples:
KXBTC15M, btc-up-or-down-15m, KXFEDDECISION. Required when q is not provided.kalshi or polymarket.active (still trading) or closed (settled with a result).Exact category match.
Minimum volume.
Minimum liquidity.
ISO timestamp. Returns markets with
settled_at >= settled_after. Pair with status=closed for backtest workflows.ISO timestamp. Returns markets with
settled_at <= settled_before.ISO timestamp filter on
discovered_at. For polling new listings.relevance, newest, volume, or liquidity. relevance requires q; without q the default is newest.1-100.
Pagination offset. The response is a bare JSON array — increment
offset by limit until you receive an empty array.Examples
Settled-window discovery for a backtest
List the closed markets that resolved in a window for a known series. The returnedmarket_id values feed directly into the Kalshi historical endpoints.
Free-text search
Filter markets across series by keyword. Sort by volume to surface the most active.Response
Errors
| Code | Reason |
|---|---|
400 | Neither q nor series_id provided. |