{
  "openapi": "3.0.1",
  "info": {
    "title": "Kalshi Markets Scraper - Odds, Volume & Weather Forecasts",
    "description": "Kalshi prediction markets as rows: yes and no prices, last trade, volume, open interest, close time and result. The daily high and low temperature brackets in 24 US cities also get the forecast for their station and day, and whether it lands in the bracket. No API key or login.",
    "version": "0.1",
    "x-build-id": "MYqepGoEICmlYgJ9s"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~kalshi-markets-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-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/dami_studio~kalshi-markets-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-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/dami_studio~kalshi-markets-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-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": {
          "status": {
            "title": "Market status",
            "enum": [
              "open",
              "closed",
              "settled",
              "unopened",
              "paused",
              "any"
            ],
            "type": "string",
            "description": "Leave it empty and the run returns open markets for the cities, categories or series you pick, and market or event tickers whatever their status. With nothing at all set, you get one sample row."
          },
          "weatherCities": {
            "title": "Cities",
            "maxItems": 30,
            "type": "array",
            "description": "Kalshi's daily highest and lowest temperature markets in these cities, six brackets a day. Each bracket gets the forecast for the station the market settles on.",
            "items": {
              "type": "string",
              "enum": [
                "Atlanta",
                "Austin",
                "Boston",
                "Chicago",
                "Dallas",
                "Denver",
                "Houston",
                "Las Vegas",
                "Los Angeles",
                "Louisville",
                "Miami",
                "Minneapolis",
                "New Orleans",
                "New York City",
                "Newark",
                "Oklahoma City",
                "Philadelphia",
                "Phoenix",
                "San Antonio",
                "San Diego",
                "San Francisco",
                "Seattle",
                "Trenton",
                "Washington DC"
              ]
            }
          },
          "weatherKind": {
            "title": "Highs, lows or both",
            "enum": [
              "both",
              "high",
              "low"
            ],
            "type": "string",
            "description": "Which of the two temperature markets to fetch for each city.",
            "default": "both"
          },
          "addForecast": {
            "title": "Add the forecast",
            "type": "boolean",
            "description": "Next to each temperature bracket: the forecast high or low for that station and day from Open-Meteo, whether it falls inside the bracket, and by how many degrees it misses. Today and the next 15 days get a forecast; past days don't.",
            "default": true
          },
          "categories": {
            "title": "Categories",
            "maxItems": 20,
            "type": "array",
            "description": "Kalshi's own categories. Every market in them comes back, subject to the status and filters.",
            "items": {
              "type": "string",
              "enum": [
                "Sports",
                "Entertainment",
                "Politics",
                "Elections",
                "Financials",
                "Economics",
                "Mentions",
                "Climate and Weather",
                "Science and Technology",
                "Crypto",
                "Companies",
                "World",
                "Health",
                "Commodities",
                "Social",
                "Transportation",
                "Exotics",
                "AI",
                "Education",
                "Business"
              ]
            }
          },
          "tags": {
            "title": "Tags",
            "maxItems": 20,
            "type": "array",
            "description": "Kalshi's sub-categories, written the way Kalshi shows them, for example Daily temperature or Inflation. With categories set too, a series has to carry both.",
            "items": {
              "type": "string"
            }
          },
          "seriesTickers": {
            "title": "Series tickers",
            "maxItems": 200,
            "type": "array",
            "description": "A series is the question Kalshi asks again and again, such as KXHIGHNY (highest temperature in New York) or KXFED. Every market in it comes back.",
            "items": {
              "type": "string"
            }
          },
          "eventTickers": {
            "title": "Event tickers",
            "maxItems": 500,
            "type": "array",
            "description": "One occurrence of a series, such as KXHIGHNY-26SEP14. All of its markets come back.",
            "items": {
              "type": "string"
            }
          },
          "marketTickers": {
            "title": "Market tickers",
            "maxItems": 5000,
            "type": "array",
            "description": "Single markets, such as KXHIGHNY-26SEP14-B81.5.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword",
            "maxLength": 100,
            "type": "string",
            "description": "Only markets whose title, bracket or event mentions this. Capitals don't matter."
          },
          "closeFrom": {
            "title": "Closes on or after",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Only markets whose trading closes on or after this day, UTC. For settled markets this reaches back past Kalshi's live window into its archive."
          },
          "closeTo": {
            "title": "Closes on or before",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Only markets whose trading closes on or before this day, UTC."
          },
          "minVolume": {
            "title": "Minimum volume",
            "minimum": 0,
            "type": "integer",
            "description": "Only markets where at least this many contracts have traded since the market opened."
          },
          "minVolume24h": {
            "title": "Minimum 24-hour volume",
            "minimum": 0,
            "type": "integer",
            "description": "Only markets where at least this many contracts traded in the last 24 hours."
          },
          "minOpenInterest": {
            "title": "Minimum open interest",
            "minimum": 0,
            "type": "integer",
            "description": "Only markets with at least this many contracts still held."
          },
          "combos": {
            "title": "Combo markets",
            "enum": [
              "exclude",
              "include",
              "only"
            ],
            "type": "string",
            "description": "Kalshi generates combo markets, several outcomes bundled into one contract, in very large numbers. They're left out unless you ask. Market tickers you list come back either way.",
            "default": "exclude"
          },
          "includeOrderbook": {
            "title": "Include the orderbook",
            "type": "boolean",
            "description": "The resting bids on the yes and no side of each market, best price first.",
            "default": false
          },
          "orderbookDepth": {
            "title": "Orderbook levels",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many price levels per side.",
            "default": 10
          },
          "includeTrades": {
            "title": "Include recent trades",
            "type": "boolean",
            "description": "The latest trades of each market, newest first. This asks Kalshi once per market, so a run with trades stops at 2,000 markets.",
            "default": false
          },
          "tradesPerMarket": {
            "title": "Trades per market",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many of the latest trades per market.",
            "default": 20
          },
          "maxMarkets": {
            "title": "Maximum markets",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "The most markets returned in one run. Each market returned is one charge.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}