latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-195797564.0 KB

be0e25f93c7d

Markets

Explore markets

Browse whale-active titled markets with category, platform, status, and keyword filters. Explore is Polymarket-only: the platform parameter is accepted for backward-compatibility but every request returns Polymarket markets. Paginates visible discovery entries rather than raw market rows, returns live category/platform facets alongside grouped event clusters or standalone markets, and includes total on the first page only. Each grouped event contains at most 12 markets, retaining the selected representative within that cap. Categories come straight from provider metadata (Polymarket Gamma) and facets are flat value/label/count rows.

get/api/v1/markets/explore

Query parameters

categorystring

Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Facet values are returned as the canonical bucket.

status'active' | 'closed' | 'all'

Filter by market status.

platform'polymarket'

Filter by source platform. Explore is Polymarket-only; polymarket is the only supported value and the parameter is accepted for backward-compatibility but does not change the result set.

sort'trending' | 'hot' | 'expiring' | 'whales' | 'volume' | 'newest'

Sort order for the discovery feed.

cursorstring

Opaque pagination cursor from the previous response.

limitinteger

Page size.

qstring

Keyword search against market titles.

Headers

If-None-Matchstring

Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.

Response

Grouped market discovery results

object'list' required
has_moreboolean required
next_cursorstring nullable
totalinteger nullable

Total matching visible entries after grouping. Present on the first page and omitted on cursor pages.

computed_atstring date-time

When this response body was computed. Present whenever the body came from, or was just written to, the 60s explore cache. Pair it with fresh_for_seconds to derive how much longer the body may be reused: fresh_for_seconds - age(computed_at). Excluded from the ETag validator, so a body recomputed with identical data keeps its validator.

fresh_for_secondsinteger

How long the body computed at computed_at is good for, in seconds. Deliberately not pre-subtracted: a cached body cannot carry a number that changes while it sits in the cache. Excluded from the ETag validator.