ssh.autos

Catalog / Markets & finance

MARKETS & FINANCE

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.

PER CALL · X402 / MPP From $0.01 per call 1 endpoint at api.ssh.autos. Pay in USDC, no account. See the endpoint
APIFY STORE Public actor Run it with your Apify account: bulk runs, schedules and exports. Open on Apify

About this data

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.

From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.

Buy per call over x402

One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.

POST /v1/kalshi/sports

Current open contracts from one sports series: KXNBAGAME (default), KXNFLGAME, KXNHLGAME, KXMLBGAME, KXNCAAFGAME, KXNCAAMBGAME, KXEPLGAME, KXNBASPREAD or KXNBATOTAL.

PRICE$0.01 per call, in USDC
RESULTUp to 5 per call
PAYMENTx402 or MPP · no account

One representative Yes/No contract per event, soonest upcoming first, then started games, then unknown starts, among the first 200 open events.

Within each event, prefer two-sided quotes nearest 50%, then the narrowest spread, then ticker.

Includes game title, participants, published milestone kickoff and league, native market family, primary rules, volume and source link.

Bid/ask values are displayed sell/buy quotes in dollars per $1 contract, excluding fees and depth; lastPrice is the last trade (zero can mean no trades).

Probabilities use a valid two-sided midpoint, otherwise an interior last trade with positive volume, otherwise null; decimal odds are indicative and rounded to two decimals.

No complements the stated Yes proposition; it does not necessarily mean the opponent wins.

Game legs retain canonical unsupported status for cross-book comparison; spread/total lines are canonical only when verified.

Liquidity appears only when published.

Input

Send a JSON body to POST https://api.ssh.autos/v1/kalshi/sports.

FieldTypeRequiredNotes
seriesTickersarray of stringsoptionalexactly 1 item; default ["KXNBAGAME"]
maxResultsintegeroptional1–5; default 3

Returned fields

The answer is JSON: records, a list of up to 5, and summary, the run status and counts. Each record has these 45 fields; a field the source does not publish comes back null.

45 fields per record
FieldTypeNotes
recordKeystring—
sourcestringalways kalshi
sourceUrlstring—
tickerstring—
statusstring—
eventTickerstring—
eventTitlestring—
eventSubTitlestring—
participantsarray of stringsBoth participants split from a verified fixture title; listing order, not home/away.
startTimestringKickoff from an explicitly linked milestone; occurrenceTime is not kickoff.
startTimeSourcestring—
sportstringSport from the linked milestone type.
yesProbabilitynumber—
noProbabilitynumber—
probabilitySourcestringone of bid_ask_midpoint, last_trade
seriesTickerstring—
seriesTitlestring—
frequencystring—
leagueLabelstring—
competitionScopestring—
mutuallyExclusiveboolean—
marketTypestringone of moneyline, moneyline_3way, spreads, totals, props, unsupported, unknown
marketTypeKindstring—
strikeTypestring—
floorStrikenumber—
capStrikenumber—
floorStrikeRawstring—
capStrikeRawstring—
yesSubTitlestring—
noSubTitlestring—
occurrenceTimestring—
openTimestring—
closeTimestring—
lastPricenumber—
yesBidnumber—
yesAsknumber—
noBidnumber—
noAsknumber—
volumenumber—
liquiditynumber—
outcomeYesstring—
outcomeNostring—
canonicalobject—
collectedAtstring—
rulesPrimarystring—

Example call

TERMINAL · $0.01 PER RUN
npx agentcash@latest fetch https://api.ssh.autos/v1/kalshi/sports -m POST -b '{"seriesTickers": ["KXNBAGAME"], "maxResults": 3}'

The example values come from the API spec or the actor’s own sample input. Running it is a paid call.

What is and isn’t charged

Free

  • Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
  • source failures and timeouts are not charged.
  • Invalid input and source failures are not charged.

Prefer a subscription? Run it on Apify

This data source is a public actor on the Apify Store: Kalshi Sports Markets. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.

Open on Apify

How x402 payment works

  1. Your client sends the request. The API answers 402 Payment Required with the price and where to pay.
  2. The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
  3. The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.

The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.

Machine-readable: openapi.json · llms.txt

Some links to Apify are affiliate links. We may earn a commission if you sign up and become a paying customer.