Kalshi — Prediction Markets
Before writing queries, consult
references/api-reference.md
for sport codes, series tickers, and command parameters.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills kalshi search_markets
--sport
=
nba
sports-skills kalshi get_todays_events
--sport
=
nba
sports-skills kalshi get_sports_config
sports-skills kalshi get_markets
--series_ticker
=
KXNBA
--status
=
open
Python SDK (alternative):
from
sports_skills
import
kalshi
kalshi
.
search_markets
(
sport
=
'nba'
)
kalshi
.
search_markets
(
sport
=
'nba'
,
query
=
'Lakers'
)
kalshi
.
get_todays_events
(
sport
=
'nba'
)
kalshi
.
get_sports_config
(
)
kalshi
.
get_markets
(
series_ticker
=
"KXNBA"
,
status
=
"open"
)
CRITICAL: Before Any Query
CRITICAL: Before calling any market endpoint, verify:
The
sport
parameter is always passed to
search_markets
and
get_todays_events
for single-game markets.
Prices are on a 0-100 integer scale (20 = 20% implied probability) — do not treat as American odds.
status="open"
is used when querying markets to exclude settled/closed markets.
Without the
sport
parameter:
WRONG: search_markets(query="Leeds") → 0 results
RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds markets
Important Notes
On Kalshi, "Football" = NFL.
For football/soccer (EPL, La Liga, etc.), use sport codes:
epl
,
ucl
,
laliga
,
bundesliga
,
seriea
,
ligue1
,
mls
.
Prices are probabilities.
A
last_price
of 20 means 20% implied probability. Scale is 0-100 (not 0-1 like Polymarket).
Always use
status="open"
when querying markets, otherwise results include settled/closed markets.
Shared interface with Polymarket:
search_markets(sport=...)
,
get_todays_events(sport=...)
, and
get_sports_config()
work the same way on both platforms.
Workflows
Sport Market Search (Recommended)
search_markets --sport=nba
— finds all open NBA markets.
Optionally add
--query="Lakers"
to filter by keyword.
Results include yes_bid, no_bid, volume for each market.
Today's Events
get_todays_events --sport=nba
— open events with nested markets.
Present events with prices (price = implied probability, 0-100 scale).
Futures Market Check
get_markets --series_ticker= --ticker='
to
search_markets
. Check
references/api-reference.md
for valid sport codes
Error: Markets returned include settled/expired contracts
Cause:
status
parameter is not set
Solution: Always pass
status="open"
to filter to open markets only
Error: Series ticker returns no results
Cause: The series ticker may be incorrect or have no open markets
Solution: Call
get_series_list()
to discover available tickers, or check
references/series-tickers.md
Error: Football/soccer markets not found when searching "Football"
Cause: On Kalshi, "Football" refers to NFL — soccer uses league-specific codes
Solution: Use
sport='epl'
,
sport='ucl'
,
sport='laliga'
, etc. for soccer leagues
kalshi
安装
npx skills add https://github.com/machina-sports/sports-skills --skill kalshi