Kalshi Sports Markets avatar

Kalshi Sports Markets

Pricing

from $0.40 / 1,000 market records

Go to Apify Store
Kalshi Sports Markets

Kalshi Sports Markets

Track live Kalshi sports markets in one run: game lines, spreads, totals and prices, with the event, league, market type, line, yes/no prices, volume and liquidity per record. Source identifiers are preserved for cross-book comparison, and every run returns a fresh full-board snapshot.

Pricing

from $0.40 / 1,000 market records

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Features

Limited permissions

Share

Collect live Kalshi sports markets in one run: game winners, spreads and totals for the NFL, NBA, NHL, MLB, college football and basketball, the Premier League and more, with the fixture (participants, kickoff, league), market type and line, yes/no bids and asks, an indicative probability, volume and liquidity, one record per market. Source identifiers are kept for cross-book comparison. Built for traders, sports-data analysts and bot builders who schedule runs and pipe the JSON into dashboards, alerts or models. No Kalshi account or API key is needed.

Data only, not betting or financial advice.

Use cases

  • Odds boards: a fresh snapshot of every open NBA or NFL game market with kickoff times and indicative probabilities, refreshed on a schedule.
  • Line movement: store snapshots and chart how a game's midpoint and volume move toward kickoff.
  • Cross-book comparison: join Kalshi markets with other sportsbooks or prediction markets on participants, kickoff and the shared canonical envelope.
  • Models and bots: feed quotes, lines and volume into your own pricing or alerting logic.

Quick start

  1. Open the Actor and click Start. The prefilled form collects open markets for the default sports scope (Premier League and NBA games).
  2. Read the rows in the Output tab, or export them as JSON, CSV or Excel.

For one league, list its series:

{"seriesTickers": ["KXNBAGAME"], "maxResults": 250}

An empty input ({}) also uses the default scope (KXEPLGAME, KXNBAGAME), up to 500 markets. It never falls back to Kalshi's whole exchange board, and it fails clearly if neither default series is available.

To list the sports series you can collect, run discovery first:

{"mode": "discover"}

Input

NameTypeDefaultWhat it does
modestringmarketsmarkets collects market records; discover lists valid sports series tickers.
seriesTickersarray[]Kalshi series to collect (up to 100), for example KXNBAGAME or KXNFLSPREAD. Empty uses the default scope.
eventTickerstringemptyOne exact fixture, for example KXEPLGAME-26SEP06EVEMUN.
statusFilterstringopenopen, unopened, closed, final, settled or all.
minCloseTs / maxCloseTsintegerunsetOptional Unix-seconds bounds on market close time.
pageSizeinteger200Markets requested per page (1–1,000).
maxResultsinteger500Maximum market records per run (1–5,000), counted after filters and de-duplication.
includeEventContextbooleantrueAdd the parent event title, participants, league, kickoff and sport.
includeOrderbookbooleanfalseAdd top-of-book bids per market (one extra request per market).
includeRawbooleanfalseEmbed the original Kalshi market object, for debugging.
requestDelaySecsnumber0.25Pause between requests (0–10 seconds).

A misspelt input field stops the run with an error that names it.

Output

One dataset record per market with the market (ticker, title, status, marketType, strikes, yesSubTitle/noSubTitle), the fixture (eventTicker, eventTitle, participants, startTime, sport, leagueLabel), the series, quotes (lastPrice, yesBid, yesAsk, noBid, noAsk), yesProbability/noProbability/probabilitySource, volume, liquidity, orderbook, settlement semantics and the shared canonical sports envelope. Discovery runs return one row per series (kind: "series").

