Polymarket & Kalshi Scraper - Odds, Markets & Arbitrage avatar

Polymarket & Kalshi Scraper - Odds, Markets & Arbitrage

Pricing

from $3.00 / 1,000 market scrapeds

Go to Apify Store
Polymarket & Kalshi Scraper - Odds, Markets & Arbitrage

Polymarket & Kalshi Scraper - Odds, Markets & Arbitrage

Scrape Polymarket & Kalshi prediction markets: live odds & implied probability, 24h/weekly volume, liquidity, order flow (trades), top holders, wallet P&L, price history, and cross-platform arbitrage. Keyless, no browser. Monitor mode tracks odds moves and new markets. Export to JSON, CSV or Excel.

Pricing

from $3.00 / 1,000 market scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Polymarket & Kalshi Scraper — Live Odds, Markets, Order Flow & Arbitrage

Extract complete prediction-market data from Polymarket and Kalshi in one actor — live odds and implied probability for every outcome, 24h/weekly/monthly volume, liquidity, order flow (trades), top holders (smart money), wallet P&L, full price-history time-series, and cross-platform arbitrage that flags the same question priced differently on each venue.

No login, no API key, no browser — fast, reliable extraction straight from each platform's public data API. A monitor mode tracks odds moves and new markets so you can pull only what changed between runs.

Why this prediction-markets scraper?

Most scrapers cover a single platform and a handful of fields. This actor reads Polymarket's Gamma, CLOB and Data APIs and Kalshi's public market API, ships the richest record in the category (60+ fields per market), and is the only one that matches Polymarket against Kalshi to surface arbitrage.

DataTypical scrapersThis actor
Polymarket markets & events
Kalshi markets (same schema)
Live odds + implied probability per outcomepartial
24h / 7d / 30d / total volume + liquiditypartial
Best bid / ask / spread + 1d/1w/1m price change
Price-history time-series (chart data)
Trades / order flow (by market or wallet)
Top holders (whale / smart-money positions)
Wallet profiles (positions, value, realized/unrealized P&L)
Cross-platform arbitrage (Polymarket ⇄ Kalshi)
Monitor mode — only new / changed odds
Keyless, no browser

Use cases

  • Quant & trading research — pull live odds, spreads and history across both venues to backtest signals, build dashboards, or feed a model.
  • Odds & price monitoring — schedule the actor and use monitor mode to get alerted only when a market is new, its odds move, its volume spikes, or it resolves.
  • Arbitrage detection — find the same question priced differently on Polymarket vs Kalshi, with the spread and a theoretical risk-free return.
  • Smart-money tracking — surface the largest holders in a market and profile any wallet's positions and P&L.
  • News, politics & forecasting — prediction markets are real-time, money-weighted forecasts for elections, the economy, crypto, sports and tech. Power newsletters, research and AI agents with structured forecast data.
  • AI agents — clean, LLM-ready JSON for any agent that needs "what does the market think will happen?"

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Polymarket & Kalshi Scraper, pick a mode (Markets by default), and optionally add a query (e.g. election, bitcoin, fed rate) or category tagSlugs (e.g. politics, crypto, sports).
  3. Click Start and watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the Apify API.

Input

{
"mode": "markets",
"query": "election",
"tagSlugs": ["politics"],
"status": "active",
"sortBy": "volume24hr",
"maxItems": 100,
"includePriceHistory": false,
"monitorMode": false
}

Common fields:

  • mode (default markets)markets, events, kalshi, priceHistory, trades, holders, wallet, or arbitrage.
  • query — keyword search across Polymarket markets/events. Empty = the top markets by volume.
  • tagSlugs — Polymarket category slugs (politics, crypto, sports, economy, elections, geopolitics, tech, pop-culture…).
  • startUrls — Polymarket event/market URLs, bare slugs, Kalshi URLs or tickers — each fetched directly.
  • status (default active)active, closed, or all.
  • sortBy (default volume24hr)volume24hr, volume, liquidity, volume1wk, competitive, startDate, endDate.
  • conditionIds / marketSlugs / eventSlugs — target exact Polymarket markets/events (used by Trades, Holders, Price-history).
  • walletAddresses0x… wallets for Wallet mode (P&L) or Trades-by-wallet.
  • kalshiTickers / kalshiSeriesTickers — target exact Kalshi markets or whole series.
  • includePriceHistory / includeTopHolders / includeRecentTrades — enrich each market in Markets mode (bundled into the record at no extra charge).
  • monitorMode (default false) — emit only new / changed records between runs (see below).
  • maxItems (default 100, 0 = no cap), minVolume24h, minLiquidity, maxConcurrency, proxyConfiguration.

Output

Every row carries a platform (polymarket / kalshi) and a type (market, event, priceHistory, trade, holder, wallet, arbitrage). Use the dataset views (Markets / Events / Trades / Holders / Wallets / Price history / Arbitrage) for clean, dense tables.

A market record (type: "market"):

