vike

Recipe 23 of 30

List every Polymarket market that resolved in the last 24 hours and which side won

Call /settlements/bulk with from_ms set to 24 hours ago; each row is one on-chain resolution with winning_outcome and the payout vector, 5,000 to a page, oldest first, so follow next_cursor until has_more is false.

GET /v1/polymarket/settlements/bulk with from_ms answers it: every market the chain resolved from that moment on, oldest resolution first, 5,000 to a page. Each row names the market (slug, question), the side that won (winning_outcome, winning_token_id), the payout vector, and the block and time of the resolution. A day is several pages: pass each page's next_cursor back as cursor until has_more is false. The full parameter list is on Settlements in bulk.

Quick answer

Set from_ms to 24 hours ago and take full pages.

cURL
# every market resolved on chain since 17:21 UTC yesterday, 5,000 to a page, oldest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?from_ms=1792776083201&limit=5000"

Example response

Captured from the live API on 2026-10-24 at 17:22 UTC, trimmed to 3 of 5,000 rows. winning_outcome is the side that won and payouts the on-chain payout per outcome, in the order of outcomes. This first page of 5,000 rows reached only 20:44 UTC, 3 hours 23 minutes into the 24, so a full day is about seven pages.

Example response
{
  "settlements": [
    {
      "condition_id": "0x3a03d5ee50c2eca1b4de5b71946e985ea324427b6fd1058b320c2e462d1de7f2",
      "market_known": true,
      "outcomes": ["Yes", "No"],
      "payouts": [1, 0],
      "question": "ICC Men's T20 World Cup Africa Sub Regional Qualifier C: Zambia vs Lesotho - Completed match?",
      "resolved_block": 96047163,
      "resolved_ts_ms": 1792776116000,
      "slug": "crint-zmb-lso-2026-10-23-completed-match",
      "token_ids": ["2092473882404650811743767871066045945461655626880649354247405790391376511408", "63709912548181824532721939965314381625751451003462286374255382148725493244111"],
      "winning_index": 0,
      "winning_outcome": "Yes",
      "winning_token_id": "2092473882404650811743767871066045945461655626880649354247405790391376511408"
    },
    {
      "condition_id": "0x379eea128085e0456b33a736e134285d8ec11107adc61e149791f861d101c0b1",
      "market_known": true,
      "outcomes": ["Alexander Bublik", "Karen Khachanov"],
      "payouts": [0, 1],
      "question": "Game Spread: Alexander Bublik (-0.5) vs Karen Khachanov (+0.5)",
      "resolved_block": 96047204,
      "resolved_ts_ms": 1792776177000,
      "slug": "atp-bublik-khachan-2026-10-23-game-handicap-home-0pt5",
      "token_ids": ["21027545870749937478057102582432580072083562728508191974819155303214685088836", "55997033609166433463157032216553590631634953262696467687765860943430862897900"],
      "winning_index": 1,
      "winning_outcome": "Karen Khachanov",
      "winning_token_id": "55997033609166433463157032216553590631634953262696467687765860943430862897900"
    },
    {
      "condition_id": "0x395cf6818ee9fb1f0d0f80ef107746d3b3b9a9fe43b65110351551ea71dd435d",
      "market_known": true,
      "outcomes": ["Over", "Under"],
      "payouts": [0, 1],
      "question": "Melashenko Oleksandr vs. Naida Oleksandr: Total Games O/U 4.5",
      "resolved_block": 96047243,
      "resolved_ts_ms": 1792776236000,
      "slug": "setkameua-ole-naidaol-2026-10-23-game-totals-4pt5",
      "token_ids": ["41999044888223487866024004786513644241689930802764269003382745916394989069213", "91040721594017688152768017144856599842487728650750134190534597465129000054397"],
      "winning_index": 1,
      "winning_outcome": "Under",
      "winning_token_id": "91040721594017688152768017144856599842487728650750134190534597465129000054397"
    }
  ],
  "has_more": true,
  "next_cursor": "1792788273000:0x6979b344509e33e39194463f3bef8a96dbe38491b88a9aeb98c423d7b44dc46a"
}

Variations

The next page. Pass next_cursor back verbatim; keep the same from_ms.

