Events & Series

An event groups related markets under a shared outcome. A series is a recurring template that produces new events on a schedule. Query both to navigate the market hierarchy above individual markets.

GET/events
sdkclient.events.list(**params)

List events with optional filtering by category, series, or time range.

Parameters
qstr
Full-text search on event title.
categorystr
Filter by event category.
series_idstr
Filter by parent series.
recurringbool
Only events from recurring series.
end_afterint
Events ending after this timestamp (ms).
sortstr= "-created_at"
Sort field.
limitint= 50
Results per page.
cursorstr
Pagination cursor from previous response.
events = client.events.list(recurring=True) for event in events: print(event.title, event.market_count)
jsonResponse
{ "data": [ { "id": "a924d6c4-9f75-569c-...", "platform": "polymarket", "title": "Bitcoin above ___ on March 14?", "category": "Crypto", "series_id": "btc-multi-strikes-weekly", "series_recurrence": "daily", "market_count": 11, "end_date": 1773504000000 }, { "id": "031f37fb-4384-5ddc-...", "platform": "polymarket", "title": "Fed decision in April?", "category": "Economy", "series_id": "fomc", "series_recurrence": "monthly", "market_count": 2, "end_date": 1777420800000 } ], "meta": { "cursor": "...", "has_more": true } }
GET/events/{event_id}
sdkclient.events.get(event_id)

Retrieve a single event by ID.

event = client.events.get("252326") print(event.title, event.market_count)
jsonResponse
{ "id": "a924d6c4-9f75-569c-...", "platform": "polymarket", "title": "Bitcoin above ___ on March 14?", "category": "Crypto", "series_id": "btc-multi-strikes-weekly", "series_recurrence": "daily", "market_count": 11, "end_date": 1773504000000 }
GET/events/{event_id}/markets
sdkclient.events.markets(event_id, **params)

List all markets belonging to an event.

Parameters
statusstr
Filter by market status ("active", "closed", "resolved").
sortstr= "close_time"
Sort field.
limitint= 50
Results per page.
cursorstr
Pagination cursor from previous response.
markets = client.events.markets( "252326", status="active", sort="close_time" ) for m in markets: print(m.question, m.outcome)
jsonResponse
{ "data": [ { "id": "93cfbf00-1afc-537c-...", "question": "Will the price of Bitcoin be above $68,000 on March 14?", "status": "active", "outcomes": [ { "name": "Yes", "last_price": "0.9950" }, { "name": "No", "last_price": "0.0050" } ], "volume": "2241.2834", "strike": "68000" }, { "id": "8150b888-67f6-58ed-...", "question": "Will the price of Bitcoin be above $70,000 on March 14?", "status": "active", "outcomes": [ { "name": "Yes", "last_price": "0.9390" }, { "name": "No", "last_price": "0.0610" } ], "volume": "4637.1978", "strike": "70000" }, { "id": "9e8369e6-7bda-576a-...", "question": "Will the price of Bitcoin be above $72,000 on March 14?", "status": "active", "outcomes": [ { "name": "Yes", "last_price": "0.0170" }, { "name": "No", "last_price": "0.9830" } ], "volume": "3857.2195", "strike": "72000" } ], "meta": { "cursor": "...", "has_more": true } }
GET/series
sdkclient.series.list(**params)

List all available series with filtering.

Parameters
categorystr
Filter by category.
recurrencestr
Filter by recurrence interval ("5m", "15m", "hourly", "daily", "weekly").
is_rollingbool
Only rolling (true) or structured (false).
sortstr= "-market_count"
Sort field.
limitint= 50
Results per page.
series = client.series.list() for s in series: print(s.title, s.recurrence, s.market_count)
jsonResponse
{ "data": [ { "id": "btc-up-or-down-5m", "title": "BTC Up or Down 5m", "recurrence": "5m", "category": "Crypto", "is_rolling": true, "structured_type": null, "market_count": 4169 }, { "id": "btc-multi-strikes-weekly", "title": "BTC Multi Strikes Weekly", "recurrence": "daily", "category": "Crypto", "is_rolling": false, "structured_type": "survival", "market_count": 162 }, { "id": "tesla-hit-price-monthly", "title": "Tesla Hit Price Monthly", "recurrence": "monthly", "category": "Equities", "is_rolling": false, "structured_type": "barrier", "market_count": 9 } ], "meta": { "cursor": "...", "has_more": true } }
GET/series/{series_id}
sdkclient.series.get(series_id)

Get a single series by slug or UUID.

s = client.series.get("btc-multi-strikes-weekly") print(s.title, s.structured_type, s.market_count)
jsonResponse
{ "id": "a54be2bf-3198-5f30-...", "platform": "polymarket", "platform_series_id": "btc-multi-strikes-weekly", "title": "BTC Multi Strikes Weekly", "recurrence": "daily", "category": "Crypto", "is_rolling": false, "structured_type": "survival", "market_count": 162 }
GET/series/{series_id}/markets
sdkclient.series.markets(series_id, **params)

List all markets in a series, ordered chronologically.

Parameters
statusstr
Filter by market status ("active", "closed", "resolved").
sortstr= "close_time"
Sort field ("close_time", "volume").
limitint= 50
Results per page.
cursorstr
Pagination cursor from previous response.
# Rolling — iterate market instances for market in client.series.walk( "sol-up-or-down-5m" ): print(market.question) # Structured — iterate events for event in client.series.events( "btc-multi-strikes-weekly" ): print(event.title, event.market_count)
jsonResponse
{ "data": [{ "id": "e7f2a1b4-...", "question": "Bitcoin Up or Down — Mar 14, 8:30–8:35AM ET", "status": "resolved", "outcomes": [ { "name": "Up", "last_price": "1.0000" }, { "name": "Down", "last_price": "0.0000" } ], "winning_outcome": "Up", "volume": "41200.5000", "close_time": 1741955400000, "resolved_at": 1741955400000 }], "meta": { "cursor": "...", "has_more": true } }