Skip to main content

Real-time prediction market odds data: US 2026 midterm control of Congress

Polymarket prices the Democratic Party at 93% to control the House and 70% to control the Senate, as of Oct 30. Five months of odds and volume from Goldsky's Polymarket data, and how to get the same data with Turbo or x402.

Real-time prediction market odds data: US 2026 midterm control of Congress cover image
Written by
image of Elliott Charbonneau
Elliott Charbonneau

Head of Operations

Polymarket's highest-volume open market on US House control prices the Democratic Party at 93%, as of 2026-10-30 20:43 UTC. The highest-volume open market on US Senate control prices the Democratic Party at 70%. Election Day for the 2026 midterms is 2026-11-03.

This post shows how those prices moved since June, and how much traders put behind them. It then shows three ways to get the same Polymarket data from Goldsky. Use a Turbo pipeline, use the Feeds API, or let an AI agent pay per request with x402.

Five months of control odds

Polymarket runs one market for each party in each chamber, for example "Will the Republican Party control the House?" The chart plots the daily price of each party's market, with daily USDC volume as bars.

Polymarket midterm control odds and daily trading volume, House and Senate, 2026-06-01 to 2026-10-30
ChamberParty market2026-06-012026-10-30
HouseDemocratic Party81.7%93.5%
HouseRepublican Party19.2%6.3%
SenateDemocratic Party47.0%70.0%
SenateRepublican Party53.1%30.6%

Daily prices are daily averages, so they differ from the latest-trade prices above.

  • House. The Democratic Party market rose from 81.7% to 93.5% over five months. The Republican Party market fell from 19.2% to 6.3%.
  • Senate. The Republican Party market led in June and July. The Democratic Party market first moved above it on 2026-08-12, at 52.1%. It is above it on every day from 2026-08-31 to 2026-10-30.
  • Senate, mid-September. The Democratic Party market rose from 53.0% on 2026-09-14 to 61.0% on 2026-09-20.

Volume grew as Election Day came closer

ChamberVolume since 2026-06-01Trades since 2026-06-01Share of that volume in OctoberVolume, last 14 daysTrades, last 14 days
House$15.56M35,07978.8%$10.02M17,461
Senate$4.97M26,77071.2%$2.76M11,564

The largest day for the House markets was 2026-10-29, with $3.45M. The largest day for the Senate markets was 2026-10-30, with $0.81M. The last 14 days are 2026-10-17 to 2026-10-30.

Polymarket data at Goldsky

Goldsky indexes Polymarket's contracts on Polygon and streams four datasets, version 2.0.0, with all historical data. Polymarket moved to its v2 contracts on 2026-04-28. Goldsky recommends these datasets over the older public subgraphs, which no longer return complete data.

DatasetOne row perKey columns
polymarket.order_filledSide of a filled order (maker or taker)asset, price, amount_usdc, amount_shares, side, order_type, user_id, block_timestamp
polymarket.orders_matchedTaker order matched against maker ordersasset, price, amount_usdc, amount_shares, side, user_id
polymarket.user_balancesOutcome-token balance of a walletowner_address, token_id, balance
polymarket.user_positionsPosition of a wallet, with profit and lossuser_id, token_id, amount, avg_price, realized_pnl, total_bought

Each market outcome, such as "Yes" in the House Democratic Party market, is one token. The asset and token_id columns hold that token's ID. Every number in this post comes from order_filled.

Stream the midterm markets into your own database with Turbo

A Turbo pipeline copies a dataset into a database you own, in real time and with full history. This pipeline streams every fill in the House and Senate Democratic Party markets into PostgreSQL.

yaml
name: polymarket-midterms
resource_size: s

sources:
  fills:
    type: dataset
    dataset_name: polymarket.order_filled
    version: 2.0.0
    start_at: earliest
    filter: >-
      asset IN (
        '83247781037352156539108067944461291821683755894607244160607042790356561625563',
        '33156410999665902694791064431724433042010245771106314074312009703157423879038',
        '113287701564209339913693347405685749986285999146352375265161592243948562084773',
        '107118433685650702332040991454078902188473746599223732907923581436160160612542'
      )

transforms:
  midterm_fills:
    type: sql
    primary_key: id
    sql: |
      SELECT id, block_number, block_timestamp, transaction_hash,
        asset, side, order_type, price, amount_usdc, amount_shares
      FROM fills

sinks:
  postgres_midterm_fills:
    type: postgres
    from: midterm_fills
    schema: public
    table: polymarket_midterm_fills
    secret_name: MY_POSTGRES_SECRET
    primary_key: id
  1. Install the Goldsky CLI and run goldsky login.
  2. Create a secret for your database, named MY_POSTGRES_SECRET in this example.
  3. Run goldsky turbo validate polymarket-midterms.yaml, then goldsky turbo apply polymarket-midterms.yaml.
  4. Run goldsky turbo inspect polymarket-midterms.yaml to see rows as they arrive.

