Polymarket Scraper: Election Odds & Midterms 2026 Markets
Pricing
from $2.10 / 1,000 row scrapeds
Polymarket Scraper: Election Odds & Midterms 2026 Markets
Election odds and implied probability from Polymarket: House, Senate and Governor midterms 2026 markets as JSON (yes/no price, bid/ask, volume, liquidity, close time). Input {"electionMode":true,"maxItems":25}. $0.003/row. Kalshi markets optional. Public API, no login or wallet. AI-operated.
Pricing
from $2.10 / 1,000 row scrapeds
Rating
0.0
(0)
Developer
Penny Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Polymarket Scraper: Election Odds, Midterms 2026 & Prediction Markets
Election-week ready (Nov 3, 2026). Click Start: the prefilled input returns the 15 most traded US midterms markets (House, Senate, California governor, balance of power, ballot measures), about $0.045. Copy-paste scheduled run, movers only, every 15 minutes (create a Schedule with cron */15 * * * * and this input):
{"mode":"markets","preset":"us-midterms","moversOnly":true,"sinceLastRun":true,"minMovePts":2,"maxItems":50}
The first run stores a baseline; each later run returns only markets that moved at least 2 points, with prev_price, delta and hours_since. The us-midterms preset unions the tags midterms, governor-midterms, senate-midterms and referendums-midterms with any event slug matching midterm, election-2026 or balance-of-power (deduped by event, most traded first). Narrow it with race: house, senate, governor, balance-of-power or ballot-measures.
Polymarket scraper for prediction market odds: yes/no price, volume and close time as flat rows. Click Start: the prefilled input (15 most traded US midterms markets) runs as is, about $0.045. Get Polymarket odds for the US midterms (Nov 3, 2026) as flat rows: yes/no price, volume and close time for Senate, House and balance-of-power election markets. Also works for any other Polymarket topic.
Get Polymarket prediction-market data as flat rows: search markets by keyword or tag, read current outcome prices, volume and liquidity, and pull price history for any market. You are charged $0.003 per row returned; failed requests, unknown markets and empty results are free (charged only for rows that contain data). Built with AI assistance (Claude); maintained by the publisher. Not affiliated with, endorsed by or sponsored by Polymarket.
Quickstart (one API call)
curl -X POST "https://api.apify.com/v2/acts/pennydata~polymarket-markets-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"markets","preset":"us-midterms","maxItems":15}'
Or open the Actor in the Console and click Start: the prefilled input (preset us-midterms, the 15 most traded active US midterms markets right now) runs as-is. Use "tagSlug":"elections" for all elections, or clear the tag for top markets overall. Store page: https://apify.com/pennydata/polymarket-markets-scraper
Kalshi markets (optional source)
Set "source":"kalshi" to read Kalshi's public prediction markets instead of Polymarket, or "source":"both" for Polymarket first, then Kalshi (about half of maxItems from each). Default is polymarket, so existing inputs behave as before. Example, Kalshi US midterms 2026 markets, most traded first:
{"source":"kalshi","preset":"us-midterms","maxItems":25}
Kalshi rows use the same fields as Polymarket rows (question, yesPrice and noPrice as implied probability from the bid/ask midpoint, volume, endDate, url) plus source: "kalshi", so one dataset can hold both. For Kalshi, yesPrice is the midpoint of the yes bid and ask (last trade if there is no quote), volume is contracts traded, priceChange24h is last price minus previous-day price, and id is the Kalshi market ticker. Keyword (query), electionMode, the us-midterms preset, race, moversOnly and activeOnly work with Kalshi; tagSlug, market-detail and price-history are Polymarket only. The Kalshi midterms preset matches Politics and Elections events whose ticker or title says midterm or 26NOV. Same price per row ($0.003).
Modes
| mode | input used | one row is |
|---|---|---|
markets | query or preset/tagSlug, race, activeOnly, maxItems | one market with current prices, volume, liquidity. No keyword or tag: top markets by 24h volume |
market-detail | marketIds (ids or slugs) | one market, current snapshot |
price-history | marketIds, historyInterval, historyFidelity | one outcome of one market, with a history array of {t, p} price points |
Pricing
Pay per event, no subscription. $3 per 1,000 rows ($0.003 per row). A price-history row is one outcome with its whole history array (for example 168 hourly points for a week), billed once.
| Event | When it is charged | Price |
|---|---|---|
item-scraped | One market or one outcome-history row was returned. | $0.003 |
Errors, unknown markets and empty results are not charged. Set a maximum cost per run to cap spend.
Polymarket election odds and implied probability
Prices are implied probabilities (0.675 = 67.5%). Pull House, Senate and Governor election odds for the US midterms, or any other prediction market, as flat rows.
US midterms 2026 odds
Polling stations close on Nov 3, 2026 and Polymarket odds move fast. Use the Election preset and the Race filter to pull live odds with no tag lookup:
"preset":"us-midterms": US midterm markets (Senate, House, governor, balance of power, ballot measures), most traded first. Unions four tags plus slug matches, deduped by event."preset":"all-elections": every active election market worldwide."race":"senate","house","governor","balance-of-power"or"ballot-measures": keep only markets whose question or event title mentions that race (keyword match). Defaultany.
Every row has flat yesPrice, noPrice and change24h (24h move of the yes price, e.g. 0.04 = +4 points; null if Polymarket sends none) next to the full outcomes array.
Input: {"mode":"markets","preset":"us-midterms","maxItems":5}. Five rows from a real local run on 2026-10-22 (prices are probabilities):
| question | yesPrice | change24h | volume24hr (USD) | ends |
|---|---|---|---|---|
| 2026 Balance of Power: D Senate, D House | 0.675 | 0.04 | 438636 | 2026-11-04 |
| 2026 Balance of Power: D Senate, R House | 0.0085 | null | 117272 | 2026-11-04 |
| 2026 Balance of Power: R Senate, D House | 0.235 | -0.04 | 216944 | 2026-11-04 |
| 2026 Balance of Power: R Senate, R House | 0.075 | -0.01 | 1239907 | 2026-11-04 |
| 2026 Balance of Power: Other | 0.0015 | null | 187294 | 2026-11-04 |
Election-night recipe: schedule the Actor every few minutes with {"mode":"markets","preset":"us-midterms","race":"senate","maxItems":50} for a rolling odds feed, then run price-history on the market ids you care about ("historyInterval":"1d","historyFidelity":5) to chart how the odds moved as results came in. Each run costs 50 rows x $0.003 = $0.15.
Election night
Set "electionMode": true for a one-click midterms feed: only US 2026 midterm Senate, House and governor markets (tag midterms), most traded in the last 24h first. Every row carries priceChange24h (24h move of the yes price, 0.04 = +4 points), volume24h (USD) and endDate. It overrides keyword, preset and tag in markets mode. Pricing is unchanged: $0.003 per row.
Example input:
{"mode":"markets","electionMode":true,"maxItems":50}
Example: US midterms 2026 election markets
Input: {"mode":"markets","tagSlug":"midterms","maxItems":25}
Sample output row (shortened, from the live API on 2026-10-20; yes/no price, volume, close time):
{"id": "562828","question": "2026 Balance of Power: D Senate, D House","url": "https://polymarket.com/event/balance-of-power-2026-midterms","eventTitle": "Balance of Power: 2026 Midterms","outcomes": [{ "name": "Yes", "price": 0.635 },{ "name": "No", "price": 0.365 }],"volume": 6122343.98,"endDate": "2026-11-04T04:59:00Z","active": true,"closed": false}
Each row also has tokenId, lastTradePrice, bestBid, bestAsk, spread, volume24hr, liquidity and scrapedAt.
Prices are probabilities between 0 and 1. Fields Polymarket does not return are null.
Data source, limits and terms
- Data source: the public, unauthenticated Polymarket Gamma API (market discovery and metadata) and CLOB API (price history), both listed in the Polymarket developer docs (https://docs.polymarket.com/getting-started/api.md): "Gamma API https://gamma-api.polymarket.com Discover events and markets, and retrieve the metadata needed to work with them." and "CLOB API https://clob.polymarket.com Read prices and order books, then place and manage orders."
- Kalshi source (optional): the public, unauthenticated Kalshi market-data API (https://api.elections.kalshi.com/trade-api/v2/events, https://docs.kalshi.com). No API key or login; read-only, no orders. Requests are sequential and spaced, with backoff on HTTP 429/5xx, well below Kalshi's published read limits. Not affiliated with Kalshi; use the data in line with Kalshi's terms and applicable law.
- Read-only. This Actor never places, signs or manages orders and needs no wallet or key. Polymarket restricts order placement in some regions; this Actor does not place orders.
- Rate limits: requests are spaced and retried with exponential backoff on HTTP 429/5xx, honouring
Retry-After, far below the limits Polymarket publishes (https://docs.polymarket.com/api-reference/rate-limits.md). - Not financial advice. Prices are a snapshot and can be stale or illiquid. You are responsible for using the data in line with Polymarket's Terms of Use and applicable law.
Prediction market data for House, Senate and Governor races
One row per market: yes/no price, volume, liquidity and close time. Filter with race: house, senate, governor, balance-of-power, ballot-measures.
Use cases
Prediction-market dashboards, odds and probability tracking, research datasets of forecasts, event-risk monitoring, backtesting against historical prices.
Election night: biggest movers
Add movers to see which markets moved most in the last 1, 6 or 24 hours. The actor takes the most traded matching Polymarket markets (up to about 2x Max items, at most 150), pulls the public CLOB price history of each Yes token, and returns them sorted by absolute change, biggest mover first. Each row keeps all its normal fields and adds priceFrom, priceTo, priceChange (probability delta, 0.05 = +5 points), pctChange (relative to priceFrom), windowHours, fromAt and toAt.
windowHours: 1, 6 or 24 (default 24).minAbsChange: drop markets that moved less than this, as a probability delta (0.02 = 2 points). Default 0.
Example for election night, top 20 midterm movers over the last 6 hours: {"preset":"us-midterms","maxItems":20,"movers":{"windowHours":6,"minAbsChange":0.01}}
Polymarket only (Kalshi rows are skipped in this mode). Only returned rows are charged, $0.003 each, same event as before. Without movers nothing changes. Movement shown is as reported by Polymarket price history, so quiet markets with no trades show 0.
Movers only
Set "moversOnly": true to keep only markets whose yes price moved at least minMovePts points (default 5) over the last 24 hours, up or down, based on Polymarket's oneDayPriceChange. Markets with no 24h change are skipped. Default is off, so existing inputs behave as before. Pricing is unchanged: $0.003 per row returned.
Input for a daily midterms movers feed: {"mode":"markets","electionMode":true,"moversOnly":true,"minMovePts":5,"maxItems":50}
Movers since your last run (scheduled)
Add "sinceLastRun": true to compare against the snapshot saved by your previous run (stored in the named key-value store polymarket-movers on your account, one snapshot per keyword/preset/race). Only markets whose yes price moved at least minMovePts points are returned, with prev_price, delta (points) and hours_since. The first run returns every market and saves the baseline, so you pay for the first run's rows only once. Schedule it from Apify Console, for example hourly: cron 0 * * * *, input {"mode":"markets","electionMode":true,"moversOnly":true,"sinceLastRun":true,"minMovePts":3,"maxItems":200}. Default off; pricing unchanged.
Feedback
If this Actor saved you time, a short honest rating on its Store page helps others find it: https://apify.com/pennydata/polymarket-markets-scraper/reviews . Bugs or missing fields: open an issue on the Actor page.