Kalshi + Polymarket · one schema

One API for every prediction market.

Markets, prices, and cross-venue arbitrage candidates from Kalshi and Polymarket — normalized into a single clean schema. REST or MCP.

Independent, developer-first — built after Polymarket absorbed the only cross-platform feed.

Three endpoints, both venues

List markets

GET /markets

Search & filter open markets across both venues with one consistent shape.

Market detail

GET /markets/{venue}/{id}

Full normalized detail: outcomes, prices, volume, close time, status.

Matching markets

GET /matching-markets

Same real-world event on both venues, with the price spread — your arbitrage radar.

# the whole point, in one call
curl https://api.bellwether.markets/matching-markets

# → [{ event, kalshi:{yes:0.62}, polymarket:{yes:0.58}, spread:0.04 }, ...]

Why Bellwether

The fragmentation tax

Kalshi speaks RSA-signed REST; Polymarket speaks on-chain CLOB with a Polygon wallet. Two auth models, two schemas, two sets of edge cases. We normalize all of it.

Cross-venue is the use case

The reason to build on a unified feed is the same contract priced differently on each venue. We surface those matches and spreads directly — no stitching required.

Open lane

The one YC-backed cross-platform API was acquired and pulled in-house in early 2026. Independent builders need a feed that stays independent.

REST and MCP

Same data as plain JSON for your app, or as native MCP tools so an AI agent can query markets and spreads directly.

Pricing · placeholder, finalize at launch

Free

$0
  • 1,000 calls/mo
  • Both venues
  • Community support

Dev

$49/mo
  • 100k calls/mo
  • Matching-markets
  • MCP server access

Pro

$199/mo
  • 1M calls/mo
  • Priority + historical
  • Higher rate limits

Start

# run locally
pip install -r requirements.txt
uvicorn bellwether.api:app --reload

# or as an MCP server
python -m bellwether.mcp_server
Public market data — no account needed for Polymarket reads. See the repo README to run it.