Markets, prices, and cross-venue arbitrage candidates from Kalshi and Polymarket — normalized into a single clean schema. REST or MCP.
GET /markets
Search & filter open markets across both venues with one consistent shape.
GET /markets/{venue}/{id}
Full normalized detail: outcomes, prices, volume, close time, status.
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 }, ...]
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.
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.
The one YC-backed cross-platform API was acquired and pulled in-house in early 2026. Independent builders need a feed that stays independent.
Same data as plain JSON for your app, or as native MCP tools so an AI agent can query markets and spreads directly.
After subscribing, your API key is emailed within 24h. Send it as the X-API-Key header.
Bellwether is a remote MCP server — Claude and other AI agents can query markets and cross-venue spreads directly. One line, no install:
# Claude Code claude mcp add --transport http bellwether https://api.bellwether.markets/mcp # tools exposed: list_markets · get_market · matching_markets
# run locally pip install -r requirements.txt uvicorn bellwether.api:app --reload # or as an MCP server python -m bellwether.mcp_server