{
  "openapi": "3.0.1",
  "info": {
    "title": "Kalshi Weather Markets API - Temperature Odds & NWS Forecast",
    "description": "For weather traders and forecast models: Kalshi temperature, rain and snow markets as rows with bid, ask, volume, open interest and strike range; daily markets add the NWS forecast for the station in the market's rules. All 143 weather series (2026-09-21). Settled history and price-move monitor.",
    "version": "0.1",
    "x-build-id": "Jty3gZbOFT5FWTfYJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~kalshi-weather-markets-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-kalshi-weather-markets-api",
        "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-weather-markets-api/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-kalshi-weather-markets-api",
        "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-weather-markets-api/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-kalshi-weather-markets-api",
        "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": {
          "series": {
            "title": "Series tickers",
            "type": "array",
            "description": "Kalshi series to read, one per line, for example KXHIGHNY (NYC daily high), KXLOWTNYC (NYC daily low), KXHIGHCHI (Chicago daily high), KXHIGHLAX (Los Angeles daily high) or KXRAIN (daily rain, many cities). Lowercase is accepted. A ticker Kalshi does not have comes back as a free 'unknown-series' row. A repeated series is read and charged once. If you leave this field out (and discoverSeries is off) with monitoring off, three example series are read: KXHIGHNY, KXLOWTNYC and KXHIGHCHI. Up to 300 series per run.",
            "items": {
              "type": "string"
            }
          },
          "discoverSeries": {
            "title": "Also read every Kalshi weather series of the chosen types",
            "type": "boolean",
            "description": "On = the Actor lists Kalshi's 'Climate and Weather' series and adds every daily high-temperature and low-temperature series, and every daily, weekly or monthly rain and snow series, of the types chosen below (about 140 series on 2026-09-21; many are seasonal, retired or outside the US and have no market of the chosen status, which costs nothing). Series with no market of the chosen status add no rows. Off = only the series in the list above.",
            "default": false
          },
          "weatherTypes": {
            "title": "Types to discover",
            "type": "array",
            "description": "Used only with discoverSeries: high = daily maximum temperature, low = daily minimum temperature, rain = precipitation, snow = snowfall. Empty = all four.",
            "items": {
              "type": "string",
              "enum": [
                "high",
                "low",
                "rain",
                "snow"
              ],
              "enumTitles": [
                "Daily high temperature",
                "Daily low temperature",
                "Rain",
                "Snow"
              ]
            }
          },
          "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 settled value (for example the official high of the day). closed = trading ended, not yet settled. all = every market of the series. For settled, closed and all, closedWithinDays limits how far back to go.",
            "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. Ignored when marketStatus is open. Required in monitoring mode with settled, closed or all. Leave it empty to read the whole history of the series (a daily series has about 6 to 12 markets per day since it started, so use maxResults to cap it)."
          },
          "includeForecast": {
            "title": "Attach the NWS forecast of the settlement station",
            "type": "boolean",
            "description": "On = for daily temperature, rain and snow markets, the Actor reads the weather station named in the market rules (for example CLINYC = New York City, Central Park) and attaches the National Weather Service forecast high and low, precipitation chance and short forecast for the market's date, plus whether the forecast falls inside the market's Yes range. Free of extra charge. Past dates and dates beyond the NWS forecast (about 7 days) get null with the reason in nwsForecastNote.",
            "default": true
          },
          "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: every series in the list is checked, as far as the run's maximum total charge allows.",
            "default": 1000
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only markets that changed since the last run",
            "type": "boolean",
            "description": "Off = every market comes back, charged per row. On = the Actor remembers, per series, each market's yes bid, yes ask, last price, volume, open interest, status and result, and later runs return only markets where one of these changed, plus newly opened markets. The first run returns every market once as a baseline. In monitoring mode every series whose markets are read costs $0.30 per 1,000 checks, changes or not (unknown series, series 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 changed. The Actor reads only as many series as the run's maximum total charge can pay for with a check and one row each. Markets are remembered per series; do not put the same series in two schedules that can run at the same time.",
            "default": false
          },
          "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, because markets are remembered per series rather than per list. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}