{
"platform": "polymarket",
"type": "market",
"question": "Will the Fed cut rates in July?",
"slug": "fed-decision-in-july",
"conditionId": "0xd86a816093fcd0a0e1ca440bc5ce199bd3c5a8d6139e044b076958164f8c5423",
"category": "Economy",
"outcomes": ["Yes", "No"],
"yesPrice": 0.18,
"impliedProbabilityPct": 18.0,
"odds": [
{ "outcome": "Yes", "price": 0.18, "impliedProbabilityPct": 18.0, "clobTokenId": "5904…078" },
{ "outcome": "No", "price": 0.82, "impliedProbabilityPct": 82.0, "clobTokenId": "5985…551" }
],
"lastTradePrice": 0.18, "bestBid": 0.18, "bestAsk": 0.19, "spread": 0.01,
"oneDayPriceChange": -0.03,
"volume24hr": 1924034.84, "volumeNum": 91275371.43, "liquidityNum": 2461957.42,
"startDate": "2026-06-01T00:00:00.000Z", "endDate": "2026-07-31T00:00:00.000Z",
"status": "active",
"url": "https://polymarket.com/event/fed-decision-in-july",
"scrapedAt": "2026-06-17T12:00:00.000Z"
}

A Kalshi market uses the same schema (prices are 0–1 probabilities; volume24hr/openInterest are in contracts). Other record types: priceHistory (history array of {t, timestamp, p} plus first/last/min/max/change), trade (wallet, side, outcome, size, price, USD value, time), holder (wallet, trader name, outcome, shares), wallet (portfolio value + positions with P&L), arbitrage (matched question, polymarketYes, kalshiYes, spread, guaranteedReturnPct, best strategy).

What to expect (field coverage)

Field groupNotes
Odds, prices, volume, liquidity, dates, statusAlways present when the platform exposes them
category / tagsAlways on Kalshi & Polymarket events; on Polymarket markets when the listing exposes it
priceHistory / topHolders / recentTradesOnly when you enable the matching enrichment toggle
conditionIdPolymarket only (Kalshi uses ticker)

A blank field means the platform didn't expose that value for that record — nothing is dropped, so you always get the richest dataset available.

Monitor mode & scheduling

Monitor mode and Apify Schedules work together — they don't conflict. Apify's Schedules decide when the actor runs; monitor mode decides what each run emits.

  • Turn on monitorMode and the actor remembers a fingerprint of every market in a named key-value store. On the next run it emits only markets that are new, whose odds moved (by at least monitorMinOddsChange), whose 24h volume spiked, or that changed status / resolved — each tagged with a changeType.
  • Pair it with a Schedule (e.g. every 15 minutes or hourly) and a webhook to push odds alerts into Slack, a CRM, or your own pipeline.
  • Leave monitorMode off for a full snapshot every run.

Automate & integrate

Run on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/prediction-markets-scraper').call({
mode: 'markets',
query: 'election',
status: 'active',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} markets`);

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push odds moves straight into your tools.
  • Slack — get alerted when a monitored market moves or resolves.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "show me the top political markets on Polymarket and Kalshi with their odds" and let it run the scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete market-intelligence stack — pair prediction-market odds with prices, filings, news and demand signals:

Tips

  • Start in Markets mode with a query or tagSlugs for a clean, fully-populated table that's perfect for export.
  • Both platforms in one run: run Markets (Polymarket) and Kalshi modes, or use Arbitrage mode to compare them side-by-side.
  • Enrichment costs requests: includePriceHistory adds one request per outcome token, includeTopHolders / includeRecentTrades one per market — they're bundled into the market record at no extra charge.
  • Odds alerts: combine monitorMode with a Schedule and lower monitorMinOddsChange for tighter alerting.
  • Arbitrage is conservative by design: raise arbMinSimilarity for stricter question matching and arbMinSpread for bigger gaps only.

FAQ

Does it need a Polymarket or Kalshi API key? No. It reads each platform's public market-data API — no key, login or browser required.

What's the difference between markets and events? A Polymarket event groups related markets (e.g. "2028 Election Winner" contains one market per candidate). Events mode returns the group with all nested markets; Markets mode returns the individual markets.

How are odds expressed? As a probability from 0 to 1 (yesPrice) plus impliedProbabilityPct (0–100). Kalshi's native cent prices are normalised the same way.

Can I monitor a market for odds changes? Yes — turn on monitorMode and run on a Schedule. Each run emits only new or changed markets, tagged with a changeType (new, odds_up, odds_down, volume_spike, status_change, resolved).

Does monitor mode conflict with Apify's scheduler? No — they complement each other. The Schedule controls when it runs; monitor mode controls what is emitted. State is kept in a named key-value store, independent of the scheduler.

Is the arbitrage signal guaranteed profit? No. It's a theoretical, pre-fee calculation based on matched questions and current prices. Always verify liquidity, fees and the exact resolution criteria on each platform before trading.

A field is empty — why? The platform didn't expose that value for that record (e.g. category on some Polymarket markets, or a brand-new market with no trades). Fields are blank only when the source omits them — never because the scraper skipped them.

Is scraping this data legal? This actor collects publicly available market data only. You're responsible for using the data in compliance with applicable laws and each platform's terms. Nothing here is financial advice.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.