Prediction Markets Scraper: Kalshi, Polymarket & Manifold
Pricing
Pay per event
Prediction Markets Scraper: Kalshi, Polymarket & Manifold
Live odds, prices, volume and price history from Kalshi, Polymarket and Manifold in one clean, unified schema. Search by keyword, filter by status, compare venues. Uses official public APIs only.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Cameron Fagan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Get live odds, prices, volume, liquidity and price history from Kalshi, Polymarket and Manifold Markets, all returned in one unified schema. Search by keyword ("bitcoin", "fed", "election"), compare the same question across venues, or pull every open market ranked by volume.
Uses only the venues' official public APIs. No login, no cookies, no proxies, no browser, so runs are fast, cheap and reliable.
What you can do with it
- Compare odds across venues. See what Kalshi, Polymarket and Manifold each price for the same event, and spot arbitrage or mispricing.
- Feed trading bots and AI agents with clean, consistent JSON instead of three different APIs.
- Track sentiment over time with daily or hourly price history.
- Research resolved markets. Pull closed markets with their final resolution for backtesting and calibration studies.
- Build dashboards and alerts on elections, crypto, the Fed, sports, AI, weather and more.
Input
| Field | Description |
|---|---|
sources | Any of kalshi, polymarket, manifold. |
search | Optional keyword. Whole-word match on the market question, so fed finds "Fed rate cut" but not "Federico". |
status | open (trading now) or closed (resolved). |
maxItemsPerSource | Max markets per venue, highest volume first. |
minVolumeUsd | Skip thin markets. |
includePriceHistory | Attach a YES-price time series (Kalshi, Polymarket). |
historyDays, historyInterval | Lookback and resolution (hour / day). |
Example:
{"sources": ["kalshi", "polymarket", "manifold"],"search": "bitcoin","status": "open","maxItemsPerSource": 50,"includePriceHistory": true,"historyDays": 30}
Output
One row per tradable YES contract (example below; values illustrative). Multi-outcome events (e.g. "Bitcoin price at end of 2026" with price buckets, or "Who wins the House?") become one row per outcome, so every row has a single YES price.
{"source": "polymarket","marketId": "0x…","eventId": "what-price-will-bitcoin-hit-in-2026","question": "Will Bitcoin reach $250,000 by December 31, 2026?","outcome": "↑ 250,000","url": "https://polymarket.com/event/…","status": "open","yesPrice": 0.0065,"noPrice": 0.9935,"yesBid": 0.006,"yesAsk": 0.007,"lastTradePrice": 0.0065,"outcomes": [{ "name": "Yes", "price": 0.0065 }, { "name": "No", "price": 0.9935 }],"volume": 5493137,"volume24h": 41210,"volumeUnit": "usd","volumeUsd": 5493137,"volume24hUsd": 41210,"liquidityUsd": 120334,"openInterest": null,"createdTime": "2025-12-31T…","closeTime": "2026-12-31T…","resolution": null,"rules": "This market will resolve to \"Yes\" if…","priceHistory": [{ "t": "2026-09-27T00:00:00.000Z", "price": 0.007 }],"scrapedAt": "2026-10-04T…"}
Prices are probabilities from 0 to 1 (0.25 = 25% = 25¢).
Notes per venue
- Kalshi:
volumeis in contracts. Each contract settles at $1, so contracts ≈ USD notional, andvolumeUsduses that.openInterestis included. - Polymarket: volumes and liquidity in USD (USDC). Bid/ask from the order book.
- Manifold: play-money markets.
volumeis in mana, not dollars, sovolumeUsdis empty. Multiple-choice markets are split into one row per answer.
Pricing
Pay per result: you're charged per market returned, plus a small extra per market when price history is attached. No monthly fee. Set a maximum charge per run in Apify and the scraper stops cleanly when it's reached.
Use with AI agents
Works with the Apify MCP server and API, so agents (Claude, ChatGPT, LangChain, n8n, Make, Zapier) can call it directly, e.g. "get current odds on all Fed markets across Kalshi and Polymarket".
FAQ
Is this allowed? It reads public market data from each venue's official public API, the same data shown on their websites. It doesn't log in, place trades, or touch any private data.
How fresh is the data? Live at the moment the run executes. Schedule the Actor (e.g. every 15 minutes) for a continuous feed.
A venue was down. Does the run fail? No. Each venue is fetched independently; if one fails, the others still return results and the error is logged.
Found a bug or want another venue? Open an issue on the Issues tab. Requests are welcome.