Skip to main content
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

string
Full-text search on question. Required when series_id is not provided.
string
Filter to one series. Examples: KXBTC15M, btc-up-or-down-15m, KXFEDDECISION. Required when q is not provided.
string
kalshi or polymarket.
string
default:"active"
active (still trading) or closed (settled with a result).
string
Exact category match.
integer
Minimum volume.
integer
Minimum liquidity.
string
ISO timestamp. Returns markets with settled_at >= settled_after. Pair with status=closed for backtest workflows.
string
ISO timestamp. Returns markets with settled_at <= settled_before.
string
ISO timestamp filter on discovered_at. For polling new listings.
string
default:"relevance"
relevance, newest, volume, or liquidity. relevance requires q; without q the default is newest.
integer
default:"20"
1-100.
integer
default:"0"
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 returned market_id values feed directly into the Kalshi historical endpoints.
Filter markets across series by keyword. Sort by volume to surface the most active.

Response

Errors