Markets
Browse and search all markets across platforms. Paginated by internal market id (stable order). Each market includes its latest price data. Pagination cursors are tied to the exact filter set: reuse next_cursor only with the same platform, status, category, and q parameters.
/v2/marketsParameters
platformstringFilter by platform: polymarket, polymarket_us, kalshi, predictit, prophetx, opinion, predictfun, novig (lowercase).
statusstringMarket status: active, closed, or all. Default: active.
categorystringCategory filter (e.g. 'sports', 'politics', 'economics').
qstringKeyword search - matches the market title, the event/game phrasing (series_title, so a generic outcome title like "Bobby Witt Jr.: 1+" is findable by "home runs"), and the market_id.
limitintegerResults per page, from 1 to 2000. Default: 50. Invalid values return 400.
cursorstringOpaque cursor from a previous response. Must match the same filters (platform, status, category, q) as that response; otherwise the API returns 400.
includestringComma-separated optional sections to embed per market. Supported: rules (adds each market's resolution rules - primary, secondary, sources).
Response
marketsobject[]List of markets matching the filters.
Show 12 fields
idintegerInternal market ID.
market_idstringPlatform-native market identifier.
platformstringSource platform (polymarket, kalshi, etc.).
titlestringMarket title - the outcome/contract label (e.g. a candidate name, or "Total over 9.5"), not the full question. Use event_title for that.
event_titlestringFull event-level question this market belongs to (e.g. "2028 U.S. Presidential Election winner?"). Null when unavailable.
subtitlestringOutcome qualifier (e.g. party or bracket). Null when unavailable.
categorystringMarket category (sports, politics, economics, etc.).
statusstringMarket status (active, closed).
expiration_datestringISO 8601 expiration timestamp.
source_urlstringDirect link to the market on the platform.
priceobjectLatest price snapshot for this market.
Show 7 fields
yes_bidnumberBest bid for YES.
yes_asknumberBest ask for YES.
no_bidnumberBest bid for NO.
no_asknumberBest ask for NO.
last_pricenumberLast traded price.
volumeintegerTrading volume.
liquiditynumberCurrent liquidity (USD).
rulesobject | nullResolution rules for the market. Present only when the request passes include=rules; null when no usable rules exist.
Show 3 fields
primarystringPrimary resolution criterion.
secondarystringAdditional conditions / edge cases, when present.
sourcesobject[]Resolution sources, each with name, url, and type.
next_cursorstringOpaque cursor for the next page (null if none). Must be reused only with the same platform, status, category, and search query as the request that produced it; changing filters requires omitting the cursor and starting from the first page.
total_countinteger | nullTotal number of markets matching the filters (across all pages). Null when no platform, category, or search query is applied (unfiltered count is omitted to avoid expensive full-table scans).
as_ofstringISO 8601 UTC timestamp for when this page was read. When mirroring the full market set, pin the first page's as_of, walk every page until next_cursor is null, then swap your state - the id-ordered cursor keeps existing rows from shifting between pages, so no cross-page reconciliation is needed.