Polymarket API: Search markets
Finds Polymarket prediction markets about a topic, ranked by total trading volume, with outcome chances and market details.
Unofficial. Not affiliated with or endorsed by Polymarket.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Topic, required
topic Words describing the event to find, for example Fed rate cut.
US election
- Max Results optional
max_results Maximum markets to return, for example 10.
50
Whole number from 1 to 50. Default
10.- Include Closed optional
include_closed Include closed markets too, for example false.
false (default)
True or false.
Input as JSON
{ "topic": "US election", "max_results": 50}Output
{ "markets": [ { "link": "https://polymarket.com/event/presidential-election-winner-2028/will-lebron-james-win-the-2028-us-presidential-election" , "slug": "will-lebron-james-win-the-2028-us-presidential-election", "status": "open", "end_date": "2028-11-08", "outcomes": [ { "name": "Yes", "chance_percent": 0.05 }, { "name": "No", "chance_percent": 99.95 } ], "question": "Will LeBron James win the 2028 US Presidential Election?", "market_id": "561251", "event_title": "Presidential Election Winner 2028", "volume_24h_usd": 160, "total_volume_usd": 54890185.72873299 }, { "link": "https://polymarket.com/event/democratic-presidential-nominee-2028/will-oprah-winfrey-win-the-2028-democratic-presidential-nomination" , "slug": "will-oprah-winfrey-win-the-2028-democratic-presidential-nomination", "status": "open", "end_date": "2028-11-08", "outcomes": [ { "name": "Yes", "chance_percent": 0.05 }, { "name": "No", "chance_percent": 99.95 } ], "question": "Will Oprah Winfrey win the 2028 Democratic presidential nomination?", "market_id": "559687", "event_title": "Democratic Presidential Nominee 2028", "volume_24h_usd": 1020, "total_volume_usd": 54443123.685758 }, { "link": "https://polymarket.com/event/democratic-presidential-nominee-2028/will-bernie-sanders-win-the-2028-democratic-presidential-nomination-879" , "slug": "will-bernie-sanders-win-the-2028-democratic-presidential-nomination-879", "status": "open", "end_date": "2028-11-08", "outcomes": [ { "name": "Yes", "chance_percent": 1.3 }, { "name": "No", "chance_percent": 98.7 } ], "question": "Will Bernie Sanders win the 2028 Democratic presidential nomination?", "market_id": "559679", "event_title": "Democratic Presidential Nominee 2028", "volume_24h_usd": 609.122014, "total_volume_usd": 52919794.661988005 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"polymarket.com/search_markets","input":{"topic":"US election","max_results":50}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "polymarket.com/search_markets" , "input": { "topic": "US election", "max_results": 50 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "polymarket.com/search_markets" , "input": { "topic": "US election", "max_results": 50 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run polymarket.com/search_markets# with {"topic":"US election","max_results":50}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "topic" ], "properties": { "topic": { "type": "string", "minLength": 1, "description": "Words describing the event to find, for example Fed rate cut." }, "max_results": { "type": "integer", "default": 10, "maximum": 50, "minimum": 1, "description": "Maximum markets to return, for example 10." }, "include_closed": { "type": "boolean", "default": false, "description": "Include closed markets too, for example false." } }}Output schema
{ "type": "object", "required": [ "markets" ], "properties": { "markets": { "type": "array", "items": { "type": "object", "required": [ "question", "event_title", "outcomes", "total_volume_usd", "volume_24h_usd", "end_date", "status", "link", "market_id", "slug" ], "properties": { "link": { "type": "string", "description": "Polymarket market page." }, "slug": { "type": "string", "description": "Polymarket market slug." }, "status": { "enum": [ "open", "closed" ], "type": "string", "description": "Market status." }, "end_date": { "type": [ "string", "null" ], "format": "date", "description": "Market end date." }, "outcomes": { "type": "array", "items": { "type": "object", "required": [ "name", "chance_percent" ], "properties": { "name": { "type": "string" }, "chance_percent": { "type": [ "number", "null" ] } }, "additionalProperties": false }, "description": "Outcome names and current chances in percent." }, "question": { "type": "string", "description": "Market question." }, "market_id": { "type": "string", "description": "Polymarket market ID." }, "event_title": { "type": "string", "description": "Title of the enclosing event." }, "volume_24h_usd": { "type": [ "number", "null" ], "description": "24-hour trading volume in USD, if available." }, "total_volume_usd": { "type": [ "number", "null" ], "description": "Lifetime trading volume in USD." } }, "additionalProperties": false }, "description": "Matching markets, highest total trading volume first." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
polymarket.com/search_markets- Returns
- question, event title, outcome chances, total and 24-hour volume, end date, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method polymarket.com/search_markets with the inputs above.
Ask your agent
- Find the prediction markets about a Fed rate cut sorted by trading volume, showing outcome odds and end dates
- What are the biggest bitcoin price prediction markets right now with their 24-hour volume?
- Show me up to 20 markets on the next US presidential election with current chances for each candidate
- I want open and recently closed markets about AI regulation in Europe, ranked by total volume, with links
- Polymarket markets on a government shutdown this year: list the top ones with question, event title, and volume
See more
All Polymarket methodsLists the open Polymarket markets with the most trading in the last 24 hours. You can pick one category or list all of them; markets outside the named categories are labeled Other.
polymarket.com/list_trending_marketsShows how a Polymarket outcome's chance changed over time, from a market question or a Polymarket link. For a text question it uses the highest-volume matching market.
polymarket.com/get_odds_historyFind Kalshi prediction events about a topic, ranked by total contracts traded, with Yes prices, outcome volumes and status. Settled chances show the resolved result; closed outcomes have no live buy or sell prices. Older closed markets may lack 24-hour volume; very broad searches cover up to 1,000 matches.
kalshi.com/search_marketsFinds public Substack newsletters matching a topic, in Substack's search order. Subscriber counts are null when Substack does not display one.
substack.com/search_newslettersFinds PolitiFact fact checks matching a claim, topic, or person, newest first. An exact person match returns that person's checked statements; otherwise fact-check text is searched. An optional Truth-O-Meter rating filters the results.
politifact.com/search_fact_checksFinds upcoming public Meetup events by topic and city, sorted by start time. Only events that mention the topic are included; external costs and undisclosed venues may not be shown.
meetup.com/search_eventsFinds Product Hunt products by name or by what they do, in Product Hunt search order, with tagline, review rating, review count, followers and topics. Ratings are null for products without reviews.
producthunt.com/search_productsLists CoinGecko crypto sectors by market cap with daily change, volume, leading coins and category pages, optionally filtered by name or link.
coingecko.com/list_crypto_categories