{
  "openapi": "3.0.1",
  "info": {
    "title": "Kalshi Weather Markets Scraper",
    "description": "Kalshi temperature, rain, hurricane and tornado markets as clean, spreadsheet-ready rows. Parses the city, weather station, storm name, bracket bounds and settled outcome into their own columns. Filter by city, temperature, date, volume or implied probability. No API key, no proxies.",
    "version": "1.0",
    "x-build-id": "kEhXRjSC7fqNKuGy3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/utopicvision~kalshi-weather-markets-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-utopicvision-kalshi-weather-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/utopicvision~kalshi-weather-markets-scraper/runs": {
      "post": {
        "operationId": "runs-sync-utopicvision-kalshi-weather-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/utopicvision~kalshi-weather-markets-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-utopicvision-kalshi-weather-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": {
          "mode": {
            "title": "What to fetch",
            "enum": [
              "live",
              "settled",
              "both"
            ],
            "type": "string",
            "description": "Open markets with live prices, settled markets with their final outcome and the observed temperature, or both.",
            "default": "live"
          },
          "seriesFilter": {
            "title": "Series tickers",
            "type": "array",
            "description": "Which Kalshi series to fetch, e.g. KXHIGHNY, KXRAIN, KXHURCAT. Defaults to three representative series so a default run is fast and cheap. Clear this field entirely to fetch every weather series that currently has open markets, which takes about six minutes. Series are discovered at runtime, so new ones appear without an update.",
            "default": [
              "KXHIGHNY",
              "KXRAIN",
              "KXHURCAT"
            ],
            "items": {
              "type": "string"
            }
          },
          "metrics": {
            "title": "Weather metrics",
            "type": "array",
            "description": "Keep only these kinds of market. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "high_temp",
                "low_temp",
                "hourly_temp",
                "avg_temp_streak",
                "rain",
                "snow",
                "storm",
                "temp_other",
                "other"
              ],
              "enumTitles": [
                "Daily high temperature",
                "Daily low temperature",
                "Hourly temperature",
                "Heat streak (weekly average)",
                "Rain and precipitation",
                "Snowfall",
                "Hurricanes, tropical storms and tornadoes",
                "Other temperature",
                "Other"
              ]
            },
            "default": []
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Keep only markets for these cities, e.g. Chicago, New York City, Miami. Matching ignores case and punctuation, and works against both the city as Kalshi wrote it and its canonical name. Leave empty for every city.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions or countries",
            "type": "array",
            "description": "Keep only markets in these regions, e.g. Atlantic, Florida, United States. Useful for storm markets, which have a basin instead of a city.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "stations": {
            "title": "Weather stations",
            "type": "array",
            "description": "Keep only markets settled by these station codes, e.g. CLINYC, CLIORD.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "stormNames": {
            "title": "Storm names",
            "type": "array",
            "description": "Keep only markets about these named storms, e.g. Yolanda.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minStrike": {
            "title": "Minimum strike",
            "type": "number",
            "description": "Lowest strike to keep, in the market's own unit: degrees Fahrenheit for temperature, inches for rain, category for hurricanes. A market counts if any part of its range falls inside the window, so open-ended markets like 'below 79' are kept."
          },
          "maxStrike": {
            "title": "Maximum strike",
            "type": "number",
            "description": "Highest strike to keep, in the market's own unit."
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "Keep only markets dated on or after this day, as YYYY-MM-DD. This is the weather date, not the market close date."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "Keep only markets dated on or before this day, as YYYY-MM-DD."
          },
          "minVolume": {
            "title": "Minimum volume",
            "minimum": 0,
            "type": "number",
            "description": "Drop markets that have traded less than this. The single most effective way to cut a run down to markets anyone is actually trading."
          },
          "minOpenInterest": {
            "title": "Minimum open interest",
            "minimum": 0,
            "type": "number",
            "description": "Drop markets with fewer open contracts than this."
          },
          "minProbability": {
            "title": "Minimum implied probability",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Keep markets priced at or above this implied probability, from 0 to 1. Use 0.4 with a maximum of 0.6 for near coin-flips."
          },
          "maxProbability": {
            "title": "Maximum implied probability",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Keep markets priced at or below this implied probability, from 0 to 1. Use 0.05 to find longshots."
          },
          "results": {
            "title": "Settlement result",
            "type": "array",
            "description": "For settled modes only: keep only markets that settled this way.",
            "items": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "scalar"
              ],
              "enumTitles": [
                "Settled yes",
                "Settled no",
                "Scalar or voided"
              ]
            },
            "default": []
          },
          "includeStorms": {
            "title": "Include hurricane and storm markets",
            "type": "boolean",
            "description": "Hurricane, tropical storm and tornado markets are the largest bloc of open weather markets. They carry storm names and ocean basins instead of cities.",
            "default": true
          },
          "includeOrderbook": {
            "title": "Include order book depth",
            "type": "boolean",
            "description": "Adds resting bid levels on both sides, plus a derived yes-ask and spread. Batched, so it costs very few extra requests.",
            "default": false
          },
          "includeRecentTrades": {
            "title": "Include recent trades",
            "type": "boolean",
            "description": "Adds recent executed trades per market. This costs one request per market and makes large runs much slower.",
            "default": false
          },
          "maxTradesPerMarket": {
            "title": "Trades per market",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many recent trades to attach when trades are enabled.",
            "default": 20
          },
          "historyDays": {
            "title": "Settlement lookback (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "How far back to pull settled markets. Only applies to the settled modes.",
            "default": 7
          },
          "includeHistoricalArchive": {
            "title": "Include the deep archive",
            "type": "boolean",
            "description": "Kalshi keeps only about two months of settled markets on the live endpoint. Turn this on to also walk the archive, which reaches back years. Returns a lot of rows.",
            "default": false
          },
          "incremental": {
            "title": "Incremental runs",
            "type": "boolean",
            "description": "Remember the newest settlement seen and fetch only newer ones next time. Ideal for a scheduled run.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "type": "integer",
            "description": "Safety cap on how many rows one run produces.",
            "default": 5000
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Politeness limit. The default is deliberately conservative; raising it risks the exchange throttling the run.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}