{
  "openapi": "3.0.1",
  "info": {
    "title": "Weather Forecast API - Spire Point, Airport and Tide Forecasts",
    "description": "Global weather forecasts from the Spire Weather API: hourly to 15 day point forecasts by latitude and longitude, optimized forecasts for 10,000+ airports, ports and stations, current weather conditions and tide heights with high and low tides. Temperature, wind, rain, waves. Bring your own key.",
    "version": "0.1",
    "x-build-id": "mKJXUypRjo7XUY2TC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~global-weather-point-forecast-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-global-weather-point-forecast-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/nabeelbaghoor~global-weather-point-forecast-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-global-weather-point-forecast-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/nabeelbaghoor~global-weather-point-forecast-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-global-weather-point-forecast-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": {
          "mode": {
            "title": "What to get",
            "enum": [
              "pointForecast",
              "optimizedForecast",
              "currentWeather",
              "tides",
              "tideExtrema"
            ],
            "type": "string",
            "description": "Point forecast reads the Spire global forecast (SOF-D) for each latitude and longitude, one row per lead time. Optimized forecast reads the machine-learning optimized forecast for airports, ports and weather stations. Current weather reads the hourly current conditions analysis. Hourly tide height and High and low tides read Spire's astronomical tide model.",
            "default": "pointForecast"
          },
          "locations": {
            "title": "Locations (latitude,longitude)",
            "type": "array",
            "description": "Point forecast, Current weather and the tide modes. One point per line as latitude,longitude in decimal degrees, such as 40.7128,-74.0060 for New York. Each point is one API request.",
            "items": {
              "type": "string"
            }
          },
          "stations": {
            "title": "Stations (airports, ports, weather stations)",
            "type": "array",
            "description": "Optimized forecast only. One location per line: icao:KJFK for an airport, wmo:72259 for a WMO weather station, unlocode:NLAMS for a port, a bare ICAO code such as EGLL, or a location UUID returned by an earlier run.",
            "items": {
              "type": "string"
            }
          },
          "bundles": {
            "title": "Data bundles",
            "type": "array",
            "description": "Point forecast only. Which groups of weather variables to return. Your Spire key is licensed for some bundles only; one outside your plan ends the run with the list of allowed bundles.",
            "items": {
              "type": "string",
              "enum": [
                "basic",
                "basic-accumulation",
                "maritime",
                "maritime-atmos",
                "maritime-wave",
                "maritime-wave-ext",
                "thunderstorm",
                "agricultural",
                "clouds",
                "wind-energy",
                "solar-energy",
                "solar-energy-accumulation",
                "precipitation",
                "precipitation-accumulation"
              ],
              "enumTitles": [
                "Basic (temperature, wind, pressure, humidity, rain, cloud, visibility)",
                "Basic accumulation (1, 3 and 6 hour precipitation)",
                "Maritime (waves, ocean currents, sea surface temperature)",
                "Maritime atmospheric (elevated wind for vessels and platforms)",
                "Maritime waves",
                "Maritime waves extended (maximum wave height, peak period)",
                "Thunderstorm (CAPE, CIN, helicity, storm motion)",
                "Agricultural (soil moisture, surface temperature, humidity)",
                "Clouds (ceiling, low, mid and high cloud cover)",
                "Wind energy (hub height wind)",
                "Solar energy (irradiance)",
                "Solar energy accumulation",
                "Precipitation (precipitation type, snowfall, reflectivity)",
                "Precipitation accumulation"
              ]
            },
            "default": [
              "basic"
            ]
          },
          "optimizedBundle": {
            "title": "Optimized forecast bundle",
            "enum": [
              "basic",
              "wind-energy",
              "solar-energy"
            ],
            "type": "string",
            "description": "Optimized forecast only. Wind energy and Solar energy return data only at locations Spire has configured for them.",
            "default": "basic"
          },
          "timeBundle": {
            "title": "Time bundle (step and range)",
            "enum": [
              "hourly",
              "3_hourly",
              "6_hourly",
              "6_hourly_extended",
              "6_hourly_10day",
              "6_hourly_15day",
              "hourly_6day",
              "all"
            ],
            "type": "string",
            "description": "Point and Optimized forecast. The lead time step and horizon. Spire recommends always sending one; which ones work depends on your subscription.",
            "default": "hourly"
          },
          "issuanceTime": {
            "title": "Issuance time (model run)",
            "type": "string",
            "description": "Point and Optimized forecast. ISO 8601 date-time of the model run, such as 2026-10-16T00:00:00Z. Leave empty for the most recent run. Pick the previous run when you need a run that has finished populating."
          },
          "validTimeInterval": {
            "title": "Valid time interval",
            "type": "string",
            "description": "Point and Optimized forecast. ISO 8601 interval of forecast times to return, such as 2026-10-16T00:00:00Z/P1D or 2026-10-16T00:00:00Z/2026-10-18T00:00:00Z. Leave empty for the whole time bundle."
          },
          "currentTime": {
            "title": "Observation time",
            "type": "string",
            "description": "Current weather only. ISO 8601 time or range within the past 72 hours, such as 2026-10-16T12:00:00Z. Leave empty for the latest hourly analysis."
          },
          "startDate": {
            "title": "Tide start",
            "type": "string",
            "description": "Tide modes. ISO 8601 date or date-time, such as 2026-10-16 or 2026-10-16T06:00:00. Tides cover 1990 onwards, past and future. Hourly tides default to now; high and low tides default to today."
          },
          "endDate": {
            "title": "Tide end",
            "type": "string",
            "description": "High and low tides only. ISO 8601 date or date-time. Leave empty for three days after the start."
          },
          "tideHours": {
            "title": "Tide hours",
            "minimum": 1,
            "maximum": 240,
            "type": "integer",
            "description": "Hourly tide height only. Hours of tide data from the start, up to 240 (10 days). Leave empty for the provider default of 240."
          },
          "unitSystem": {
            "title": "Units",
            "enum": [
              "si",
              "us",
              "us-f"
            ],
            "type": "string",
            "description": "Unit system of the returned values. Leave empty for SI. Every response lists its units in the units column. Tides take SI or US only."
          },
          "timezone": {
            "title": "Time zone",
            "type": "string",
            "description": "Forecast and current weather modes. IANA time zone for returned times, such as Europe/Amsterdam, or local for the zone at each point. Leave empty for UTC."
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows this run returns and charges for. Each forecast lead time, tide hour or high or low tide is one row; an hourly 48 hour forecast is 49 rows per point.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pacing. Rate limits depend on your Spire plan; a rate limit answer is waited out and retried.",
            "default": 30
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own Spire Weather API key, from your Spire welcome email. Stored as a secret and sent only in the spire-api-key header to api.wx.spire.com; it is never logged. You can instead set the DATA_API_KEY environment secret."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}