Recipe 24 of 30
Walk every settled 5-minute BTC market in one script
Call /settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000 and pass each page's next_cursor back as cursor until has_more is false; about 17 pages hold every settled 5-minute BTC market since 2026-01-01.
GET /v1/polymarket/settlements/bulk returns on-chain settlements oldest first, 5,000 to a page. With slug_prefix=btc-updown-5m- it keeps only the 5-minute BTC markets, so the whole family since 2026-01-01, about 80,000 markets in October 2026, is about 17 requests. Your script repeats one call: send the next_cursor of the page you got as cursor, and stop when has_more is false. The full parameter list is on Settlements in bulk.
Quick answer
Page 1 of the walk is the family's prefix and a full page.
# page 1 of the walk: settled 5-minute BTC markets, oldest first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000"Example response
Captured from the live API on 2026-10-24 at 17:22 UTC, with limit=3, so the page is short; at limit=5000 the same three rows open it. The walk starts at the oldest settlement held for the family, on 2026-01-01 UTC. next_cursor is the last row's resolved_ts_ms and condition_id; the slug ends in the window's start in unix seconds, and the question gives the same window in US Eastern time.
{
"settlements": [
{
"condition_id": "0x80412eea753511e2b99b34ac7278f583aa633755d4bfc37937747fcccdc67f0e",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [0, 1],
"question": "Bitcoin Up or Down - December 31, 6:50PM-6:55PM ET",
"resolved_block": 81053182,
"resolved_ts_ms": 1767225623000,
"slug": "btc-updown-5m-1767225000",
"token_ids": ["49699554833940749458928669349813611676670305272267507372557451546278237252538", "19759251783825530137716888916762539198265502090004595143306471486961806482242"],
"winning_index": 1,
"winning_outcome": "Down",
"winning_token_id": "19759251783825530137716888916762539198265502090004595143306471486961806482242"
},
{
"condition_id": "0xede6e8b8607bb696c8a00ec97d533627b77d24cdcdccf975e73c8bd335e58dde",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [0, 1],
"question": "Bitcoin Up or Down - December 31, 6:55PM-7:00PM ET",
"resolved_block": 81053332,
"resolved_ts_ms": 1767225923000,
"slug": "btc-updown-5m-1767225300",
"token_ids": ["34209375106341580939215019589058068862016127871850763169711591623910323095964", "80563135438080242905670806421086382445147359363946991388909382061983976597905"],
"winning_index": 1,
"winning_outcome": "Down",
"winning_token_id": "80563135438080242905670806421086382445147359363946991388909382061983976597905"
},
{
"condition_id": "0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [1, 0],
"question": "Bitcoin Up or Down - December 31, 7:00PM-7:05PM ET",
"resolved_block": 81053481,
"resolved_ts_ms": 1767226221000,
"slug": "btc-updown-5m-1767225600",
"token_ids": ["52800386473038685436634102474246213229162588697536342875118830235865966592259", "1461468263662476251379250668837619567224920549786162744272849437633814478818"],
"winning_index": 0,
"winning_outcome": "Up",
"winning_token_id": "52800386473038685436634102474246213229162588697536342875118830235865966592259"
}
],
"has_more": true,
"next_cursor": "1767226221000:0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b"
}Variations
The next page. Same call plus cursor. Repeat until has_more is false; on the last page next_cursor is null.
# page 2 of the captured walk
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=3&cursor=1767226221000:0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b"It returned the next three markets, 7:05PM to 7:20PM ET, in order.
One line per market.
# slug, winner and resolution time of each market on the page
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000" \
| jq -c '.settlements[] | [.slug, .winning_outcome, .resolved_ts_ms]'Another family. The prefix is <coin>-updown-<tenor>-: eth-updown-15m-, btc-updown-4h- and so on.
# page 1 of every settled 15-minute ETH market
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=eth-updown-15m-&limit=5000"Pick up only what is new. The last page has no cursor. Keep the last row you stored and pass its resolved_ts_ms:condition_id as cursor
tomorrow: the walk resumes strictly after it.
# everything settled after the last market you hold
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000&cursor=1792765880000:0x8c1824d3201d570703ff6a9ac47374327f53b873665abc3f68998704b96bec51"Before you rely on it
A prefix only finds markets with a known slug
slug_prefix matches the market's slug, and a settlement with market_known false has none, so it never matches.
Markets the chain never resolved, such as cancelled ones, are not listed at all. Each page takes a few seconds whatever
its size, so ask for full pages; every page counts as one request against your limits.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. No MCP tool lists settlements in bulk. The polymarket_settlement tool answers for one market at a time, at 1 credit a call.
How did the Polymarket market 0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b resolve?Related
- How often does Up win on 5-minute BTC markets, by hour of day?
- List every Polymarket market that resolved in the last 24 hours and which side won
- How long after a 5-minute window closes does the market resolve on-chain?
- Backtest a Polymarket strategy on the real historical book (fills, fees, lookahead)