markets

Search and browse markets across all exchanges.

Supports:

  • Exact match on ticker, condition_id, slug, river_id
  • Full-text search on name, description, tags
  • Browse by filters (no query required)
  • Results ranked by relevance
  • Keyset pagination with cursor / next_cursor in every mode

Only active markets are searched. An exact identifier (river_id, condition_id, slug, Kalshi ticker) resolves its market whatever the status.

get/v1/markets/search

Request

  • Base URL
    https://api.rivermarkets.com (the document declares no server; this is the origin it was published from)
  • URL
    https://api.rivermarkets.com/v1/markets/search
  • Auth
    none declared

Query parameters

qstring nullable

Search query

exchange_namestring nullable

Filter by exchange name (KALSHI, POLYMARKET)

categorystring[] nullable

Filter by canonical category. Repeat the param to filter to multiple categories (Sports, Crypto, Politics, Finance, Entertainment, Science & Tech, Weather, World Affairs, Health, Social, Other).

subcategorystring nullable

Filter by subcategory (e.g. Basketball, Football)

expiration_date_startstring date-time nullable

Start of expiration date range (inclusive, ISO 8601)

expiration_date_endstring date-time nullable

End of expiration date range (exclusive, ISO 8601)

start_datetime_afterstring date-time nullable

Filter to markets with start_datetime >= this (ISO 8601)

start_datetime_beforestring date-time nullable

Filter to markets with start_datetime < this (ISO 8601)

event_tickerstring nullable

Filter by event_ticker (exact match)

last_price_minnumber nullable

Filter to markets with last_price >= this value (0.0–1.0 YES probability).

last_price_maxnumber nullable

Filter to markets with last_price <= this value (0.0–1.0 YES probability).

volume_mininteger nullable

Filter to events whose total summed volume >= this value.

sort_by'trending' | 'volume' | 'newest' | 'ending-soon' | 'start-time' | 'price'

sort_by values for /v1/markets/search, in flat and event mode alike.

Sort mode: trending, volume, newest, ending-soon, start-time, price. Without it a text search orders events by relevance.

include_combos'exclude' | 'include' | 'only'

How /v1/markets/search treats combos (is_combo: Kalshi parlays, Polymarket US caoc- / crossd-).

  • EXCLUDE (default): drop combos — standard markets/browse behaviour.
  • INCLUDE: return combos alongside standard markets.
  • ONLY: return combos exclusively (the Combos browse tab / parlay search).

How to treat parlays: 'exclude' (default), 'include' alongside standard markets, or 'only' combos.

limitinteger

Maximum number of results

offsetinteger

Offset for pagination, at most 10000. To enumerate further, page with cursor.

event_limitinteger nullable

Paginate by events instead of markets. Up to 200 by default; values above that require start_datetime_after or start_datetime_before.

event_offsetinteger nullable

Event offset for event-based pagination, at most 10000. To enumerate further, page with cursor.

markets_per_eventinteger nullable

With event pagination, cap the markets returned per event to the top N by volume (query-matched markets always survive the cap). Each row's event_market_count carries the event's full market count so clients can lazy-load the rest.

cursorstring nullable

Opaque cursor from a previous response's next_cursor. Send it with the same query and filters, without offset / event_offset, to get the next page. Works in every sort mode.

Response

Successful Response

querystring required
totalinteger required
total_eventsinteger nullable
next_cursorstring nullable

Opaque cursor for the next page; pass it back as cursor with the same query and filters. Null when this is the last page.

Changes