{
  "openapi": "3.0.1",
  "info": {
    "title": "Kalshi Markets Scraper & Price Monitor - Odds, Volume, Changes",
    "description": "For prediction-market traders and researchers: Kalshi markets as flat rows with bid, ask, last price, volume, open interest, close time and result, by ticker, category or keyword across 10,878 open events (2026-09-21). Monitoring returns only markets whose price or volume moved. No API key.",
    "version": "0.1",
    "x-build-id": "KRwD5n3K4g4mExg2p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~kalshi-markets-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-kalshi-markets-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/neverempty~kalshi-markets-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-kalshi-markets-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/neverempty~kalshi-markets-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-kalshi-markets-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "seriesTickers": {
            "title": "Series tickers",
            "type": "array",
            "description": "Kalshi series to read, one per line, for example KXFEDDECISION (Fed rate decision), KXCPIYOY (CPI inflation), KXNFLGAME (NFL games) or KXPRESPARTY (party winning the presidency). Every market of the series with the chosen status is returned. Lowercase is accepted. A ticker Kalshi does not have comes back as a free 'unknown-series' row. If you leave every field empty with monitoring off, the example series KXFEDDECISION and KXCPIYOY are read. Up to 500 tickers per run across the three ticker lists.",
            "items": {
              "type": "string"
            }
          },
          "eventTickers": {
            "title": "Event tickers",
            "type": "array",
            "description": "Kalshi events to read, one per line, for example KXFEDDECISION-26OCT (the October 2026 Fed decision). Every market of the event with the chosen status is returned.",
            "items": {
              "type": "string"
            }
          },
          "marketTickers": {
            "title": "Market tickers",
            "type": "array",
            "description": "Single Kalshi markets, one per line, for example KXFEDDECISION-26OCT-H0. These are returned whatever their status (marketStatus and closedWithinDays do not apply to them).",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Find markets by Kalshi category: the Actor lists Kalshi's events with the chosen status and keeps those in these categories (together with keywords, an event must match both). Weather markets with the NWS forecast of the settlement station are in the sister Actor Kalshi Weather Markets API.",
            "items": {
              "type": "string",
              "enum": [
                "Politics",
                "Elections",
                "Economics",
                "Financials",
                "Crypto",
                "Commodities",
                "Companies",
                "Business",
                "Sports",
                "Entertainment",
                "Mentions",
                "Social",
                "Science and Technology",
                "AI",
                "Health",
                "World",
                "Climate and Weather",
                "Transportation",
                "Education",
                "Exotics"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Find markets by words in the event title, subtitle or ticker, for example fed, bitcoin, election or a team name (case-insensitive; an event matching any keyword counts). The Actor lists Kalshi's events with the chosen status (about 11,000 open events on 2026-09-21, read in about 20 seconds) and reads the markets of each matching event.",
            "items": {
              "type": "string"
            }
          },
          "marketStatus": {
            "title": "Market status",
            "enum": [
              "open",
              "settled",
              "closed",
              "all"
            ],
            "type": "string",
            "description": "open = markets you can trade now (Kalshi reports them as 'active'). settled = finished markets with the result and the settlement value. closed = trading ended, not yet settled ('closed' or 'determined'). all = every market. For settled, closed and all, closedWithinDays limits how far back to go (required with categories, keywords or monitoring).",
            "default": "open"
          },
          "closedWithinDays": {
            "title": "Closed within the last N days (settled / closed / all)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only markets whose close time is within the last N days (markets closing later, such as open ones, are kept with all). Ignored when marketStatus is open. Markets settled before Kalshi's archive cut-off (2026-07-22 on 2026-09-21, moving forward over time) are no longer served by Kalshi's live API and are not returned."
          },
          "maxResults": {
            "title": "Maximum market rows",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "With monitoring off, the run stops once this many market rows have been returned, and a free row says what was not returned. Free rows do not count. In monitoring mode it does not limit the changed markets returned.",
            "default": 1000
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only markets that moved since the last run",
            "type": "boolean",
            "description": "Off = every market comes back, charged per row. On = the Actor remembers, per ticker or search, the yes bid, yes ask, last price, volume, open interest, status and result of each market it returned, and later runs return only markets that moved by at least the amounts below, whose status or result changed, or that are new. The first run returns every market once as a baseline. Each run costs $0.30 per 1,000 checks, changes or not: one check per series, event or market ticker whose markets are read, and one per event found by categories or keywords (unknown tickers, items with no market and failed requests are free), plus the row price for the markets returned. Example: 5 series every 10 minutes = 21,600 checks a month = $6.48, plus the markets that moved. The Actor reads only as many items as the run's maximum total charge can pay for with a check and one row each. Do not put the same tickers or search in two schedules that can run at the same time.",
            "default": false
          },
          "minPriceChangeCents": {
            "title": "Minimum price move (cents)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Monitoring mode: a market is returned when its yes bid, yes ask or last price moved by at least this many cents (1 cent = $0.01 per contract) since the last time it was returned. Small moves add up: two 1-cent moves count as 2 cents.",
            "default": 1
          },
          "minVolumeChange": {
            "title": "Minimum volume or open interest move (contracts)",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Monitoring mode: a market is also returned when its volume or open interest moved by at least this many contracts since the last time it was returned. 0 = do not watch volume and open interest (only prices, status and result).",
            "default": 1
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered and start over",
            "type": "boolean",
            "description": "Clears every remembered market for this Actor, so the next monitoring run returns every market again as a first check. This affects all your monitoring runs. Turn it off again after one run: left on in a schedule, every run returns every market again and charges for it.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}