Polymarket & Kalshi Prediction Markets Scraper API - Odds avatar

Polymarket & Kalshi Prediction Markets Scraper API - Odds

Pricing

from $5.00 / 1,000 markets

Go to Apify Store
Polymarket & Kalshi Prediction Markets Scraper API - Odds

Polymarket & Kalshi Prediction Markets Scraper API - Odds

Live odds from Polymarket and Kalshi in one schema: prices as probabilities, volume, liquidity, open interest, order book and OHLC history. Cross-venue arbitrage with no login. On a schedule, bills only markets that moved. Failures are free, no run-start fee.

Pricing

from $5.00 / 1,000 markets

Rating

0.0

(0)

Developer

Blackcube

Blackcube

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Polymarket Order Book  •  5 Actors, one codebase, one market billed once
Polymarket Order Book Scraper API
CLOB Bids & Asks
Polymarket & Kalshi Prediction Markets Scraper API
➤ You are here
Kalshi Weather Markets Scraper API
Daily High Temps
Polymarket + Kalshi Arbitrage Finder
No Login Needed
Kalshi Market History Scraper API
OHLC Candlesticks

More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Business Reviews Suite · Google Trends Suite · Amazon Product Data Suite · Nordic Marketplaces Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · Google Maps Suite · X / Twitter

The Prediction markets suite — 5 Actors, one engine

Live odds from Polymarket and Kalshi in one schema — prices as probabilities, volume, liquidity, open interest, the full order book and OHLC history. Cross-venue arbitrage without a login.

A run that finds nothing costs nothing. There is no run-start fee, error and coverage rows are free, and on a schedule a market is billed only when it has actually moved.

⭐ Why this one

Every market you get back actually trades. Prediction market venues publish a lot of placeholder markets — no volume, no open interest, no prices on either side — and tools in this category hand them straight to you. This one filters them out and tells you how many it dropped in a free coverage row. On the day this was built, a 132-market sample came back with 131 carrying real volume, including one with $177,765 of it. You are not paying for padding.

Two venues, one schema. A Polymarket row and a Kalshi row come back with the same field names and the same units, so you can compare them directly. Prices are always probabilities from 0 to 1 — never cents on one venue and dollars on the other.

Arbitrage needs no account. The cross-venue mode finds the same question priced differently on the two venues and works out the edge. It asks you for no email, no password and no API key of any kind, because the public market data both venues publish is enough. Pairs are matched conservatively and refused outright when the numbers in the two questions disagree — a false pair is worse than a missed one.

Built for a cron. Turn on change-only billing and a re-run charges the full market price only for markets whose price or status has moved. Everything unchanged comes back as a free row, billed a tenth of a market as a market checked ($0.0005). That is what makes a 5-minute poll affordable.

🎯 Use cases

  • Odds monitoring — poll a set of markets every few minutes and pay only when something moves.
  • Cross-venue arbitrage — spot the same question trading at different prices on Polymarket and Kalshi, with the edge and the limiting liquidity already worked out.
  • Research datasets — pull every open market with volume, liquidity and open interest for backtesting or a newsletter.
  • Order-book depth — see exactly what size stands at each price before sizing a position.
  • Settlement tracking — follow markets to resolution and capture the outcome.

🚀 Recipes

Everything currently trading

The default. Returns 100 markets across both venues.

{}

One topic across both venues

{ "search": "bitcoin", "maxItems": 200 }

Cross-venue arbitrage, 5-point edges or better

{ "mode": "arbitrage", "minEdge": 5, "minLiquidity": 1000 }

A Kalshi series with full order books

{ "platforms": ["kalshi"], "seriesTicker": "KXHIGHNY,KXHIGHCHI", "includeOrderBook": true }

A monitoring schedule that only bills on movement

{ "monitorChangesOnly": true, "watchFields": ["price", "status"], "maxItems": 500 }

A year of daily candles for one market

{ "platforms": ["kalshi"], "tickers": ["KXOAIANTH-40-ANTH"],
"includeHistory": true, "historyDays": 365, "historyIntervalMinutes": "1440" }

📦 What a row looks like

{
"type": "market",
"platform": "kalshi",
"marketId": "KXOAIANTH-40-ANTH",
"eventTitle": "Will Open AI or Anthropic IPO first?",
"question": "Will Open AI or Anthropic IPO first?",
"outcomes": [
{ "name": "Yes", "price": 0.925, "bid": 0.91, "ask": 0.94 },
{ "name": "No", "price": 0.075, "bid": 0.06, "ask": 0.09 }
],
"yesPrice": 0.925,
"noPrice": 0.075,
"impliedProbability": 0.925,
"volume": 177765.1,
"openInterest": 40353.88,
"status": "open",
"closeTime": "2026-12-31T23:59:00.000Z",
"url": "https://kalshi.com/markets/kxoaianth"
}

