Our own visit statistics are always on. Google Analytics, which helps us understand how people use our public pages (not your signed-in workspace), is enabled only with your permission. See our Privacy policy.

POST

API health

24h health
Normal
24h average time
—
  • Healthy / normal
  • Available
  • Limited
  • Mostly down
Normal

Search Kalshi markets by title keyword, status and order, and get each market's last price, Yes and No bid and ask, volume, open interest, rules, result and times.

Price $6.81 per 1,000 requests ($0.006806 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.

AI prompt

Please help me write a data collection script with the EveryInfra Kalshi Markets endpoint (kalshi/markets).

How the endpoint works:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to kalshi and action to markets, and put the parameters inside params.
- No required parameters.
- Optional parameters:
  - event_ticker: Only markets of one Kalshi event, such as KXBTC2026200-27JAN01, taken from the event_ticker of a row.
  - keyword: Words to find in market titles, at least 3 characters, such as bitcoin or fed; leave it out to list markets by the chosen order.
  - sort: volume (default, contracts traded), open_interest, price_desc, price_asc or close_time. (allowed: close_time / open_interest / price_asc / price_desc / volume)
  - status: open (default, still trading) or closed (finished or settled). (allowed: closed / open)
  - limit: The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. (default: 20)
- Returns a list of records. Main fields of each record: ticker (Market ticker, as Kalshi writes it), event_ticker (Ticker of the parent event), series_ticker (Ticker of the parent series), title, event_title (Title of the parent event), yes_subtitle (Description of the Yes side, such as Ab…), no_subtitle (Description of the No side), status (Market status as Kalshi reports it, suc…), result (Settlement result, yes or no), last_price (Last traded price in dollars (0 to 1), yes_bid (Current Yes bid, dollars), yes_ask (Current Yes ask, dollars); 27 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=kalshi.
- Example request body:
{
  "platform": "kalshi",
  "action": "markets",
  "params": {}
}
- Price: $6.81 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.

Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.

Request parameters

NameInTypeRequiredDefaultDescription
AuthorizationheaderstringYes-Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository.
platformbodystringYeskalshiPlatform identifier, fixed value.
actionbodystringYesmarketsCapability identifier, fixed value.
event_tickerbody.paramsstringNo-Only markets of one Kalshi event, such as KXBTC2026200-27JAN01, taken from the event_ticker of a row.
keywordbody.paramsstringNo-Words to find in market titles, at least 3 characters, such as bitcoin or fed; leave it out to list markets by the chosen order.
sortbody.paramsstring (enum)No-volume (default, contracts traded), open_interest, price_desc, price_asc or close_time.Allowed valuesclose_timeopen_interestprice_ascprice_descvolume
statusbody.paramsstring (enum)No-open (default, still trading) or closed (finished or settled).Allowed valuesclosedopen
limitbody.paramsinteger (1–100)No20The most rows to return in this call, an integer from 1 to 100. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge.

Code samples

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "kalshi",
  "action": "markets",
  "params": {}
}'

OpenAPI definition (JSON)Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.

Response example

Field preview

No sample response is available for these parameters yet. This preview shows the response shape and fields from the API definition, with … as placeholders; it is not the result of a live call.

json
{
  "id": "req_…",
  "platform": "kalshi",
  "action": "markets",
  "results": [
    {
      "ticker": …,
      "event_ticker": …,
      "series_ticker": …,
      "title": …,
      "event_title": …,
      "yes_subtitle": …,
      "no_subtitle": …,
      "status": …,
      "result": …,
      "last_price": …,
      "yes_bid": …,
      "yes_ask": …,
      "no_bid": …,
      "no_ask": …,
      "volume": …,
      "open_interest": …,
      "dollar_volume": …,
      "dollar_open_interest": …,
      "strike_type": …,
      "floor_strike": …,
      "cap_strike": …,
      "rules": …,
      "settlement_sources": …,
      "open_at": …,
      "close_at": …,
      "settled_at": …,
      "can_close_early": …,
      "platform": …
    }
  ],
  "count": …,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Response fields

Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.

FieldMeaning
tickerMarket ticker, as Kalshi writes it.
event_tickerTicker of the parent event; pass it as event_ticker to list the event's other markets.
series_tickerTicker of the parent series.
titleTitle. null when the platform has no titles (for example text-only posts).
event_titleTitle of the parent event.
yes_subtitleDescription of the Yes side, such as Above $200000.
no_subtitleDescription of the No side.
statusMarket status as Kalshi reports it, such as open, closed or settled.
resultSettlement result, yes or no; absent before settlement.
last_priceLast traded price in dollars (0 to 1; a contract pays $1 on the winning side, so it reads as a probability).
yes_bidCurrent Yes bid, dollars.
yes_askCurrent Yes ask, dollars.
no_bidCurrent No bid, dollars.
no_askCurrent No ask, dollars.
volumeContracts traded in total.
open_interestContracts open.
dollar_volumeTotal traded value in dollars.
dollar_open_interestOpen interest in dollars.
strike_typeStrike type as Kalshi reports it, such as greater, less or between; absent for markets without a numeric strike.
floor_strikeLower strike; absent when there is none.
cap_strikeUpper strike; absent when there is none.
rulesMain settlement rule, as written.
settlement_sourcesNames of the sources used to settle the market.
open_atOpening time, ISO 8601 UTC.
close_atClosing time, ISO 8601 UTC.
settled_atSettlement time, ISO 8601 UTC; absent before settlement.
can_close_earlyWhether the market can close early once its condition is met.
platformSource platform identifier, the same as platform in the request (for example xiaohongshu, tiktok).

Errors and billing

401
Missing or invalid key.
402
Insufficient balance. Top up first.
422
Invalid parameter name or value. Fix it using the suggestions in the error. No charge.
429
Per-minute request limit reached. Wait for Retry-After, then try again.
503
Could not complete. The held charge is returned to your balance. If the outcome is unknown, verify it before you retry.
200 empty
No data. No charge.

Errors

Official references

Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.

  • Kalshi API docs: glossary of series, events and markets ↗

    Kalshi's official docs say every event belongs to one series (series_ticker) and every market to one event (event_ticker), which is how `event_ticker` lists the markets of one event. Prices and volumes are Kalshi's own.

    Checked 2026-11-01