How to read the fields:

  • Prices are in dollars per $1 contract, excluding fees. yesAsk/noAsk are the displayed buy quotes, yesBid/noBid the displayed sell quotes. lastPrice is a past trade and may be zero when no trade exists.
  • yesProbability is an indicative mark, not an executable quote: the midpoint of a real two-sided quote (bid_ask_midpoint), otherwise the last trade when the market has traded (last_trade), otherwise null. An untraded zero never becomes a 0% or 100% forecast. noProbability is the complement. Canonical outcomes add decimal odds from the same probabilities.
  • participants are the two names from the event title, in listing order (not a home/away claim). startTime is the published kickoff (startTimeSource: "milestone.start_date") or null. occurrenceTime is kept as published and is often the expected game end, not kickoff.
  • Market types: a game-winner market is a binary on one team: "No" includes every other result (including a draw where one is possible), so it is not relabelled as the other team's win, and the canonical family stays unsupported. Spreads and totals map to canonical lines only when the participant, direction, period and settlement rules support comparison; the reasons are in semantics.
  • Multi-event combo (parlay) markets are left out and don't count toward maxResults. Values Kalshi doesn't publish (for example liquidity) are null.

Output example

Selected fields of a real NBA game market collected 2026-11-08 (full records also carry semantics, canonical, strikes, orderbook and more):

{"recordKey":"kalshi:KXNBAGAME-26NOV08LALDET-DET","source":"kalshi","sourceUrl":"https://kalshi.com/markets/KXNBAGAME-26NOV08LALDET-DET","ticker":"KXNBAGAME-26NOV08LALDET-DET","status":"active","eventTicker":"KXNBAGAME-26NOV08LALDET","eventTitle":"Los Angeles L vs Detroit","eventSubTitle":"LAL vs DET (Nov 8)","participants":["Los Angeles L","Detroit"],"startTime":"2026-11-08T23:00:00+00:00","startTimeSource":"milestone.start_date","sport":"basketball","seriesTicker":"KXNBAGAME","leagueLabel":"NBA","marketType":"moneyline","title":"Detroit wins","yesSubTitle":"Detroit","occurrenceTime":"2026-11-09T02:00:00Z","closeTime":"2026-11-10T23:00:00Z","lastPrice":0.7,"yesBid":0.69,"yesAsk":0.7,"noBid":0.3,"noAsk":0.31,"volume":511518.72,"yesProbability":0.695,"noProbability":0.305,"probabilitySource":"bid_ask_midpoint","outcomeYes":"Yes — Detroit","outcomeNo":"No — Detroit","collectedAt":"2026-11-08T21:04:04.535920+00:00"}

Pricing

  • $0.0004 per dataset record ($0.40 per 1,000 markets); discovery rows are records too.
  • $0.00005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event.

Worked cost: a 250-market NBA run costs about $0.10; the default 500-market cap about $0.20. Runs that match no markets add no record charge.

Scheduling and monitoring

  • Schedule a league-scoped run (for example every 15 minutes on game days) and key your history on recordKey plus collectedAt to track line and probability movement.
  • Use minCloseTs/maxCloseTs to keep a run to games closing in the next day or week.

FAQ

How fresh is the data? Each run reads the live Kalshi board at run time; nothing is cached between runs.

Which leagues are available? Public sports series checked on 2026-11-08: KXNBAGAME, KXNFLGAME, KXNHLGAME, KXMLBGAME, KXNCAAFGAME, KXNCAAMBGAME, KXEPLGAME, KXNBASPREAD, KXNBATOTAL, KXNFLSPREAD, KXNFLTOTAL. Availability follows the season (MLB had no open games on that date); run discover for the current list.

What if event context is unavailable? The market stays in the dataset; the missing context is null (or an empty participants list) and the run lists a warning.

Does it include full order-book depth? No. includeOrderbook adds top-of-book bids; displayed quotes don't guarantee available size.

Export formats? JSON, CSV, Excel, XML or RSS from the dataset, or read it through the Apify API in your own pipeline.

Limits

  • Public market data only; no trading, account data or fills.
  • No historical price candles; build history by scheduling runs.
  • Game-winner markets are single-team binaries, not complete two-way or three-way moneylines.

For support, contact Apify support and include the Actor run ID.