curl --request GET \
--url https://api.struct.to/v1/polymarket/series/{identifier}/eventsimport requests
url = "https://api.struct.to/v1/polymarket/series/{identifier}/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.struct.to/v1/polymarket/series/{identifier}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.struct.to/v1/polymarket/series/{identifier}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.struct.to/v1/polymarket/series/{identifier}/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.struct.to/v1/polymarket/series/{identifier}/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.struct.to/v1/polymarket/series/{identifier}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"id": "",
"event_slug": null,
"title": null,
"ticker": null,
"description": null,
"resolution_source": null,
"category": null,
"image_url": null,
"market_count": 0,
"created_time": null,
"closed_time": null,
"start_time": null,
"end_time": null,
"neg_risk": false,
"neg_risk_market_id": null,
"game_status": null,
"show_market_images": false,
"status": null,
"metrics": {
"1m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"5m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"30m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"1h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"6h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"24h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"7d": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"30d": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"lifetime": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
}
},
"tags": [
{
"id": "",
"label": "",
"slug": null,
"volume_usd": 123,
"shares_volume": 123,
"builder_usd_volume": 123,
"builder_shares_volume": 123,
"txn_count": 123,
"builder_txn_count": 123,
"unique_traders": 123,
"unique_makers": 123,
"unique_takers": 123,
"unique_builder_traders": 123,
"fees_usd": 123,
"builder_fees_usd": 123
}
],
"markets": [
{
"condition_id": "",
"id": null,
"title": null,
"question": "",
"market_slug": "",
"status": "",
"created_time": null,
"end_time": null,
"volume": null,
"liquidity_usd": null,
"volume_24hr": null,
"image_url": null,
"market_maker_address": null,
"creator": null,
"category": null,
"accepting_orders": null,
"uma_resolution_status": null,
"clob_rewards": [
{
"id": "<string>",
"condition_id": "<string>",
"asset_address": "<string>",
"rewards_amount": 123,
"rewards_daily_rate": 123,
"start_date": "<string>",
"end_date": "<string>",
"rewards_max_spread": 123,
"rewards_min_size": 123,
"native_daily_rate": 123,
"sponsored_daily_rate": 123,
"total_daily_rate": 123,
"sponsors_count": 123
}
],
"outcomes": [
{
"name": "<string>",
"price": 123,
"position_id": "<string>",
"outcome_index": 123
}
],
"winning_outcome": {
"name": "<string>",
"price": 123,
"position_id": "<string>",
"outcome_index": 123
}
}
],
"series": {
"id": "",
"slug": null,
"ticker": null,
"title": null,
"description": null,
"series_type": null,
"recurrence": null,
"layout": null,
"image_url": null,
"icon_url": null,
"active": false,
"closed": false,
"archived": false,
"featured": false,
"restricted": false,
"pyth_token_id": null,
"cg_asset_name": null,
"start_date": null,
"event_count": 0
}
}
]Get series events
Returns a paginated list of events belonging to a specific Polymarket series, with full market data for each event.
curl --request GET \
--url https://api.struct.to/v1/polymarket/series/{identifier}/eventsimport requests
url = "https://api.struct.to/v1/polymarket/series/{identifier}/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.struct.to/v1/polymarket/series/{identifier}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.struct.to/v1/polymarket/series/{identifier}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.struct.to/v1/polymarket/series/{identifier}/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.struct.to/v1/polymarket/series/{identifier}/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.struct.to/v1/polymarket/series/{identifier}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"id": "",
"event_slug": null,
"title": null,
"ticker": null,
"description": null,
"resolution_source": null,
"category": null,
"image_url": null,
"market_count": 0,
"created_time": null,
"closed_time": null,
"start_time": null,
"end_time": null,
"neg_risk": false,
"neg_risk_market_id": null,
"game_status": null,
"show_market_images": false,
"status": null,
"metrics": {
"1m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"5m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"30m": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"1h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"6h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"24h": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"7d": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"30d": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
},
"lifetime": {
"volume": 0,
"shares_volume": 0,
"builder_usd_volume": 0,
"builder_shares_volume": 0,
"fees": 0,
"builder_fees": 0,
"txns": 0,
"builder_txns": 0,
"unique_traders": 0,
"unique_makers": 0,
"unique_takers": 0,
"unique_builder_traders": 0
}
},
"tags": [
{
"id": "",
"label": "",
"slug": null,
"volume_usd": 123,
"shares_volume": 123,
"builder_usd_volume": 123,
"builder_shares_volume": 123,
"txn_count": 123,
"builder_txn_count": 123,
"unique_traders": 123,
"unique_makers": 123,
"unique_takers": 123,
"unique_builder_traders": 123,
"fees_usd": 123,
"builder_fees_usd": 123
}
],
"markets": [
{
"condition_id": "",
"id": null,
"title": null,
"question": "",
"market_slug": "",
"status": "",
"created_time": null,
"end_time": null,
"volume": null,
"liquidity_usd": null,
"volume_24hr": null,
"image_url": null,
"market_maker_address": null,
"creator": null,
"category": null,
"accepting_orders": null,
"uma_resolution_status": null,
"clob_rewards": [
{
"id": "<string>",
"condition_id": "<string>",
"asset_address": "<string>",
"rewards_amount": 123,
"rewards_daily_rate": 123,
"start_date": "<string>",
"end_date": "<string>",
"rewards_max_spread": 123,
"rewards_min_size": 123,
"native_daily_rate": 123,
"sponsored_daily_rate": 123,
"total_daily_rate": 123,
"sponsors_count": 123
}
],
"outcomes": [
{
"name": "<string>",
"price": 123,
"position_id": "<string>",
"outcome_index": 123
}
],
"winning_outcome": {
"name": "<string>",
"price": 123,
"position_id": "<string>",
"outcome_index": 123
}
}
],
"series": {
"id": "",
"slug": null,
"ticker": null,
"title": null,
"description": null,
"series_type": null,
"recurrence": null,
"layout": null,
"image_url": null,
"icon_url": null,
"active": false,
"closed": false,
"archived": false,
"featured": false,
"restricted": false,
"pyth_token_id": null,
"cg_asset_name": null,
"start_date": null,
"event_count": 0
}
}
]Path Parameters
Series slug (e.g. 'btc-weekly-close') or series ID
Query Parameters
Filter by active events only (default: false)
Include tags array (default: true)
Include markets array (default: true)
Include metrics (default: true)
Number of events to return (default: 20, max: 250)
Row-skip offset (default: 0, max: 3500). Takes precedence over pagination_key when both are set.
Opaque cursor from a previous response. Pass verbatim to fetch the next page.
Response
List of events in this series
Event status: "open" or "closed"
Per-timeframe metrics keyed by lookback window. Each timeframe key is optional — present only when data exists for that window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
A Polymarket series from the Gamma API Series are parent groupings above events (e.g., "NBA Season 2024-25")
Show child attributes
Show child attributes
Was this page helpful?