io.b3os/polymarket 1.0.0 · prediction-markets, market-data, event-contracts, polygon · MIT

Read-only Polymarket prediction-market data from Polymarket's public APIs: search and browse markets and events, prices and full order books, price history, recent trades, a wallet's positions and activity, top holders per outcome, and the trader leaderboard. Keyless; no trading, no wallet, no signing. Prices are 0 to 1 and read as implied probabilities. Availability of trading on Polymarket depends on your jurisdiction; reading data does not.

Every call's result carries upstream_status and timing: validate_ms, inject_ms, render_ms, upstream_ms, map_ms and total_ms. upstream is the service's time; the others are B3OS's own (call actions). The snippets below show no timing values, because a fixture records none.

Connection

No credential: a keyless public API. Calls name no connection.

Hosts it reaches: gamma-api.polymarket.com, clob.polymarket.com, data-api.polymarket.com.

Actions

ActionEffectMCP toolTitle
searchreadpolymarket__searchSearch markets
list-marketsreadpolymarket__list-marketsList markets
get-marketreadpolymarket__get-marketGet market
get-eventreadpolymarket__get-eventGet event
list-eventsreadpolymarket__list-eventsList events
get-pricereadpolymarket__get-priceGet price
get-order-bookreadpolymarket__get-order-bookGet order book
get-price-historyreadpolymarket__get-price-historyGet price history
get-tradesreadpolymarket__get-tradesGet trades
get-positionsreadpolymarket__get-positionsPolymarket Get Positions
get-redeemable-positionsreadpolymarket__get-redeemable-positionsPolymarket Get Redeemable Positions
get-top-holdersreadpolymarket__get-top-holdersPolymarket Get Top Holders
get-leaderboardreadpolymarket__get-leaderboardPolymarket Get Leaderboard
get-user-activityreadpolymarket__get-user-activityGet wallet activity

Search markets. Keyword search across Polymarket events and their markets (questions, outcomes, current prices, volume, liquidity, end dates, token ids), best match first. Use list-markets to browse by volume, newest or end date without a keyword, and get-price or get-order-book with a token id for live prices.

Ref io.b3os/polymarket/search@1.0.0 · effect read · no connection · MCP tool polymarket__search

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/search@1", "input": {"query": "fed rates", "limit": 1} }'

Output, labeled fixture: Search markets (response recorded 2026-10-26). From the bundle's fixtures/search.json, not a live call.

