ssh.autos

Catalog / Markets & finance

MARKETS & FINANCE

Kalshi Market Monitor

Monitor live Kalshi prediction markets in one run: yes/no prices, bid-ask spreads, volume, liquidity and open interest, plus close dates and market status.

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

Monitor live Kalshi prediction markets in one run: yes/no prices, bid-ask spreads, volume, liquidity and open interest, plus close dates and market status. Filter by status, series or event prefix and a creation window. Every run returns a fresh full-board snapshot; no account is needed.

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/markets/kalshi/snapshot

Default: the most active market of each of Kalshi's highest-activity open events (event title, question, indicative probability from a bid/ask midpoint or traded last, quotes, volume), never zero-activity combo shards.

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

With a series, event-prefix, lookback or non-open status filter: up to ten market rows from one source page of at most twenty markets.

Missing data is null, never a sentinel.

No cross-venue mapping, alerts, Telegram or stored state.

Input

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

FieldTypeRequiredNotes
statusstringoptionalone of open, unopened, closed, settled, all; default "open"
seriesTickerstringoptionalup to 80 characters; pattern ^[A-Z0-9-]+$
eventTickerPrefixstringoptionalup to 80 characters; pattern ^[A-Z0-9-]+$
lookbackHoursintegeroptional0–168; default 0
maxResultsintegeroptional1–10; default 5

Returned fields

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

30 fields per record
FieldTypeNotes
recordKeystring—
sourcestringalways kalshi
kindstringone of market
collectedAtstring—
sourceUrlstring—
tickerstringThe Kalshi market ticker — the venue's own market identity; rows de-duplicate by it.
eventTickerstringThe parent event ticker (matches kalshi-sports' event identity).
eventTitlestringParent event title when fetched with nested events; the /markets list publishes no event titles.
questionstringThe market's title text (field name matches the polymarket-clob-monitor market rows for cross-venue unions).
statusstringNative row status: initialized (unopened), active (open), determined (closed), finalized (settled).
activebooleanTrue when the native status is active (trading now).
closedbooleanTrue when the native status is determined or finalized.
openTimestring—
closeTimestringTrading close (ISO) — the monitor's end-of-life timestamp.
createdTimestringMarket creation time (ISO) — the lookback window key.
endDatestringAlias of closeTime under the polymarket-clob-monitor field name (cross-venue unions join on endDate).
lastPricenumberLast trade in dollars per contract (0..1) — the same numeric probability space as polymarket token prices.
yesBidnumber—
yesAsknumber—
noBidnumber—
noAsknumber—
yesProbabilitynumberIndicative Yes mark: bid/ask midpoint when a positive uncrossed two-sided quote exists, else a last trade only with positive volume; null when the venue's sentinel 0/1 quotes carry no information.
noProbabilitynumberDerived complement of yesProbability (1 - yes); null together with it.
probabilitySourcestringHow the indicative probability was derived, or null when no sensible mark exists.
one of bid_ask_midpoint, last_trade
outcomesarray of objectsThe two contract sides with the venue's own labels (yes/no sub-titles). price is the yes-side last trade in dollar-probability space; the no-side price is unpublished (derivable, never guessed) and s…
volumenumberTotal traded volume in USD (volume_fp).
volume24hnumber24h traded volume in USD (volume_24h_fp).
liquiditynumberResting liquidity in USD.
openInterestnumberOpen interest in USD (open_interest_fp).
crossVenueobjectPresent only when the cross-venue map matched (market ticker first, then event ticker) — the PK x Kalshi arb join surface.

Example call

TERMINAL · $0.01 PER RUN
npx agentcash@latest fetch https://api.ssh.autos/v1/markets/kalshi/snapshot -m POST -b '{"status": "open", "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.
  • 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 Market Monitor. 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.