Kalshi & Polymarket Scraper - Odds, Results & Price History
Pricing
from $1.40 / 1,000 results
Kalshi & Polymarket Scraper - Odds, Results & Price History
Prediction market data from Kalshi and Polymarket in one row shape: live probabilities, bid/ask, volume and open interest, settled results, and price history candles. Sports (NFL, NBA, MLB, NHL, college, soccer, UFC, tennis, F1, golf, esports), politics, economics, crypto, weather and more.
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Prediction market data from Kalshi and Polymarket, the two biggest prediction markets, in one row shape:
- Open markets: the current probability, best bid and ask, last trade, volume, 24-hour volume, open interest and liquidity.
- Results: settled markets with the winning outcome, settlement price and settle time. Kalshi results go back to the start of each series (NFL games: September 2025), and Polymarket sports back to 2023.
- Price history: hourly, daily or minute data per market. Kalshi gives candles (open/high/low/close trade price, bid/ask, volume, open interest); Polymarket gives the price per interval.
Sports are covered in depth: NFL, college football, NBA, WNBA, college basketball, MLB, NHL, the Premier League, Champions League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Liga MX, UFC, boxing, ATP/WTA tennis, F1, NASCAR, PGA golf, cricket and esports. That includes moneylines, spreads, totals, player and period props, and futures. Every other category works too: politics, elections, economics (Fed, inflation, jobs), finance, crypto, weather, culture, tech and world events.
Prediction market prices are real-money probabilities. Use them next to sportsbook lines, to measure closing-line value, to find differences between Kalshi and Polymarket, or to track elections, Fed decisions and the weather.
What you get
One row per market. On Kalshi a market is one yes/no contract (e.g. "Philadelphia wins"), so a game has a row per team; on Polymarket a game moneyline is one market with both teams as outcomes.
| Field | Example |
|---|---|
platform, event_title, market_title | polymarket, Seahawks vs. Broncos, Seahawks vs. Broncos |
category, league, competition | sports, nfl, NFL 2026 |
market_type, market_type_raw, line | spread, spreads, -3.5 |
outcome, outcomes, outcome_prices | Seahawks, ["Seahawks", "Broncos"], [0.565, 0.435] |
price, best_bid, best_ask, last_price | 0.565, 0.56, 0.57, 0.56 |
volume, volume_24h, open_interest, liquidity | 1437982.78, 52110.4, 744.3, 20345.1 |
status, result, winning_outcome, settlement_price | settled, no, Bears, 0 |
event_time, open_time, close_time, settled_at | 2026-10-04T17:00:00Z, ... |
teams, score (Polymarket games) | ["New York Jets", "Chicago Bears"], 12-23 |
url, rules | the event page and the resolution rules |
priceis the probability (0 to 1) ofoutcome. For an open Kalshi market it is the bid/ask midpoint, and for a Polymarket market the price the site displays.resultisyesornoforoutcome.winning_outcomenames the winning entry ofoutcomes.market_typeismoneyline(full-game winner),spread,total,props(player props, period winners, both teams to score and other game markets) orfutures(season, awards, tournaments). It is empty outside sports.spreadandtotalinclude half, quarter and team lines;market_type_rawtells them apart (e.g.first_half_spreads,team_totals,1st Half Spread).volumeis in $1 contracts on Kalshi and in USD on Polymarket.
Price history rows
entityType: "priceHistory" returns one row per interval per market: ts, price, and on Kalshi open, high,
low, mean, best_bid, best_ask, volume and open_interest, plus the market fields (event, outcome, league,
status, result). price_source tells whether a Kalshi interval had a trade (trade) or only a quote (quote_mid).
How to use it
- Current odds for upcoming games (the default): just run it. Sports from both sites, 50 rows.
- This week's NFL moneylines and spreads on both sites: leagues
NFL, market typesMoneylineandSpread, clear Max items. - Yesterday's results:
entityType: "results", set From date and To date to yesterday. - A whole season of results:
entityType: "results", leaguesNBA, market typesMoneyline, From date2025-10-01, To date2026-06-30. - Closing-line analysis:
entityType: "priceHistory", leaguesNFL, market typesMoneyline,historyLastHours: 24, a date range. - One game or market: paste the Kalshi or Polymarket URL into Event IDs or URLs.
- Politics, Fed or weather markets: set Categories (and clear the default
Sports), optionally with Search (e.g.Fed,New York). - A daily feed of newly settled markets:
entityType: "results",mode: "incremental", scheduled daily. Each run returns only what earlier incremental runs with the same filters have not.
Input
| Field | What it does |
|---|---|
platforms | kalshi, polymarket or both (default). With both, maxItems is split between them. |
entityType | markets (open), results (settled) or priceHistory. |
categories | Sports (default), politics, elections, economics, finance, crypto, weather, culture, tech, world. Empty = all. |
leagues | 27 leagues plus "all" entries per sport (soccer, basketball, hockey, baseball, tennis, golf, MMA, cricket, esports). |
marketTypes | Sports only: moneyline, spread, total, props, futures. |
search | Every word must appear in the event, market or outcome text. |
dateFrom, dateTo | Results: settle date (default the last 7 days). Open markets: event start date. |
minVolume | Skip markets with less traded volume. |
eventIds | Kalshi event tickers/URLs and Polymarket event slugs/URLs; every market of each event. |
marketStatus | Price history of settled (default) or open markets. |
historyInterval, historyLastHours | minute, hour (default) or day; optionally only the last N hours. |
mode | full or incremental (results only). |
maxItems | Row cap, 50 by default. Clear it for everything. |
Good to know
- No login, no proxy. Both sites have public APIs; the actor reads them at about 10 requests per second each.
- Kalshi results older than about two months come from Kalshi's archive, which is read series by series. Setting
leaguesandmarketTypeskeeps that fast (a whole NBA season of moneylines on both sites: about 3 minutes); all sports without leagues reads about 4,000 series. - A Polymarket NFL game has about 300 markets (spreads and totals for every quarter and half, team totals, props).
marketTypes: ["moneyline"]keeps one market per game; spreads and totals bring every alternate and period line. - Price history size: one market's hourly history over two weeks is about 300 rows. Use
historyLastHoursordayto keep it small. - Polymarket's minute data is fetched in 3-day windows. Over a whole market life,
interval: minutewithouthistoryLastHoursmakes many requests. - Polymarket trade-level data is not collected: it carries trader wallet addresses and usernames.
FAQ
Why does a Kalshi game have two rows? Kalshi lists each team as its own yes/no contract ("Philadelphia wins", "Dallas wins"). Polymarket lists one market with both teams.
How do I compare Kalshi and Polymarket on the same game? Run both platforms with the same league and market type,
then match on teams and event_time.
What is open_interest? The number of Kalshi contracts still held. Polymarket reports it per event, not per
market, so it is empty there.
Can I get trades? Kalshi candles include per-interval volume. Individual trades are not collected.
Related sports data scrapers
- Action Network Scraper — US sportsbook odds, public betting splits, line movement, props, injuries and futures.
- Smarkets Scraper — betting exchange back/lay odds, results and traded-price history.
- Sports Odds History Scraper — opening and closing lines per sportsbook since 2021 and ATS results since 2006.
- PGA Tour Scraper — golf results, scorecards, odds, tee times and stats.
- TennisExplorer Scraper — tennis results back to the 1990s, bookmaker odds per match, match statistics and point-by-point.
- SofaScore Scraper — results, team statistics, lineups with player ratings, incidents and odds for football, basketball, hockey, tennis and 17 more sports.
- Flashscore Scraper — results, statistics, lineups, incidents and opening/closing odds from ~20 bookmakers for 17 sports.