json
{ "events": [ { "id": "606422", "slug": "fed-decision-in-october-20260617190323537", "title": "Fed Decision in October?", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "start_date": "2026-06-17T23:34:28.470106Z", "end_date": "2026-10-29T03:59:00Z", "volume": 67078663.652148, "volume_24h": 4077043.912497, "liquidity": 8517932.98409, "active": true, "closed": false, "neg_risk": true, "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537", "markets": [ { "id": "2589810", "question": "Will the Fed decrease interest rates by 50+ bps after the October 2026 meeting?", "slug": "will-the-fed-decrease-interest-rates-by-50-bps-after-the-october-2026-meeting-20260617190324029", "condition_id": "0xa69ef420d8b4075ad8ba8611d02c63cb2ece46f5c8c643af223c272689b0c96f", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "outcomes": ["Yes", "No"], "outcome_prices": [0.0005, 0.9995], "token_ids": [ "17010377994663817312158123655937348199252960045746746128731746451645055725586", "61725366781282351729996972759460154434089275036953062948669003249092837754960" ], "volume": 9796420.604547, "volume_24h": 214256.7, "liquidity": 2738329.88185, "start_date": "2026-06-18T00:33:16.217093Z", "end_date": "2026-10-29T03:59:00Z", "active": true, "closed": false, "accepting_orders": true, "neg_risk": true, "event_slug": "fed-decision-in-october-20260617190323537", "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537"

The first 40 of 143 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

list-markets

List markets. Browse Polymarket markets without a keyword, sorted by 24-hour volume, total volume, liquidity, newest or end date, with filters for open or closed, tag, end-date window, minimum volume and liquidity, or specific condition ids. Returns questions, outcomes, prices, volume, liquidity, end dates and token ids; page with offset.

Ref io.b3os/polymarket/list-markets@1.0.0 · effect read · no connection · MCP tool polymarket__list-markets

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ref": "io.b3os/polymarket/list-markets@1", "input": {"limit": 2}}'

Output, labeled fixture: List markets (response recorded 2026-10-26). From the bundle's fixtures/list-markets.json, not a live call.

json
{ "markets": [ { "id": "2589812", "question": "Will there be no change in Fed interest rates after the October 2026 meeting?", "slug": "will-there-be-no-change-in-fed-interest-rates-after-the-october-2026-meeting-20260617190324031", "condition_id": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "outcomes": ["Yes", "No"], "outcome_prices": [0.945, 0.055], "token_ids": [ "111061902544814266207267295505639408607400625795891618462682726460921782993748", "42038775866198212615491650114881818219665139981763207699110491615333273795415" ], "volume": 20532669.16445, "volume_24h": 1768196.0166319998, "liquidity": 2063827.6615, "start_date": "2026-06-18T00:02:51.727205Z", "end_date": "2026-10-29T03:59:00Z", "active": true, "closed": false, "accepting_orders": true, "neg_risk": true, "event_slug": "fed-decision-in-october-20260617190323537", "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537" }, { "id": "562803", "question": "Will the Republican Party control the House after the 2026 Midterm elections?", "slug": "will-the-republican-party-control-the-house-after-the-2026-midterm-elections", "condition_id": "0x4e4f77e7dbf4cab666e9a1943674d7ae66348e862df03ea6f44b11eb95731928", "description": "This market will resolve according to the party that wins control of the United States House of Representatives in the 2026 United States midterm election.\n\nA party wins control of the United States House of Representatives if it wins a majority of the chamber’s voting seats. If no party wins a majority of voting seats, the chamber will be deemed controlled by the party with which the first elected Speaker of the House of the Congress that convenes after the 2026 midterm election is affiliated.\n\nThe following rules govern the counting of seats for determining which party wins control of the chamber.\n\nAll House elections in the 2026 United States midterm election that elect voting members and determine representation in the upcoming 120th Congress are included. Where a seat is decided by a runoff, the runoff result will determine attribution of that seat.\n\nSeats are attributed to the party under which the member was elected. If a member-elect changes party affiliation, or vacates their seat, between election day and the formal organization of Congress, the seat is attributed to the party under which the member was elected.\n\nHouse members elected as independents who formally caucus with, or, for newly elected members, who announce their intent to caucus with, a party are included in that party’s count. If the caucus decisions of members of the House elected as independents cannot be determined on the date of the election, this market may remain open until the earlier of (i) an announcement from the relevant members of their intents to caucus, or (ii) January 4th, 11:59 PM ET of the following calendar year. If no such announcement is made by January 4th, 11:59 PM ET of the following calendar year, the member will not count towards the seat count of any party.\n\nThe resolution sources for this market will be official information from relevant state electoral authorities, the United States Congress, and a consensus of credible reporting.", "outcomes": ["Yes", "No"], "outcome_prices": [0.085, 0.915], "token_ids": [ "65139230827417363158752884968303867495725894165574887635816574090175320800482", "17371217118862125782438074585166210555214661810823929795910191856905580975576" ], "volume": 10060874.432996001, "volume_24h": 1180206.095047,

The first 40 of 52 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-market

Get market. One Polymarket market by its slug: question, resolution rules, outcomes with current prices, token ids, volume, liquidity, dates and status. For a multi-market event (several outcomes such as rate brackets) use get-event with the event slug from the polymarket.com/event/<slug> link.

Ref io.b3os/polymarket/get-market@1.0.0 · effect read · no connection · MCP tool polymarket__get-market

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-market@1", "input": { "slug": "will-there-be-no-change-in-fed-interest-rates-after-the-october-2026-meeting-20260617190324031" } }'

Output, labeled fixture: Get market (response recorded 2026-10-26). From the bundle's fixtures/get-market.json, not a live call.

json
{ "id": "2589812", "question": "Will there be no change in Fed interest rates after the October 2026 meeting?", "slug": "will-there-be-no-change-in-fed-interest-rates-after-the-october-2026-meeting-20260617190324031", "condition_id": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "outcomes": ["Yes", "No"], "outcome_prices": [0.945, 0.055], "token_ids": [ "111061902544814266207267295505639408607400625795891618462682726460921782993748", "42038775866198212615491650114881818219665139981763207699110491615333273795415" ], "volume": 20532669.16445, "volume_24h": 1768196.0166319998, "liquidity": 2063940.2203, "start_date": "2026-06-18T00:02:51.727205Z", "end_date": "2026-10-29T03:59:00Z", "active": true, "closed": false, "accepting_orders": true, "neg_risk": true, "event_slug": "fed-decision-in-october-20260617190323537", "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537"}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-event

Get event. One Polymarket event by slug with every market in it: for a single question that is one market, for brackets or candidates one market per outcome. Each market has its question, prices, token ids, volume and status. The slug is the last part of a polymarket.com/event/<slug> link.

Ref io.b3os/polymarket/get-event@1.0.0 · effect read · no connection · MCP tool polymarket__get-event

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-event@1", "input": {"slug": "fed-decision-in-october-20260617190323537"} }'

Output, labeled fixture: Get event (response recorded 2026-10-26). From the bundle's fixtures/get-event.json, not a live call.

json
{ "id": "606422", "slug": "fed-decision-in-october-20260617190323537", "title": "Fed Decision in October?", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "start_date": "2026-06-17T23:34:28.470106Z", "end_date": "2026-10-29T03:59:00Z", "volume": 67078663.652148, "volume_24h": 4077043.912497, "liquidity": 8517622.7809, "active": true, "closed": false, "neg_risk": true, "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537", "markets": [ { "id": "2589810", "question": "Will the Fed decrease interest rates by 50+ bps after the October 2026 meeting?", "slug": "will-the-fed-decrease-interest-rates-by-50-bps-after-the-october-2026-meeting-20260617190324029", "condition_id": "0xa69ef420d8b4075ad8ba8611d02c63cb2ece46f5c8c643af223c272689b0c96f", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "outcomes": ["Yes", "No"], "outcome_prices": [0.0005, 0.9995], "token_ids": [ "17010377994663817312158123655937348199252960045746746128731746451645055725586", "61725366781282351729996972759460154434089275036953062948669003249092837754960" ], "volume": 9796420.604547, "volume_24h": 214256.7, "liquidity": 2738343.52613, "start_date": "2026-06-18T00:33:16.217093Z", "end_date": "2026-10-29T03:59:00Z", "active": true, "closed": false, "accepting_orders": true, "neg_risk": true, "event_slug": "fed-decision-in-october-20260617190323537", "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537" }, {

The first 40 of 65 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

list-events

List events. Browse Polymarket events (a question and its markets) sorted by 24-hour volume, total volume, liquidity, newest or end date, open or closed, optionally within one tag or end-date window. Returns event summaries with their market count; call get-event with a slug for the markets and prices. At most 10 per page, because one busy event can carry hundreds of markets.

Ref io.b3os/polymarket/list-events@1.0.0 · effect read · no connection · MCP tool polymarket__list-events

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ref": "io.b3os/polymarket/list-events@1", "input": {"limit": 1}}'

Output, labeled fixture: List events (response recorded 2026-10-26). From the bundle's fixtures/list-events.json, not a live call.

json
{ "events": [ { "id": "1022451", "slug": "nfl-kc-sea-2026-10-26", "title": "Chiefs vs. Seahawks", "description": "In the upcoming NFL football game between Chiefs and Seahawks, scheduled for October 25 at 8:20PM ET:\nThis market will resolve to \"Chiefs\" if Chiefs win the game.\nThis market will resolve to \"Seahawks\" if Seahawks win the game.\nOvertime is included if played.\nIf the game ends in a tie, this market will resolve 50-50.\nIf the game is postponed, this market will remain open until the game has been completed.\nIf the game is canceled entirely, with no make-up game, this market will resolve 50-50.", "start_date": "2026-09-14T12:00:57Z", "end_date": "2026-10-26T00:20:00Z", "volume": 9755993.046286998, "volume_24h": 8813130.756852001, "liquidity": null, "active": true, "closed": false, "neg_risk": false, "url": "https://polymarket.com/event/nfl-kc-sea-2026-10-26", "market_count": 2 } ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-price

Get price. Live price of one outcome token from the CLOB order book: best bid, best ask, midpoint, spread and last trade price, each 0 to 1. Null bid or ask means that side of the book is empty. Get token ids from a market's token_ids.

Ref io.b3os/polymarket/get-price@1.0.0 · effect read · no connection · MCP tool polymarket__get-price

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-price@1", "input": { "tokenId": "111061902544814266207267295505639408607400625795891618462682726460921782993748" } }'

Output, labeled fixture: Get price (response recorded 2026-10-26). From the bundle's fixtures/get-price.json, not a live call.

json
{ "tokenId": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "midpoint": 0.945, "bestBid": 0.94, "bestAsk": 0.95, "spread": 0.010000000000000009, "lastTradePrice": 0.05}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noNo order book for this token id (the market may be closed).
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-order-book

Get order book. The full CLOB order book for one outcome token: every bid and ask level with price (0 to 1) and size in shares, plus best bid, best ask, spread, tick size, minimum order size and the last trade price. As the CLOB returns them, bids are sorted ascending and asks descending, so the best level of each side is the last one.

Ref io.b3os/polymarket/get-order-book@1.0.0 · effect read · no connection · MCP tool polymarket__get-order-book

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-order-book@1", "input": { "tokenId": "111061902544814266207267295505639408607400625795891618462682726460921782993748" } }'

Output, labeled fixture: Get order book (response recorded 2026-10-26). From the bundle's fixtures/get-order-book.json, not a live call.

json
{ "market": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "assetId": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "timestamp": "1792999585313", "bids": [ {"price": 0.01, "size": 2221045.36}, {"price": 0.02, "size": 26000}, {"price": 0.03, "size": 7000}, {"price": 0.04, "size": 2000}, {"price": 0.05, "size": 9016.8}, {"price": 0.06, "size": 11000}, {"price": 0.07, "size": 1999.99}, {"price": 0.08, "size": 3000}, {"price": 0.09, "size": 1000}, {"price": 0.1, "size": 31000}, {"price": 0.11, "size": 1000}, {"price": 0.12, "size": 2500}, {"price": 0.13, "size": 6005}, {"price": 0.14, "size": 1499.98}, {"price": 0.15, "size": 1000}, {"price": 0.17, "size": 749.98}, {"price": 0.2, "size": 220}, {"price": 0.21, "size": 305.71}, {"price": 0.25, "size": 17737.5}, {"price": 0.26, "size": 500}, {"price": 0.29, "size": 14805.21}, {"price": 0.3, "size": 80}, {"price": 0.33, "size": 12130.68}, {"price": 0.34, "size": 199.99}, {"price": 0.37, "size": 10304.04}, {"price": 0.38, "size": 1000}, {"price": 0.41, "size": 6509.15}, {"price": 0.45, "size": 5521.24}, {"price": 0.47, "size": 25}, {"price": 0.49, "size": 4279.34}, {"price": 0.5, "size": 500}, {"price": 0.52, "size": 705}, {"price": 0.53, "size": 6395.84}, {"price": 0.54, "size": 3489}, {"price": 0.55, "size": 2478},

The first 40 of 88 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noNo order book for this token id (the market may be closed).
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-price-history

Get price history. Price history of one outcome token from the CLOB: points of time (Unix seconds) and price (0 to 1) over the last hour, 6 hours, day, week, month or all time, at a resolution in minutes you choose.

Ref io.b3os/polymarket/get-price-history@1.0.0 · effect read · no connection · MCP tool polymarket__get-price-history

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-price-history@1", "input": { "token_id": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "interval": "1d", "fidelity_minutes": 360 } }'

Output, labeled fixture: Get price history (response recorded 2026-10-26). From the bundle's fixtures/get-price-history.json, not a live call.

json
{ "history": [ {"t": 1792929629, "p": 0.955}, {"t": 1792951200, "p": 0.945}, {"t": 1792994435, "p": 0.945}, {"t": 1792999578, "p": 0.945} ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-trades

Get trades. Recent trades in a market, newest first, from the Data API: side, outcome, price (0 to 1), size in shares, time, trader wallet and display name, and the Polygon transaction hash. Filter by market condition id, by wallet, or both.

Ref io.b3os/polymarket/get-trades@1.0.0 · effect read · no connection · MCP tool polymarket__get-trades

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-trades@1", "input": { "market": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "limit": 2 } }'

Output, labeled fixture: Get trades (response recorded 2026-10-26). From the bundle's fixtures/get-trades.json, not a live call.

json
{ "trades": [ { "side": "BUY", "outcome": "Yes", "price": 0.95, "size": 5, "timestamp": 1792998905, "condition_id": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "token_id": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "title": "Will there be no change in Fed interest rates after the October 2026 meeting?", "wallet": "0x4b225482f9e2115311b3aec23cdf081427eb432d", "name": "Sr97", "transaction_hash": "0x349fb6504c0e22666ae0d8b0e6e5a6ac5d7a34b2d25df3aaf6e8a3fca6a7ebd0" }, { "side": "BUY", "outcome": "Yes", "price": 0.95, "size": 1.05262, "timestamp": 1792998411, "condition_id": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "token_id": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "title": "Will there be no change in Fed interest rates after the October 2026 meeting?", "wallet": "0x0afe11da02e6dd081114886b16f9773cc3242573", "name": "finn.d", "transaction_hash": "0x13498240006851445ee3a7d00382b7aadf78cf46183e35bf60418d8dd40492f8" } ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-positions

Polymarket Get Positions. Open positions of any Polymarket wallet from the Data API: market, outcome, size in shares, average entry price, current price, initial and current value in USDC, cash and percent P&L, redeemable flag, and slugs. Filter by market or event and sort by value, P&L, size or title. Positions are public on Polygon.

Ref io.b3os/polymarket/get-positions@1.0.0 · effect read · no connection · MCP tool polymarket__get-positions

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-positions@1", "input": { "address": "0xed107a85a4585a381e48c7f7ca4144909e7dd2e5", "limit": 2 } }'

Output, labeled fixture: Polymarket Get Positions (response recorded 2026-10-26). From the bundle's fixtures/get-positions.json, not a live call.

json
{ "positions": [ { "asset": "16040015440196279900485035793550429453516625694844857319147506590755961451627", "conditionId": "0x7ad403c3508f8e3912940fd1a913f227591145ca0614074208e0b962d5fcc422", "title": "Will JD Vance win the 2028 US Presidential Election?", "outcome": "Yes", "size": 2000000, "avgPrice": 0.5, "currentPrice": 0.2005, "initialValue": 1000000, "currentValue": 401000, "cashPnl": -599000, "percentPnl": -59.9, "endDate": "2028-11-08", "negRisk": true, "slug": "will-jd-vance-win-the-2028-us-presidential-election", "eventSlug": "presidential-election-winner-2028", "redeemable": false, "totalBought": 73275000, "realizedPnl": 0 }, { "asset": "94476829201604408463453426454480212459887267917122244941405244686637914508323", "conditionId": "0x7ad403c3508f8e3912940fd1a913f227591145ca0614074208e0b962d5fcc422", "title": "Will JD Vance win the 2028 US Presidential Election?", "outcome": "No", "size": 2000000, "avgPrice": 0.5, "currentPrice": 0.7995, "initialValue": 1000000, "currentValue": 1599000, "cashPnl": 599000, "percentPnl": 59.9, "endDate": "2028-11-08", "negRisk": true, "slug": "will-jd-vance-win-the-2028-us-presidential-election", "eventSlug": "presidential-election-winner-2028", "redeemable": false, "totalBought": 73275000,

The first 40 of 46 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-redeemable-positions

Polymarket Get Redeemable Positions. Positions of a wallet in resolved markets that can be redeemed for USDC, according to the Data API's redeemable flag. Unlike the original action, there is no on-chain balance check, so a position redeemed moments ago can still appear.

Ref io.b3os/polymarket/get-redeemable-positions@1.0.0 · effect read · no connection · MCP tool polymarket__get-redeemable-positions

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-redeemable-positions@1", "input": {"walletAddress": "0xed107a85a4585a381e48c7f7ca4144909e7dd2e5"} }'

Output, labeled fixture: Polymarket Get Redeemable Positions (response recorded 2026-10-26). From the bundle's fixtures/get-redeemable-positions.json, not a live call.

json
{ "positions": [], "count": 0, "totalPositions": 0, "walletAddress": "0xed107a85a4585a381e48c7f7ca4144909e7dd2e5"}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-top-holders

Polymarket Get Top Holders. The largest holders of each outcome of a market, from the Data API: wallet, display name or pseudonym, shares held and verified badge, per outcome token. Use it to see who is positioned on each side.

Ref io.b3os/polymarket/get-top-holders@1.0.0 · effect read · no connection · MCP tool polymarket__get-top-holders

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-top-holders@1", "input": { "conditionId": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "limit": 2 } }'

Output, labeled fixture: Polymarket Get Top Holders (response recorded 2026-10-26). From the bundle's fixtures/get-top-holders.json, not a live call.

json
{ "outcomes": [ { "token": "111061902544814266207267295505639408607400625795891618462682726460921782993748", "holders": [ { "proxyWallet": "0xed107a85a4585a381e48c7f7ca4144909e7dd2e5", "pseudonym": "Flashy-Label", "name": "elmcap2", "amount": 854058.990006, "verified": false }, { "proxyWallet": "0x88b21efc4aa4e08cdc125300ad6b3a520811e1d1", "pseudonym": "Enchanting-Glass", "name": "welcometowinnercircle", "amount": 563961.169967, "verified": false } ] }, { "token": "42038775866198212615491650114881818219665139981763207699110491615333273795415", "holders": [ { "proxyWallet": "0xa5ef39c3d3e10d0b270233af41cac69796b12966", "pseudonym": "", "name": "", "amount": 6656726.99779, "verified": false }, { "proxyWallet": "0x2b2dbd6524cd314a9b1651ec46f7bb1dfa461031", "pseudonym": "Upright-Hydrocarbon-Fowl", "name": "jsmythyson", "amount": 1901958.072818, "verified": false } ] }

The first 40 of 43 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-leaderboard

Polymarket Get Leaderboard. Polymarket's trader leaderboard: rank, wallet, display name, profit and loss and volume in USDC, overall or for one category (politics, sports, crypto, ...) over the last day, week, month or all time, ranked by P&L or volume.

Ref io.b3os/polymarket/get-leaderboard@1.0.0 · effect read · no connection · MCP tool polymarket__get-leaderboard

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-leaderboard@1", "input": {"timePeriod": "WEEK", "limit": 3} }'

Output, labeled fixture: Polymarket Get Leaderboard (response recorded 2026-10-26). From the bundle's fixtures/get-leaderboard.json, not a live call.

json
{ "traders": [ { "rank": 1, "proxyWallet": "0xf0318c32136c2db7fec88b84869aee6a1106c80c", "userName": "BreakTheBank", "profileImage": "", "pnl": 2269227.063128396, "vol": 39329229.84207401 }, { "rank": 2, "proxyWallet": "0x6ac5bb06a9eb05641fd5e82640268b92f3ab4b6e", "userName": "jakepaulthegoat2008", "profileImage": "", "pnl": 1441910.7987463078, "vol": 10547718.144742996 }, { "rank": 3, "proxyWallet": "0x2c335066fe58fe9237c3d3dc7b275c2a034a0563", "userName": "0x2c335066FE58fe9237c3d3Dc7b275C2a034a0563-1759935795465", "profileImage": "", "pnl": 1355301.7985047312, "vol": 67198341.10737303 } ], "count": 3, "category": "OVERALL", "timePeriod": "WEEK"}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

get-user-activity

Get wallet activity. On-chain activity of any Polymarket wallet, newest first: trades, splits, merges, redemptions, rewards and conversions, with market, outcome, side, price, size, USDC amount, time and transaction hash. Filter by activity type.

Ref io.b3os/polymarket/get-user-activity@1.0.0 · effect read · no connection · MCP tool polymarket__get-user-activity

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/polymarket/get-user-activity@1", "input": { "address": "0xed107a85a4585a381e48c7f7ca4144909e7dd2e5", "limit": 2 } }'

Output, labeled fixture: Get wallet activity (response recorded 2026-10-26). From the bundle's fixtures/get-user-activity.json, not a live call.

json
{ "activity": [ { "type": "TRADE", "timestamp": 1792998399, "title": "Will Anthropic IPO by October 31, 2026?", "outcome": "No", "side": "BUY", "price": 0.996, "size": 9250, "usdc_size": 9213, "condition_id": "0x8062cf78d93f9202f4c0a1018d141f4af35d486a368f07e65265f27d48b4e040", "transaction_hash": "0x412c71f7710d958db2bbd614790e74b84f50118538d949fa862995e87fb1bc0d" }, { "type": "MERGE", "timestamp": 1792993635, "title": "Will JD Vance win the 2028 US Presidential Election?", "outcome": null, "side": null, "price": 0, "size": 500000, "usdc_size": 500000, "condition_id": "0x7ad403c3508f8e3912940fd1a913f227591145ca0614074208e0b962d5fcc422", "transaction_hash": "0xf00c1bb69089c5eceb6b726709084fed65b00c4c4482a8c85b6390cc1b246d51" } ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noPolymarket has no market, event or data for this id or slug.
rate_limited429yesPolymarket rate limit reached; retry shortly.
invalid_request400, 422nobuilt from the service's response

Triggers

new-market (trigger)

New market. Fires once for each newly listed Polymarket market, optionally only within one tag (category), checked every minute by default. The first check records the current markets and emits nothing.

Ref io.b3os/polymarket/new-market@1.0.0 · poll of list-markets, every 60 s by default (at least 15 s) · no connection

with keyRequiredDescription
tag_idnoOnly markets with this Gamma tag id.

In a routine:

yaml
triggers: - type: action id: new_market uses: io.b3os/polymarket/new-market@1

Event, labeled fixture: the first item of list-markets's fixture fixtures/list-markets.json (List markets (response recorded 2026-10-26)) through the trigger's event mapping. A routine reads it as trigger.data; its fields are id, question, slug, condition_id, description, outcomes, outcome_prices, token_ids, volume, volume_24h, liquidity, start_date, end_date, active, closed, accepting_orders, neg_risk, event_slug, url.

json
{ "id": "2589812", "question": "Will there be no change in Fed interest rates after the October 2026 meeting?", "slug": "will-there-be-no-change-in-fed-interest-rates-after-the-october-2026-meeting-20260617190324031", "condition_id": "0xdf9bf27ee5757c55b44b8b9826ddc9ec3a8809aa3278634c45edbb7fc8f1a3e3", "description": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. The decisions on the target federal funds range are made by the Federal Open Market Committee (FOMC) meetings.\n\nThis market will resolve to the amount of basis points the upper bound of the target federal funds rate is changed by versus the level it was prior to the Federal Reserve's October 2026 meeting.\n\nIf the target federal funds rate is changed to a level not expressed in the displayed options, the change will be rounded up to the nearest 25 and will resolve to the relevant bracket. (e.g. if there's a cut/increase of 12.5 bps it will be considered to be 25 bps)\n\nThe resolution source for this market is the FOMC’s statement after its meeting scheduled for October 27-28, 2026 according to the official calendar: https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm.\n\nThe level and change of the target federal funds rate is also published at the official website of the Federal Reserve at https://www.federalreserve.gov/monetarypolicy/openmarket.htm.\n\nThis market may resolve as soon as the FOMC’s statement for their October meeting with relevant data is issued. If no statement is released by the end date of the next scheduled meeting, this market will resolve to the \"No change\" bracket.", "outcomes": ["Yes", "No"], "outcome_prices": [0.945, 0.055], "token_ids": [ "111061902544814266207267295505639408607400625795891618462682726460921782993748", "42038775866198212615491650114881818219665139981763207699110491615333273795415" ], "volume": 20532669.16445, "volume_24h": 1768196.0166319998, "liquidity": 2063827.6615, "start_date": "2026-06-18T00:02:51.727205Z", "end_date": "2026-10-29T03:59:00Z", "active": true, "closed": false, "accepting_orders": true, "neg_risk": true, "event_slug": "fed-decision-in-october-20260617190323537", "url": "https://polymarket.com/event/fed-decision-in-october-20260617190323537"}
Ask a question... ⌘I