Market discovery
Query Polymarket markets with selected metrics, historical deltas, composable filters, and cursor pagination.
Request
/markets/discoverRESTSend a JSON body. Select the metrics you intend to display, then add filters, deltas, and sorting as needed.
curl --fail-with-body \
-X POST "$IMPLYRA_API_URL/markets/discover" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
"volume",
"liquidity",
"price"
],
"deltas": [
{
"metric": "price",
"window": "24h",
"compare": "delta_abs"
}
],
"sort": {
"metric": "volume",
"direction": "desc"
},
"pagination": {
"limit": 20
}
}'Body parameters
metricsstring[] · optionalFields to return. Volume is cumulative USD trading volume; liquidity is in USD; price is on the 0–1 scale. Holder fields require availability to be enabled.
deltasobject[] · optionalEach entry has metric, compare (delta_abs or delta_pct), and exactly one of window or since.
filtersobject · optionalAn AND / OR group containing numeric metric conditions and optional nested groups.
sortobject · optionalmetric and direction (asc or desc; default desc). Add window and compare together for delta sorting. Also accepts primary and fallback sort objects.
paginationobject · optionallimit (default 20, maximum 100) and an optional opaque cursor from the previous response.
searchstring · optionalSearch market text. Maximum 200 characters.
tags_any / tags_all / tags_nonestring[] · optionalFilter by lowercase tag slugs; maximum 50 per array.
price_min / price_maxnumber · optionalPrice bounds on the 0–1 scale.
stagesstring[] · optionalOne or more of new, building, peak, settling, and resolving.
nullsstring · optionalHow to sort unavailable deltas: last, exclude, or zero. Zero is limited to absolute delta comparisons.
Response
A successful request returns a markets array and pagination metadata. The example below uses illustrative values.
For 24-hour trading volume, request an absolute volume delta over 24h and read volume_24h.abs when its status is ok. The current metrics.volume field is cumulative volume.
{
"markets": [
{
"market_id": "example-market-id",
"condition_id": "example-condition-id",
"slug": "example-market",
"question": "Will the example event happen?",
"category": "Crypto",
"active": true,
"closed": false,
"age_seconds": 2592000,
"available_windows": [
"5m",
"15m",
"30m",
"1h",
"4h",
"24h",
"7d",
"30d"
],
"stage": "peak",
"price": 0.64,
"metrics": {
"volume": 1284512.33,
"liquidity": 391204.5,
"price": 0.64
},
"deltas": {
"price_24h": {
"abs": 0.04,
"status": "ok"
}
}
}
],
"pagination": {
"has_more": false
}
}Read delta status before values
Delta keys use the metric and requested window, such as price_24h. The status is one of ok, too_new, missing_history, or div0. An unavailable delta is not a zero change; preserve that distinction in your interface.