Search
Search
Search markets and events with a unified text query, rich filters, and full detail in each result.
GET
Search
Discover markets and events with a single text field (
Leverage filters vs market
Text search plus NO-side cap:
Sports + leverage sort:
Open and resolved markets together:
Only markets under review:
q), structured filters (category, sports, resolution time, price, margin), per-side leverage bounds, and full market or event detail in each hit.
Query Parameters
string
Unified search phrase (whitespace normalized). Minimum 2 characters when non-empty. Matched against market and event titles, descriptions, outcome labels, and
condition_id (token + substring).string
Category slug:
politics, sports, crypto, wtf, tech, finance.string
Comma-separated lifecycle filters (OR semantics). Each value must be one of
open, under_review, resolved, closed (lowercase). Examples: open, open,resolved, resolved,closed.For events, a hit matches if any sub-market falls in the selected bucket(s). See Lifecycle filters.string
Comma-separated sport slugs from Sports catalog.
string
Comma-separated league slugs from the catalog (
leagues[].slug). Requires sport on the same request.integer
Unix timestamp (seconds, UTC). Only include markets/events with resolution time after this value.
integer
Unix timestamp (seconds, UTC). Only include markets/events with resolution time before this value. Must be greater than
resolution_time_gt when both are set.string
Minimum YES-implied probability in
[0, 1] (decimal string). Filters on YES price bounds.string
Maximum YES-implied probability in
[0, 1]. Must be greater than or equal to price_gte when both are set.boolean
When
true, only margin-enabled markets and events with at least one margin sub-market. When false, only non-margin markets and events with at least one non-margin sub-market.string
Minimum indexed
max_leverage_yes (inclusive). Matches config.max_leverage_yes on market detail. Non-margin markets use 0.string
Maximum indexed
max_leverage_yes (inclusive). Use 0 for spot-only. Must be greater than or equal to max_leverage_yes_gte when both are set.string
Minimum indexed
max_leverage_no (inclusive). Matches config.max_leverage_no on market detail. Non-margin markets use 0.string
Maximum indexed
max_leverage_no (inclusive). Use 0 for spot-only. Must be greater than or equal to max_leverage_no_gte when both are set.string
Restrict hits to
market or event only. Omit to return both. result_type alone is not enough — combine with another filter or non-empty q.string
Sort key. One of
created, ending_soon, last_trade, leverage, market_cap, total_volume, trending.integer
default:"20"
Number of records to return. Range: 1-100.
string
Opaque cursor from
meta.next_cursor. Pass unchanged; do not decode or construct manually.At least one filter is required: non-empty
q, any structured filter above (including max_leverage_yes_* / max_leverage_no_*), a valid sport / league pair from the catalog, or a non-empty state value.Lifecycle filters
Pass one or more buckets, comma-separated; results match if any bucket matches (OR). These filters are search-only lifecycle buckets — not the same as thestate field on individual market or event resources.
Duplicate values in the same request are ignored (
open,open is the same as open). Unknown values return 400.
Leverage filters vs market config
You can filter YES and NO independently (for example, high YES leverage with low NO leverage). Event rows use the maximum YES and NO leverage across their sub-markets for indexing.
Sort keys
With a non-empty
q and no sort, the API ranks by text relevance first.
Example requests
Margin markets with YES leverage at least 3×:Response
array
Search result rows.
object | null
Pagination:
limit and opaque next_cursor. On error responses, meta is null.object | null
null on success. Error object on failed requests.