Ask for includeOrderBook and each row also carries every bid and ask level with size, the best bid and ask, the spread, and the total USD depth standing on each side. Ask for includeHistory and it carries OHLC candles with volume and open interest.

💵 Pricing

EventGOLD per 1,000What it is
market$5.00One market, fully normalised
order book$12.00Every level with size, both sides, plus depth
history$12.00OHLC candles with volume and open interest
arbitrage$12.00One cross-venue price gap with the edge worked out

Enrichments are opt-in and are never billed when the data could not be fetched — the market row still arrives, the enrichment simply is not charged. Error rows, coverage rows, the unchanged rows themselves and the run summary are always free, and there is no run-start fee. The page fetch behind an unchanged market is billed once as a market checked ($0.0005), a tenth of the market row.

❓ FAQ

Do I need a Polymarket or Kalshi account?

No. No email, no password, no API key, no wallet. That includes the arbitrage mode, which is the usual reason these tools ask for a Kalshi login.

Do I need a proxy?

No. Everything is handled for you and there is nothing to buy on top.

Are the prices in cents or dollars?

Neither — they are probabilities from 0 to 1, identically on both venues. A market trading at 92.5% comes back as 0.925 whichever venue it is on.

Why do I get fewer markets than the venue claims to have?

Because the ones you are not getting are placeholder markets with no volume, no open interest and no prices. They are filtered out and counted for you in a free coverage row, so you can see exactly how many were dropped.

How do I stop a scheduled run from charging me for data I already have?

Set monitorChangesOnly to true. The Actor remembers what it saw last time and bills only markets whose watched fields have moved. By default that is price and status; add volume if you want any trade at all to count.

Can I cap what one run costs?

Yes — set maxCostUsd. The run stops cleanly when it gets there and tells you why in the free summary row.

How reliable is the arbitrage matching?

Deliberately conservative. Two questions are paired only when their wording overlaps strongly and every number in them agrees, so "above $100k by 2026" is never matched with "above $120k by 2026". You can tighten it further with minSimilarity, and every pair carries its own matchScore so you can filter afterwards.

What happens when a venue is down?

The run returns a free error row naming what failed and keeps going with the other venue. It does not fail the whole run, and you are not billed for what did not arrive.

Can I get resolved markets, not just open ones?

Yes — set status to closed or settled. Settled markets carry their result.

Use it from n8n, MCP, the API or a schedule

Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/polymarket-kalshi-prediction-markets-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.

n8n

Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/polymarket-kalshi-prediction-markets-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.

MCP (Claude, Cursor, VS Code, any MCP client)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vonsensey/polymarket-kalshi-prediction-markets-scraper-api",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}

Your agent then calls vonsensey/polymarket-kalshi-prediction-markets-scraper-api as a tool with the same input the form takes and reads the dataset back.

REST API (one call, rows in the response)

curl -X POST "https://api.apify.com/v2/acts/vonsensey~polymarket-kalshi-prediction-markets-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d '{}'

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vonsensey/polymarket-kalshi-prediction-markets-scraper-api").call(run_input={})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('vonsensey/polymarket-kalshi-prediction-markets-scraper-api').call({});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Make, Zapier, LangChain, CrewAI

The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/polymarket-kalshi-prediction-markets-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.

Run it without configuring anything — Get live Polymarket and Kalshi prediction market odds, a ready-made example you can start as-is or copy.

Use cases

  • Size a position properly. The full Polymarket order book per market: every bid and ask level with size, best bid and ask, the spread, and the total USD depth standing on each side.
  • Watch depth on a schedule. Poll a set of markets and pay only for the books that actually moved — everything unchanged comes back as a free row.
  • Build a liquidity dataset. Tick size, minimum order size and standing depth per side, in one schema, for backtesting or research.

Run it on a schedule

A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per market delivered, and the FAQ below says exactly what a scheduled run that finds nothing new costs.

FAQ

Do I need a Polymarket account?

No. No email, no password, no API key, no wallet.

Do I need a proxy?

No. Everything is handled for you and there is nothing to buy on top.

Are prices in cents or dollars?

Neither — probabilities from 0 to 1.

How do I stop a schedule charging me for data I already have?

Set monitorChangesOnly. Only markets whose watched fields moved are billed; the rest are free rows.

Can I cap what one run costs?

Yes — set maxCostUsd. The run stops cleanly and says why in the free summary row.


Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.