cURL — next page
# the 5,000 resolutions after the first page
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?from_ms=1792776083201&limit=5000&cursor=1792788273000:0x6979b344509e33e39194463f3bef8a96dbe38491b88a9aeb98c423d7b44dc46a"

Only the question and the winner. A jq tail turns a page into one line per market.

cURL — who won
# question, winner and resolution time, one line per market
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?from_ms=1792776083201&limit=5000" \
  | jq -c '.settlements[] | {question, winning_outcome, resolved_ts_ms}'

One family of markets. slug_prefix narrows the list before paging, for example to the 5-minute BTC markets.

cURL — one family
# the 5-minute BTC markets resolved in the same 24 hours
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?from_ms=1792776083201&slug_prefix=btc-updown-5m-&limit=5000"

The latest resolutions. The list runs oldest first, so for the newest results move from_ms up to an hour ago.

cURL — last hour
# the markets resolved in the last hour, with their winners
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?from_ms=1792858883201&limit=5000" \
  | jq -c '.settlements[] | {question, winning_outcome}'

Before you rely on it

Resolved on chain, and not always named

Only on-chain resolutions are listed: a market cancelled or voided without one never appears. In the captured first page, 1,312 of 5,000 rows had market_known false: their slug, question, outcomes and winning_outcome are empty, and only payouts, winning_index and the block are known. 38 rows had winning_index -1, a void with no single winner. resolved_ts_ms is when the chain resolved the market, after its trading ended.

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.

Ask your agent
How did the Polymarket market 0x379eea128085e0456b33a736e134285d8ec11107adc61e149791f861d101c0b1 resolve?
Example response
{  "settlements": [    {      "condition_id": "0x3a03d5ee50c2eca1b4de5b71946e985ea324427b6fd1058b320c2e462d1de7f2",      "market_known": true,      "outcomes": ["Yes", "No"],      "payouts": [1, 0],      "question": "ICC Men's T20 World Cup Africa Sub Regional Qualifier C: Zambia vs Lesotho - Completed match?",      "resolved_block": 96047163,      "resolved_ts_ms": 1792776116000,      "slug": "crint-zmb-lso-2026-10-23-completed-match",      "token_ids": ["2092473882404650811743767871066045945461655626880649354247405790391376511408", "63709912548181824532721939965314381625751451003462286374255382148725493244111"],      "winning_index": 0,      "winning_outcome": "Yes",      "winning_token_id": "2092473882404650811743767871066045945461655626880649354247405790391376511408"    },    {      "condition_id": "0x379eea128085e0456b33a736e134285d8ec11107adc61e149791f861d101c0b1",      "market_known": true,      "outcomes": ["Alexander Bublik", "Karen Khachanov"],      "payouts": [0, 1],      "question": "Game Spread: Alexander Bublik (-0.5) vs Karen Khachanov (+0.5)",      "resolved_block": 96047204,      "resolved_ts_ms": 1792776177000,      "slug": "atp-bublik-khachan-2026-10-23-game-handicap-home-0pt5",      "token_ids": ["21027545870749937478057102582432580072083562728508191974819155303214685088836", "55997033609166433463157032216553590631634953262696467687765860943430862897900"],      "winning_index": 1,      "winning_outcome": "Karen Khachanov",      "winning_token_id": "55997033609166433463157032216553590631634953262696467687765860943430862897900"    },    {      "condition_id": "0x395cf6818ee9fb1f0d0f80ef107746d3b3b9a9fe43b65110351551ea71dd435d",      "market_known": true,      "outcomes": ["Over", "Under"],      "payouts": [0, 1],      "question": "Melashenko Oleksandr vs. Naida Oleksandr: Total Games O/U 4.5",      "resolved_block": 96047243,      "resolved_ts_ms": 1792776236000,      "slug": "setkameua-ole-naidaol-2026-10-23-game-totals-4pt5",      "token_ids": ["41999044888223487866024004786513644241689930802764269003382745916394989069213", "91040721594017688152768017144856599842487728650750134190534597465129000054397"],      "winning_index": 1,      "winning_outcome": "Under",      "winning_token_id": "91040721594017688152768017144856599842487728650750134190534597465129000054397"    }  ],  "has_more": true,  "next_cursor": "1792788273000:0x6979b344509e33e39194463f3bef8a96dbe38491b88a9aeb98c423d7b44dc46a"}