curl --request GET \
--url https://api.unitedmarket.ai/markets/groupedconst options = {method: 'GET'};
fetch('https://api.unitedmarket.ai/markets/grouped', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.unitedmarket.ai/markets/grouped"
response = requests.get(url)
print(response.text){
"data": [
{
"kind": "single",
"market": {
"id": "<string>",
"conditionId": "<string>",
"question": "<string>",
"polymarketSlug": "<string>",
"status": "<string>",
"feeRateBps": 100,
"feeRateBpsOverride": null,
"startTimestamp": "2023-11-07T05:31:56Z",
"matchStartTime": "2023-11-07T05:31:56Z",
"matchEndTime": "2023-11-07T05:31:56Z",
"endTimestamp": "2023-11-07T05:31:56Z",
"outcomes": [
{}
]
}
}
],
"pagination": {
"page": 1,
"pageSize": 60,
"total": 123,
"totalPages": 123,
"hasNext": true,
"hasPrev": true
}
}List markets grouped by event
Homepage-style listing. Each page item is either a single market (kind: single) or an event with its child markets (kind: group). Pagination counts events, not individual markets. Same filters as GET /markets except sortBy. Extra groupType selects the kind of group (for example SPORTS vs CRYPTO).
curl --request GET \
--url https://api.unitedmarket.ai/markets/groupedconst options = {method: 'GET'};
fetch('https://api.unitedmarket.ai/markets/grouped', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.unitedmarket.ai/markets/grouped"
response = requests.get(url)
print(response.text){
"data": [
{
"kind": "single",
"market": {
"id": "<string>",
"conditionId": "<string>",
"question": "<string>",
"polymarketSlug": "<string>",
"status": "<string>",
"feeRateBps": 100,
"feeRateBpsOverride": null,
"startTimestamp": "2023-11-07T05:31:56Z",
"matchStartTime": "2023-11-07T05:31:56Z",
"matchEndTime": "2023-11-07T05:31:56Z",
"endTimestamp": "2023-11-07T05:31:56Z",
"outcomes": [
{}
]
}
}
],
"pagination": {
"page": 1,
"pageSize": 60,
"total": 123,
"totalPages": 123,
"hasNext": true,
"hasPrev": true
}
}Query Parameters
Search market question, description, ids, polymarket slug, or group title. This is not q.
Filter by category.
Filter markets by tag slug.
Filter by sub-tag slug.
Filter by market group id.
Filter by exact market group slug.
Filter by group slug prefix (for example fifa-2026-top32-).
When true or 1, only markets with no groupId.
true, 1 Filter by sports bet type name (for example moneyline).
Market lifecycle status.
OPEN, CLOSED, RESOLVED, CANCELLED On-chain CLOB registration status.
PENDING, REGISTERED, FAILED Exclude bet types hidden from sports event lists.
true, 1 Include markets missing outcome token ids (admin tooling).
true, 1 Include markets whose tag is ARCHIVED (admin tooling; hidden from public listings by default).
true, 1 Page number. Used with pageSize. Alternative to offset.
x >= 1Items per page. Alias of limit when page / pageSize are omitted. Production clamps to 250.
1 <= x <= 250Page size. Markets and similar list endpoints clamp instead of 400: default 60, maximum 250, non-numeric values fall back to 60, and values below 1 become 1. Order list endpoints validate strictly and do return 400. The response pagination object uses page / pageSize.
1 <= x <= 250Number of items to skip.
x >= 0Restrict to groups of this type (for example SPORTS or CRYPTO).
