Kalshi Node
The Kalshi node fetches live prediction market data — market titles, executable bid/ask prices, volume, and open interest — from Kalshi ↗, the CFTC-regulated US prediction market exchange. Use it to monitor event probabilities, alert on price moves, or feed market sentiment into an LLM for analysis.
Configuration
Query
What Is Kalshi?
Kalshi is a regulated exchange where people trade on the outcomes of real-world events — Fed rate decisions, elections, economic data, weather, and more. Each market resolves YES or NO, and contract prices between 0 and 1 represent the crowd's estimated probability. A YES price of 0.72 means the market thinks there's a 72% chance the event happens.
Configuration
| Field | Description |
|---|---|
| Mode | Discovery & markets: discover resolves a topic to Kalshi series (start here), events lists a series' events (games) with markets inlined, browse lists markets (optionally filtered by series/event), search finds markets by topic, lookup fetches one market by exact ticker with live orderbook depth. History & live data (returned as raw API records): candlesticks a market's price history, trades a market's recent trades, forecast an event's forecast-percentile history, milestones upcoming sports games, gamestats live play-by-play for a milestone. |
| Query | Topic in discover/search (e.g. world cup, fed, cristiano ronaldo), optional event-title filter in events (e.g. Portugal), exact market ticker in lookup/candlesticks/trades (e.g. KXFED-26JUN-T4.00), event ticker in forecast, milestone id in gamestats, or optional ISO min-start-date in milestones. |
| Series Ticker | Required in events and candlesticks (the market's parent series); optional filter in browse (e.g. KXFED, KXWCGAME). |
| Event Ticker | Optional filter in browse/events (e.g. KXWCGAME-26JUN23PORUZB). |
| Interval / Lookback | candlesticks only — interval 1/60/1440 minutes and how many hours of history to fetch. |
Finding markets (discovery flow)
Kalshi has no free-text market search — discovery is topic → series → events → markets. The seamless path:
discoverwith your topic (world cup) → returns candidate series (KXWCGAME= game winner,KXWCGOAL= player goalscorer). Player props live in a different series than game winners.eventswithseriesTicker: KXWCGAME(and optionalquery: "Portugal") → returns the games with their markets inlined — no need to hand-build event/leg tickers.lookupany exact market ticker for the live orderbook.
search is a shortcut that does step 1+2 in one call and returns both the markets and the resolved series (so an empty market list still tells you which series to drill into).
| Status | open (default), settled, or all. |
| Limit | Number of items to return. Default: 10. Max: 200. |
| Include Orderbook | Fetch live bid/ask depth for the first 10 returned markets. Lookup mode always includes the orderbook. |
| Description | Optional note describing what this data fetch is for. |
Bid, Ask, and Mid — Not Last Price
Every market returns the executable top of book, normalized to 0–1 probabilities:
| Field | Meaning |
|---|---|
yesBid | Best price you could sell YES at right now |
yesAsk | Best price you could buy YES at right now |
yesMid | Midpoint of bid and ask |
spread | yesAsk - yesBid — how wide (illiquid) the market is |
lastPrice | Most recent trade print |
yesBid/yesAsk (or yesMid), never on lastPrice alone. The last trade can be stale — a market whose last print was 0.23 may have a real bid of only 0.17, and treating the stale print as the current price produces phantom trading edges.Empty sides of the book are null rather than 0 or 1: if nobody is bidding, yesBid is null and so are yesMid and spread. Check for null before comparing prices.
Using Kalshi in a Workflow
Probability Alert Monitor
Check a Fed rate market on a schedule and alert when the bid crosses a threshold.
Sentiment-Driven Analysis
Feed Kalshi markets into an LLM to assess whether current prices represent value.
Example LLM prompt:
User: Evaluate this Kalshi market:
Title: {{kalshi.markets[0].title}}
Yes bid/ask: {{kalshi.markets[0].yesBid}} / {{kalshi.markets[0].yesAsk}}
Spread: {{kalshi.markets[0].spread}}
Volume: {{kalshi.markets[0].volume}}
Cross-Venue Comparison
Pair the Kalshi node with the Polymarket node to compare prices for the same real-world event on both venues. Both nodes output 0–1 probabilities, so prices are directly comparable.
Output
| Path | Description |
|---|---|
| {kalshi.markets} | Array of Kalshi markets |
| {kalshi.markets[0].ticker} | Unique market ticker (e.g. KXFED-26JUN-T4.00) |
| {kalshi.markets[0].eventTicker} | Parent event ticker |
| {kalshi.markets[0].title} | Market title |
| {kalshi.markets[0].status} | Market status |
| {kalshi.markets[0].yesBid} | Best YES bid (0–1, null if empty) |
| {kalshi.markets[0].yesAsk} | Best YES ask (0–1, null if empty) |
| {kalshi.markets[0].yesMid} | YES midpoint (null unless both sides exist) |
| {kalshi.markets[0].noBid} | Best NO bid |
| {kalshi.markets[0].noAsk} | Best NO ask |
| {kalshi.markets[0].lastPrice} | Last trade price — may be stale |
| {kalshi.markets[0].spread} | Bid/ask spread |
| {kalshi.markets[0].volume} | Lifetime contracts traded |
| {kalshi.markets[0].volume24h} | Contracts traded in the last 24h |
| {kalshi.markets[0].openInterest} | Open contracts |
| {kalshi.markets[0].closeTime} | Market close time (ISO 8601) |
| {kalshi.markets[0].orderbook.yesBids} | Top YES bid levels (lookup / Include Orderbook) |
| {kalshi.markets[0].orderbook.noBids} | Top NO bid levels |
| {kalshi.count} | Number of markets returned |
| {kalshi.mode} | Fetch mode used |
| {kalshi.query} | Search text or ticker used |
kalshi with your edge label. If the edge is labeled prediction, use {prediction.markets[0].yesBid}.Example Output
{
"markets": [
{
"ticker": "KXFED-26JUN-T4.00",
"eventTicker": "KXFED-26JUN",
"title": "Fed funds rate above 4.00% after June meeting?",
"subtitle": "Above 4.00%",
"status": "active",
"yesBid": 0.17,
"yesAsk": 0.19,
"yesMid": 0.18,
"noBid": 0.81,
"noAsk": 0.83,
"noMid": 0.82,
"lastPrice": 0.23,
"spread": 0.02,
"volume": 48210,
"volume24h": 1830,
"openInterest": 12044,
"closeTime": "2026-06-17T18:00:00Z"
}
],
"count": 1,
"query": "KXFED-26JUN-T4.00",
"mode": "lookup"
}
Next Steps
- Polymarket Node — Compare event prices across prediction venues.
- LLM Node — Feed market prices into an AI model for probability analysis.
- Conditional Node — Route your workflow based on bid/ask thresholds.
- Storage Node — Track probability changes over time between workflow runs.