To track other markets, change the token IDs in the filter. To keep every Polymarket fill, remove the filter. Turbo also writes to ClickHouse, Kafka, S3, webhooks, and other sinks.

With the rows in PostgreSQL, this query returns the daily price and volume of the House Democratic Party market:

sql
SELECT
  date_trunc('day', to_timestamp(block_timestamp)) AS day,
  sum(CASE WHEN asset = '83247781037352156539108067944461291821683755894607244160607042790356561625563'
           THEN price ELSE 1 - price END * amount_shares) / sum(amount_shares) AS dem_house_price,
  sum(amount_usdc) FILTER (WHERE order_type = 'taker') AS usdc_volume
FROM polymarket_midterm_fills
WHERE asset IN (
  '83247781037352156539108067944461291821683755894607244160607042790356561625563',
  '33156410999665902694791064431724433042010245771106314074312009703157423879038'
)
GROUP BY 1
ORDER BY 1;

What teams build with this data

  • Live odds pages and widgets. Show current prices and trends next to news coverage.
  • Large-trade alerts. Send fills above a USDC amount to a webhook as they happen.
  • Trader analytics. Show a wallet's positions, average entry price, and realized profit and loss from user_positions.
  • Research and backtests. Compare full price history with polls, events, or other markets.
  • Liquidity monitoring. Split maker and taker fills to see who provides and who takes liquidity in a market.
  • AI agents. Let an agent read prices or positions before it acts, as the next section shows.

AI agents: pay per request with x402

An agent does not need a Goldsky account or an API key to read Polymarket data. Goldsky's Feeds API accepts payment per request in USDC over the x402 protocol.

  • Activity, Positions, and Balances. The Feeds API serves Polymarket fills and other events, wallet positions with profit and loss, and outcome-token balances.
  • Price. Each Prediction markets request costs $0.00001 (10 atomic USDC), for any number of rows.
  • Payment. The first request funds a prepaid balance of at least $0.005, which covers about 500 Prediction markets requests. A standard v2 x402 client pays in USDC on Base, Polygon, Arbitrum, World Chain, or Monad.

A request without a key returns HTTP 402 with a payment challenge:

bash
curl -i "https://edge.goldsky.com/data/polymarket/activity?token_id=83247781037352156539108067944461291821683755894607244160607042790356561625563&limit=5"

An x402 client, such as @x402/fetch or the Coinbase CDP SDK, signs the payment and sends the request again. The response holds the newest fills for that token. The same prepaid balance also pays for Goldsky Edge RPC, at $0.000005 per call, so an agent can read raw Polygon contract logs with eth_getLogs.

NeedGoldsky product
Full history in your own database, updated in real timeTurbo pipeline
REST queries with no infrastructure to runFeeds API with an API key
An agent with a wallet and no accountFeeds API or Edge RPC, paid with x402

Method

  • Daily price. For each party's market, the daily price is the share-weighted average fill price of the "Yes" outcome. A fill of the "No" outcome at price p counts as a "Yes" price of 1 − p.
  • Volume and trades. Volume and trade counts use taker fills only. Each match emits one fill for the taker and one for each maker, so counting all fills counts each trade twice.
  • Market choice. In each chamber, the Democratic Party market has the most lifetime volume of the open control markets. The latest prices at the top of this post are the last fill of the "Yes" token in those markets.
  • Window. 2026-06-01 00:00 to 2026-10-30 20:43 UTC. 2026-10-30 is a partial day. The control markets opened on 2025-07-11.

This post checked each market's question text against Polymarket's public events and markets endpoints on 2026-10-29, for labels only. All prices, trade counts, and volumes come from Goldsky's data.

FAQ

Do these prices predict who wins the House or Senate?
No. Market prices are not polls or forecasts. A price shows what traders paid for a share. This post reports prices only.

Why don't the two party prices for a chamber add to exactly 100%?
Each party has its own market with its own order book. Trading keeps the two prices close to 100% in total, but each book fills on its own.

How can I get this data from Goldsky?
Use a Turbo pipeline to stream the polymarket.order_filled dataset into your own database. Use the Feeds API to query Polymarket activity, positions, and balances over REST. See the Goldsky Polymarket page (opens in a new tab).

Can an AI agent get this data without an account?
Yes. The Feeds API accepts x402 payments in USDC, at $0.00001 per Prediction markets request. See Pay per request with x402 (opens in a new tab).

© Endless Sky Inc. All rights reserved.

PrivacyTermsSecurity

System status