Prediction Markets Odds API - Kalshi + Polymarket in one schema
Pricing
from $1.40 / 1,000 market rows
Prediction Markets Odds API - Kalshi + Polymarket in one schema
Prediction markets API for Kalshi and Polymarket in one schema: live implied probability, bid/ask, spread, 24h change, volume, open interest and rules. Filter by keyword, category and volume. No login or API key, ~$2 per 1,000 rows.
Pricing
from $1.40 / 1,000 market rows
Rating
0.0
(0)
Developer
Clean Data Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Prediction Markets API: Kalshi and Polymarket Odds in One Normalized Feed
Get live prediction market odds from Kalshi and Polymarket as one clean JSON, CSV or Excel table: implied probability (0-1), bid/ask, spread, 24h change, volume, open interest, liquidity and resolution rules. Same field names for both venues, so you can compare Fed, election, sports and crypto odds side by side. No login, no API keys, no proxies, about $2 per 1,000 rows with no start fee.
Built and maintained by Clean Data Labs.
Ready-made examples (one click to run)
| Example | What it returns |
|---|---|
| Fed rate decision odds: Kalshi vs Polymarket | Fed/FOMC rate markets on both venues |
| Election and politics odds from Kalshi and Polymarket | Politics and election markets with volume |
| Sports odds from Kalshi and Polymarket, most traded | Most traded sports markets |
| Bitcoin and crypto price odds from prediction markets | Bitcoin and Ethereum price-target markets |
| Inflation and CPI odds on Kalshi | Kalshi CPI and inflation strikes |
Who it's for
- Traders and quants who want a single feed of Kalshi and Polymarket prices to compare venues side by side.
- Researchers, journalists and newsletter writers covering elections, the Fed, sports and crypto odds.
- Data and BI teams building dashboards or forecasting models that need clean, scheduled odds snapshots.
- AI agents and automations that need prediction-market probabilities as structured JSON.
Popular use cases
- Spot price gaps when the same event (for example, a Fed rate decision) is listed on both venues.
- Schedule a run every few minutes or hours to build your own odds history.
- Track the most actively traded markets in a category such as Economics, Politics, Sports or Crypto.
- Feed implied probabilities into a model, spreadsheet, Slack alert or Google Sheet.
Features
- Two venues, one schema. Kalshi and Polymarket rows use the same field names, and prices are expressed as 0–1 probabilities.
- Official public APIs only. No login, no API keys and no proxies needed.
- Keyword filter. Keep only markets whose question, outcome or event title mentions your terms (for example
fed,election). - Category filter. Matches Kalshi categories and Polymarket tags (Politics, Economics, Sports, Crypto and more).
- Volume filter. Skip thin markets with
minVolume24h. - Less noise. Kalshi's auto-generated multi-leg combo markets are excluded by default (
excludeParlays). - Most active first. Both venues are scanned from the highest recent volume down.
- Resolution rules included, so you know exactly what each contract pays out on.
Input example
{"venues": ["kalshi", "polymarket"],"searchTerms": ["fed", "rate", "inflation", "cpi"],"minVolume24h": 100,"maxResults": 40}
| Input | What it does |
|---|---|
venues | kalshi, polymarket, or both (default both) |
searchTerms | Keep markets that mention any of these words (case-insensitive) |
categories | Kalshi categories / Polymarket tags, e.g. Economics, Sports |
minVolume24h | Minimum 24h volume (contracts on Kalshi, USD on Polymarket) |
maxResults | Maximum rows to return; you are charged per row (default 200) |
excludeParlays | Skip Kalshi multi-leg combo markets (default true) |
maxPagesPerVenue | Safety cap on pages scanned per venue (default 15) |
Output fields
| Field | Description |
|---|---|
venue | kalshi or polymarket |
market_id / event_id | Venue identifiers for the market and its parent event |
event_title | Parent event, e.g. "Fed decision in Dec 2026?" |
question / outcome | The tradable question and the outcome this row prices |
category / tags | Venue category and tags |
yes_price | Mid of the Yes bid and ask, 0–1 |
yes_bid / yes_ask / spread | Top-of-book quotes and their spread |
last_price / price_change_24h | Last traded price and 24h change |
volume_24h / volume_total / volume_unit | Trading volume (contracts on Kalshi, usd on Polymarket) |
open_interest | Open interest (Kalshi) |
liquidity | Liquidity (Polymarket) |
close_time | When the market closes (UTC) |
rules | Resolution rules text |
url | Link to the market on the venue |
scraped_at | Snapshot timestamp (UTC) |
Sample output
Real rows from a test run on October 31, 2026 (rules text shortened for display).
{"venue": "kalshi","market_id": "KXNCAAFGAME-26OCT31TXSTBSU-BSU","event_id": "KXNCAAFGAME-26OCT31TXSTBSU","event_title": "Texas St. vs Boise St.","question": "Boise St. wins","outcome": "Boise St.","category": "Sports","tags": ["Sports"],"yes_price": 0.585,"yes_bid": 0.58,"yes_ask": 0.59,"spread": 0.01,"last_price": 0.59,"price_change_24h": -0.2,"volume_24h": 4925662.32,"volume_total": 5763915.43,"volume_unit": "contracts","open_interest": 2643446.01,"liquidity": null,"close_time": "2026-11-03T02:00:00Z","rules": "If Boise St. wins the Texas St. vs Boise St. college football game originally scheduled for Oct 31, 2026, then the market resolves to Yes.","url": "https://kalshi.com/markets/kxncaafgame","scraped_at": "2026-11-01T05:58:17.161517+00:00"}
{"venue": "polymarket","market_id": "0xb9aee520bf51ac5f00b5c43e54ef9245bc9fcdef866ce8a33025f9a441cc651d","event_id": "fed-decision-in-december-20260729232808632","event_title": "Fed Decision in December?","question": "Will the Fed decrease interest rates by 50+ bps after the December 2026 meeting?","outcome": "50+ bps decrease","category": "Fed","tags": ["Fed", "fomc", "Trump", "Economy", "Fed Rates", "Kevin Warsh", "Global Rates", "Economic Policy", "Macro Indicators", "Recurring"],"yes_price": 0.0035,"yes_bid": 0.003,"yes_ask": 0.004,"spread": 0.001,"last_price": 0.004,"price_change_24h": -0.0005,"volume_24h": 12702.31,"volume_total": 1849150.813975,"volume_unit": "usd","open_interest": null,"liquidity": 180398.82363,"close_time": "2026-12-09T23:59:00Z","rules": "The FED interest rates are defined in this market by the upper bound of the target federal funds range. …","url": "https://polymarket.com/event/fed-decision-in-december-20260729232808632","scraped_at": "2026-11-01T05:58:27.092435+00:00"}
A RUN_SUMMARY record in the run's key-value store gives per-venue row counts.
Pricing
Pay per result: you pay only for the market rows saved to your dataset, with no start fee.
| Apify plan | Price per market row | Per 1,000 rows |
|---|---|---|
| Free | $0.002 | $2.00 |
| Bronze | $0.0018 | $1.80 |
| Silver | $0.0016 | $1.60 |
| Gold and above | $0.0014 | $1.40 |
Free credit
Apify's free plan includes $5 of usage credit every month, no credit card required. At the Free-tier price that covers up to about 2,500 market rows a month. Use maxResults to cap what any single run can cost.
FAQ and troubleshooting
Why did my run return fewer rows than maxResults?
Your filters may be narrow. Loosen searchTerms, categories or minVolume24h, or raise maxPagesPerVenue so more pages are scanned. maxResults is split across the venues you select.
Why is open_interest empty for Polymarket and liquidity empty for Kalshi?
Each venue publishes a different depth metric. The field is null when the venue does not provide it.
Are Kalshi and Polymarket volumes comparable?
Not directly. Kalshi reports volume in contracts and Polymarket in USD; check volume_unit on each row.
Do I need an account or API key for Kalshi or Polymarket?
No. The actor uses their official public market-data APIs.
Is this a Kalshi API or Polymarket API alternative?
It wraps both official public APIs and returns one normalized schema, so you do not have to handle two sets of endpoints, pagination, price formats and field names. If you only need one venue and want raw data, the official APIs are free and a good choice.
Can I build an odds history or alerts?
Yes. Schedule the actor (or one of the examples above) in Apify Console every few minutes or hours; each row has scraped_at. Connect Google Sheets, Slack, Zapier, Make or n8n on the Integrations tab.
Is this financial advice?
No. Prices are snapshots taken at scraped_at and can change quickly.
More from Clean Data Labs
- SAM.gov Contract Opportunities Scraper: live US federal bids with NAICS, set-asides, deadlines and contracting contacts.
- Substack Scraper: Substack posts with engagement metrics, plus top newsletters in any category.
Support
Questions, bugs or feature requests? Email clean-data-labs@mail.grokbot.com or open an issue on the actor's Issues tab.
Clean Data Labs: clean, structured public data, ready to use.