Prediction Markets Feed — Polymarket, Kalshi, Manifold
Pricing
$5.00 / 1,000 market returneds
Prediction Markets Feed — Polymarket, Kalshi, Manifold
Unified, normalized live odds across prediction markets — Polymarket, Kalshi and Manifold in one schema, one call. Implied probability, spread, volume, open interest and market lifecycle. Public data: no login, no API key, no account.
Prediction Markets Feed — Polymarket · Kalshi · Manifold
One unified, normalized live odds feed across prediction-market venues. Every venue's quirks flattened into a single schema, so you compare prices instead of parsing three APIs. All public data — no login, no API key, no account.
Output (per market)
| Field | Description |
|---|---|
platform | polymarket · kalshi · manifold |
question, ticker, url | Market identity + link |
subtitle | What a YES resolves to, when a question is split across outcomes |
yesPrice, noPrice | Implied probability (0..1) |
spread | Vig / implied edge |
volume, liquidity, openInterest | Market depth |
closeTime, status, resolvedOutcome | Lifecycle |
Depth fields vary by venue, and we report what each one actually gives us. Kalshi publishes
no liquidity figure — it returned 0.0000 on all 803 markets sampled, including one with 167k
volume — so liquidity is null there rather than a zero that would claim a deep market has
none. Manifold has no open interest. A null here means "this venue does not publish it", never
"it is zero".
Input
{ "platforms": ["polymarket", "kalshi", "manifold"], "limit": 100 }
- platforms — which venues to include.
- limit — markets per venue, which also bounds what the run costs.
Pricing
Pay per event: $0.005 per market returned (market-returned). You only pay for rows you
actually receive; a run that returns nothing fails and charges nothing.
Use cases
Quant research, odds aggregation, probability tracking across venues, AI agents that need live market data.
What this actor does not do
Cross-venue arbitrage detection was removed rather than shipped. It matched markets by question text, and across 300 live markets from three venues that found zero pairs — venues never phrase the same question identically. Loosening the match does not fix it: the closest pairs were "Will Eric Trump win the 2028 election" against "Will Trump announce he is running", and the next Prime Minister of Ethiopia against the next Prime Minister of Romania. Any threshold loose enough to match anything matches those, and an arbitrage signal that confuses two countries costs you money.
Doing it properly needs semantic equivalence — same underlying event, same resolution criteria, same date — which is a different product, not a setting. If you want it, say so and it gets built properly.
For the developer (not shown on the Store)
Thin wrapper over the private scraper-gateway. Set Actor environment variables (secret):
SCRGW_URL, SCRGW_SECRET. Pay-per-event: market-returned ($0.005). The gateway's
/v1/predictions/arbitrage route still exists for internal use — it is simply not sold.
Deploy: apify push --force.