AGG is currently in alpha. APIs, components, and docs may change.
Agg.market — Prediction Market Aggregator logo

List venue events

Returns paginated venue events with optional filters for venue, status, category, and search.

GEThttps://api.agg.market/venue-events

Returns paginated venue events with optional filters for venue, status, category, and search. DEPRECATION: the per-item description field is deprecated and will be removed from list responses — fetch the full event (including description) via GET /venue-events/:id. The embedded venueMarkets on each item are a top-N preview only; for the full market list use GET /venue-markets?venueEventId=.

Loading code example
Loading code example

Authorizations

appIdstringheaderrequired

API key passed in the header.

Query Parameters

venuesany
searchstring
matchStatusany
categoryIdsany
statusany
sortDir"asc" | "desc"
Allowed values: "asc" | "desc"
sortBy"volume" | "volume24hr" | "createdAt" | "endDate" | "arbReturn"
Allowed values: "volume" | "volume24hr" | "createdAt" | "endDate" | "arbReturn"
limitnumber
Required range: x >= 1, x <= 100
cursorstring
grouped"true" | "false"
Allowed values: "true" | "false"
aggKeyany
externalIdentifierany
venue"kalshi" | "polymarket" | "limitless" | "opinion" | "predict" | "probable" | "myriad" | "hyperliquid"
Allowed values: "kalshi" | "polymarket" | "limitless" | "opinion" | "predict" | "probable" | "myriad" | "hyperliquid"
recurrenceany

Response

application/json

200

dataarray<object>required
data.idstringrequired

Event id. List responses return one row per matched cluster, and for a matched event this id is the cluster anchor — the handle to use for cross-venue lookups. Re-resolve it from discovery rather than storing it as a permanent key: clusters can merge, after which the id remains a valid event but is no longer the cluster head. See the Matched Clusters guide.

data.externalIdentifierstringrequired
data.titlestringrequired
data.descriptionstring
data.imagestringrequired
data.venue"kalshi" | "polymarket" | "limitless" | "opinion" | "predict" | "probable" | "myriad" | "hyperliquid"required
Allowed values: "kalshi" | "polymarket" | "limitless" | "opinion" | "predict" | "probable" | "myriad" | "hyperliquid"
data.volumenumber
Required range: x >= 0
data.status"open" | "closed" | "resolved" | "unopened" | "paused"
Allowed values: "open" | "closed" | "resolved" | "unopened" | "paused"
data.startDatestring
data.endDatestring
data.creationDatestring
data.gameStartTimestring
data.categoriesarray<object>required
data.slugstring
data.subtitlestring
data.venuesarray<"kalshi" | "polymarket" | "limitless" | "opinion" | "predict" | "probable" | "myriad" | "hyperliquid">

Venues this row's matched cluster spans — use it for venue badges. On a cluster anchor this is the cluster-wide set; a non-anchor member usually reports the same set, but narrows to its own venue when none of its markets have cross-venue counterparts.

data.marketCountinteger

Number of markets on this event. Use this rather than the length of an embedded venueMarkets array, which is a preview on list responses.

Required range: x >= 0
data.venueCountinteger

Length of `venues` — the size of the matched cluster.

Required range: x >= 0
data.groupMarketCountinteger
Required range: x >= 0
data.updatedAtstring
data.venueMarketsarray<object>

Embedded markets. On list responses this is a preview of up to three markets chosen to represent the event on a card — not the complete set, and not necessarily the largest; use marketCount for totals. On the by-id response it is uncapped. Deprecated on both — fetch markets from GET /venue-markets?venueEventId=.

data.matchStatus"pending" | "unmatched" | "review" | "matched" | "verified" | "rejected"
Allowed values: "pending" | "unmatched" | "review" | "matched" | "verified" | "rejected"
data.arbReturnnumber
data.seriesobject
data.recurrencestring
data.aggKeystring

Deterministic canonical key computed from this venue's own data; null when not canonicalizable. This is a fetch filter, not a cross-venue join key — it is guaranteed identical across venues only for sports head-to-head and crypto up/down markets, and two members of the same matched cluster can carry different keys. Use the event id and matchedVenueMarkets for identity.

data.structureType"candidate" | "sport" | "axis" | "dates"
Allowed values: "candidate" | "sport" | "axis" | "dates"
data.sportstring
data.settlementDiffobject
data.matchedVenueEventsarray<object>
nextCursorstringrequired
hasMorebooleanrequired