{"openapi":"3.1.0","info":{"title":"Weather History API","version":"1.0.0","description":"Decades of historical weather for any location on Earth, from 1940 to the present. Pull daily records — temperature highs, lows and means, apparent temperature, precipitation, rain, snowfall, wind speed, gusts and direction — or an hourly series with temperature, humidity, precipitation, wind, pressure and cloud cover, or a period summary with mean temperature, the hottest and coldest day, total precipitation and wet-day counts. Global coverage from the ERA5 reanalysis archive via Open-Meteo, delivered as tidy JSON through a fast, reliable API. Ideal for agriculture and energy, insurance and risk, climate research, construction and travel planning.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/weatherhistory-api","description":"oanor gateway"}],"tags":[{"name":"History"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/daily":{"get":{"operationId":"get_v1_daily","tags":["History"],"summary":"Daily historical weather","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude -90..90","schema":{"type":"string"},"example":"52.52"},{"name":"lon","in":"query","required":true,"description":"Longitude -180..180","schema":{"type":"string"},"example":"13.41"},{"name":"start","in":"query","required":true,"description":"Start date YYYY-MM-DD (≥1940)","schema":{"type":"string"},"example":"2024-01-01"},{"name":"end","in":"query","required":true,"description":"End date YYYY-MM-DD (max 366 days)","schema":{"type":"string"},"example":"2024-01-07"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2024-01-07","days":[{"date":"2024-01-01","rain_mm":1.8,"temp_max_c":7.3,"temp_min_c":3.4,"snowfall_cm":0,"temp_mean_c":5.3,"apparent_max_c":4,"apparent_min_c":-0.4,"precipitation_mm":1.8,"windgusts_max_kmh":36,"windspeed_max_kmh":19.7,"wind_direction_deg":218},{"date":"2024-01-02","rain_mm":6.8,"temp_max_c":6.9,"temp_min_c":2.5,"snowfall_cm":0.3,"temp_mean_c":4.4,"apparent_max_c":4.1,"apparent_min_c":-1.3,"precipitation_mm":7.2,"windgusts_max_kmh":35.6,"windspeed_max_kmh":20.2,"wind_direction_deg":167},{"date":"2024-01-03","rain_mm":12.1,"temp_max_c":10.6,"temp_min_c":7.2,"snowfall_cm":0,"temp_mean_c":8.7,"apparent_max_c":6.2,"apparent_min_c":3.3,"precipitation_mm":12.1,"windgusts_max_kmh":47.9,"windspeed_max_kmh":27.8,"wind_direction_deg":227},{"date":"2024-01-04","rain_mm":2.9,"temp_max_c":7.2,"temp_min_c":-2.2,"snowfall_cm":0,"temp_mean_c":4.1,"apparent_max_c":3.5,"apparent_min_c":-6,"precipitation_mm":2.9,"windgusts_max_kmh":61.9,"windspeed_max_kmh":33.1,"wind_direction_deg":269},{"date":"2024-01-05","rain_mm":1.3,"temp_max_c":0.9,"temp_min_c":-0.7,"snowfall_cm":2.8,"temp_mean_c":0.3,"apparent_max_c":-2.9,"apparent_min_c":-5.2,"precipitation_mm":5.3,"windgusts_max_kmh":36.7,"windspeed_max_kmh":21.3,"wind_direction_deg":96},{"date":"2024-01-06","rain_mm":0.1,"temp_max_c":0.9,"temp_min_c":-1.8,"snowfall_cm":0.9,"temp_mean_c":-0.4,"apparent_max_c":-3.4,"apparent_min_c":-6.9,"precipitation_mm":1.3,"windgusts_max_kmh":32.4,"windspeed_max_kmh":18.4,"wind_direction_deg":70},{"date":"2024-01-07","rain_mm":0,"temp_max_c":-0.4,"temp_min_c":-6.8,"snowfall_cm":0.4,"temp_mean_c":-2.8,"apparent_max_c":-5.2,"apparent_min_c":-13,"precipitation_mm":0.6,"windgusts_max_kmh":38.9,"windspeed_max_kmh":22.6,"wind_direction_deg":39}],"count":7,"start":"2024-01-01","latitude":52.54833,"timezone":"Europe/Berlin","longitude":13.407822,"elevation_m":38},"meta":{"timestamp":"2026-05-30T18:16:54.677Z","request_id":"48be00a2-edb9-4863-9c7a-8d2b460e1ac6"},"status":"ok","message":"Daily history retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/hourly":{"get":{"operationId":"get_v1_hourly","tags":["History"],"summary":"Hourly historical weather","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude -90..90","schema":{"type":"string"},"example":"52.52"},{"name":"lon","in":"query","required":true,"description":"Longitude -180..180","schema":{"type":"string"},"example":"13.41"},{"name":"start","in":"query","required":true,"description":"Start date YYYY-MM-DD","schema":{"type":"string"},"example":"2024-06-01"},{"name":"end","in":"query","required":true,"description":"End date YYYY-MM-DD (max 31 days)","schema":{"type":"string"},"example":"2024-06-02"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2024-06-02","count":48,"start":"2024-06-01","series":[{"time":"2024-06-01T00:00","humidity_pct":79,"pressure_hpa":1009.4,"temperature_c":15.7,"windspeed_kmh":10.9,"cloudcover_pct":97,"precipitation_mm":0,"wind_direction_deg":354},{"time":"2024-06-01T01:00","humidity_pct":82,"pressure_hpa":1009.2,"temperature_c":15.2,"windspeed_kmh":8.6,"cloudcover_pct":100,"precipitation_mm":0,"wind_direction_deg":358},{"time":"2024-06-01T02:00","humidity_pct":89,"pressure_hpa":1008.9,"temperature_c":15,"windspeed_kmh":8.5,"cloudcover_pct":100,"precipitation_mm":0,"wind_direction_deg":12},{"time":"2024-06-01T03:00","humidity_pct":94,"pressure_hpa":1009.2,"temperature_c":15.9,"windspeed_kmh":7.1,"cloudcover_pct":100,"precipitation_mm":0,"wind_direction_deg":30},{"time":"2024-06-01T04:00","humidity_pct":94,"pressure_hpa":1008.9,"temperature_c":15.9,"windspeed_kmh":11.5,"cloudcover_pct":70,"precipitation_mm":0,"wind_direction_deg":20},{"time":"2024-06-01T05:00","humidity_pct":93,"pressure_hpa":1008.9,"temperature_c":15.6,"windspeed_kmh":12.7,"cloudcover_pct":7,"precipitation_mm":0,"wind_direction_deg":35},{"time":"2024-06-01T06:00","humidity_pct":90,"pressure_hpa":1009.3,"temperature_c":16.1,"windspeed_kmh":13.4,"cloudcover_pct":31,"precipitation_mm":0,"wind_direction_deg":36},{"time":"2024-06-01T07:00","humidity_pct":87,"pressure_hpa":1009.6,"temperature_c":17.4,"windspeed_kmh":13.5,"cloudcover_pct":62,"precipitation_mm":0,"wind_direction_deg":29},{"time":"2024-06-01T08:00","humidity_pct":84,"pressure_hpa":1009.9,"temperature_c":19,"windspeed_kmh":13.8,"cloudcover_pct":0,"precipitation_mm":0,"wind_direction_deg":28},{"time":"2024-06-01T09:00","humidity_pct":78,"pressure_hpa":1010.3,"temperature_c":20.6,"windspeed_kmh":14.2,"cloudcover_pct":0,"precipitation_mm":0,"wind_direction_deg":30},{"time":"2024-06-01T10:00","humidity_pct":69,"pressure_hpa":1010.3,"temperature_c":22.1,"windspeed_kmh":16.1,"cloudcover_pct":13,"precipitation_mm":0,"wind_direction_deg":34},{"time":"2024-06-01T11:00","humidity_pct":62,"pressure_hpa":1010.2,"temperature_c":23,"windspeed_kmh":17.2,"cloudcover_pct":16,"precipitation_mm":0,"wind_direction_deg":37},{"time":"2024-06-01T12:00","humidity_pct":62,"pressure_hpa":1010.1,"temperature_c":23.6,"windspeed_kmh":17.3,"cloudcover_pct":30,"precipitation_mm":0.1,"wind_direction_deg":31},{"time":"2024-06-01T13:00","humidity_pct":60,"pressure_hpa":1010.1,"temperature_c":24.1,"windspeed_kmh":17.1,"cloudcover_pct":40,"precipitation_mm":0.1,"wind_direction_deg":25},{"time":"2024-06-01T14:00","humidity_pct":58,"pressure_hpa":1009.7,"temperature_c":24.5,"windspeed_kmh":16.3,"cloudcover_pct":31,"precipitation_mm":0.1,"wind_direction_deg":18},{"time":"2024-06-01T15:00","humidity_pct":57,"pressure_hpa":1009.5,"temperature_c":24.5,"windspeed_kmh":17.5,"cloudcover_pct":11,"precipitation_mm":0,"wind_direction_deg":19},{"time":"2024-06-01T16:00","humidity_pct":54,"pressure_hpa":1009.6,"temperature_c":23.9,"windspeed_kmh":19.9,"cloudcover_pct":38,"precipitation_mm":0,"wind_direction_deg":32},{"time":"2024-06-01T17:00","humidity_pct":58,"pressure_hpa":1009.6,"temperature_c":23.8,"windspeed_kmh":19.2,"cloudcover_pct":23,"precipitation_mm":0,"wind_direction_deg":17},{"time":"2024-06-01T18:00","humidity_pct":57,"pressure_hpa":1010.1,"temperature_c":23.1,"windspeed_kmh":20.4,"cloudcover_pct":61,"precipitation_mm":0.1,"wind_direction_deg":21},{"time":"2024-06-01T19:00","humidity_pct":67,"pressure_hpa":1010.5,"temperature_c":22.1,"windspeed_kmh":15.1,"cloudcover_pct":47,"precipitation_mm":0,"wind_direction_deg":28},{"time":"2024-06-01T20:00","humidity_pct":71,"pressure_hpa":1010.7,"temperature_c":21.2,"windspeed_kmh":14.3,"cloudcover_pct":25,"precipitation_mm":0,"wind_direction_deg":10},{"time":"2024-06-01T21:00","humidity_pct":74,"pressure_hpa":1011.2,"temperature_c":19.8,"windspeed_kmh":13.7,"cloudcover_pct":17,"precipitation_mm":0,"wind_direction_deg":2},{"time":"2024-06-01T22:00","humidity_pct":81,"pressure_hpa":1011.7,"temperature_c":18.6,"windspeed_kmh":14.4,"cloudcover_pct":93,"precipitation_mm":0,"wind_direction_deg":359},{"time":"2024-06-01T23:00","humidity_pct":84,"pressure_hpa":1011.8,"temperature_c":17.8,"windspeed_kmh":14.5,"cloudcover_pct":95,"precipitation_mm":0,"wind_direction_deg":354},{"time":"2024-06-02T00:00","humidity_pct":85,"pressure_hpa":1012,"temperature_c":17.1,"windspeed_kmh":14.9,"cloudcover_pct":90,"precipitation_mm":0,"wind_direction_deg":353},{"time":"2024-06-02T01:00","humidity_pct":87,"pressure_hpa":1012.2,"temperature_c":16.5,"windspeed_kmh":12.3,"cloudcover_pct":69,"precipitation_mm":0,"wind_direction_deg":353},{"time":"2024-06-02T02:00","humidity_pct":88,"pressure_hpa":1012.3,"temperature_c":16,"windspeed_kmh":12.8,"cloudcover_pct":15,"precipitation_mm":0,"wind_direction_deg":350},{"time":"2024-06-02T03:00","humidity_pct":90,"pressure_hpa":1012.1,"temperature_c":15.8,"windspeed_kmh":12.4,"cloudcover_pct":91,"precipitation_mm":0,"wind_direction_deg":338},{"time":"2024-06-02T04:00","humidity_pct":90,"pressure_hpa":1012.3,"temperature_c":15.7,"windspeed_kmh":13.4,"cloudcover_pct":42,"precipitation_mm":0,"wind_direction_deg":333},{"time":"2024-06-02T05:00","humidity_pct":93,"pressure_hpa":1012.7,"temperature_c":15.6,"windspeed_kmh":14.3,"cloudcover_pct":98,"precipitation_mm":0,"wind_direction_deg":326},{"time":"2024-06-02T06:00","humidity_pct":91,"pressure_hpa":1012.9,"temperature_c":16.2,"windspeed_kmh":13.8,"cloudcover_pct":75,"precipitation_mm":0,"wind_direction_deg":332},{"time":"2024-06-02T07:00","humidity_pct":88,"pressure_hpa":1012.9,"temperature_c":17.2,"windspeed_kmh":14.1,"cloudcover_pct":20,"precipitation_mm":0,"wind_direction_deg":322},{"time":"2024-06-02T08:00","humidity_pct":83,"pressure_hpa":1013.2,"temperature_c":18.5,"windspeed_kmh":15.9,"cloudcover_pct":41,"precipitation_mm":0,"wind_direction_deg":322},{"time":"2024-06-02T09:00","humidity_pct":77,"pressure_hpa":1013.8,"temperature_c":19.9,"windspeed_kmh":14.6,"cloudcover_pct":51,"precipitation_mm":0,"wind_direction_deg":327},{"time":"2024-06-02T10:00","humidity_pct":73,"pressure_hpa":1014.1,"temperature_c":21.1,"windspeed_kmh":15.9,"cloudcover_pct":42,"precipitation_mm":0.1,"wind_direction_deg":342},{"time":"2024-06-02T11:00","humidity_pct":71,"pressure_hpa":1014.2,"temperature_c":22,"windspeed_kmh":15.8,"cloudcover_pct":59,"precipitation_mm":0.2,"wind_direction_deg":339},{"time":"2024-06-02T12:00","humidity_pct":72,"pressure_hpa":1014.1,"temperature_c":22,"windspeed_kmh":16.5,"cloudcover_pct":84,"precipitation_mm":1.4,"wind_direction_deg":324},{"time":"2024-06-02T13:00","humidity_pct":76,"pressure_hpa":1014.5,"temperature_c":19.6,"windspeed_kmh":23.5,"cloudcover_pct":100,"precipitation_mm":4.8,"wind_direction_deg":335},{"time":"2024-06-02T14:00","humidity_pct":83,"pressure_hpa":1014.4,"temperature_c":19.5,"windspeed_kmh":12.5,"cloudcover_pct":100,"precipitation_mm":1.2,"wind_direction_deg":309},{"time":"2024-06-02T15:00","humidity_pct":76,"pressure_hpa":1014.7,"temperature_c":20.6,"windspeed_kmh":14.5,"cloudcover_pct":100,"precipitation_mm":0.3,"wind_direction_deg":318},{"time":"2024-06-02T16:00","humidity_pct":68,"pressure_hpa":1014.4,"temperature_c":22,"windspeed_kmh":17.7,"cloudcover_pct":100,"precipitation_mm":0,"wind_direction_deg":322},{"time":"2024-06-02T17:00","humidity_pct":69,"pressure_hpa":1014.3,"temperature_c":22,"windspeed_kmh":19.4,"cloudcover_pct":100,"precipitation_mm":0.1,"wind_direction_deg":310},{"time":"2024-06-02T18:00","humidity_pct":66,"pressure_hpa":1014.5,"temperature_c":21.5,"windspeed_kmh":19.5,"cloudcover_pct":98,"precipitation_mm":0.3,"wind_direction_deg":309},{"time":"2024-06-02T19:00","humidity_pct":73,"pressure_hpa":1015,"temperature_c":20.6,"windspeed_kmh":18.6,"cloudcover_pct":99,"precipitation_mm":0.8,"wind_direction_deg":311},{"time":"2024-06-02T20:00","humidity_pct":76,"pressure_hpa":1015.1,"temperature_c":19.6,"windspeed_kmh":18.2,"cloudcover_pct":95,"precipitation_mm":0,"wind_direction_deg":309},{"time":"2024-06-02T21:00","humidity_pct":78,"pressure_hpa":1015.5,"temperature_c":18.5,"windspeed_kmh":16.3,"cloudcover_pct":77,"precipitation_mm":0,"wind_direction_deg":301},{"time":"2024-06-02T22:00","humidity_pct":79,"pressure_hpa":1016.1,"temperature_c":17.4,"windspeed_kmh":16.5,"cloudcover_pct":86,"precipitation_mm":0,"wind_direction_deg":290},{"time":"2024-06-02T23:00","humidity_pct":80,"pressure_hpa":1016.3,"temperature_c":16.5,"windspeed_kmh":17.4,"cloudcover_pct":82,"precipitation_mm":0,"wind_direction_deg":292}],"latitude":52.54833,"timezone":"Europe/Berlin","longitude":13.407822},"meta":{"timestamp":"2026-05-30T18:16:56.103Z","request_id":"1586f369-7338-428c-a4c7-e608d29ba2b7"},"status":"ok","message":"Hourly history retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/summary":{"get":{"operationId":"get_v1_summary","tags":["History"],"summary":"Period summary statistics","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude -90..90","schema":{"type":"string"},"example":"52.52"},{"name":"lon","in":"query","required":true,"description":"Longitude -180..180","schema":{"type":"string"},"example":"13.41"},{"name":"start","in":"query","required":true,"description":"Start date YYYY-MM-DD","schema":{"type":"string"},"example":"2023-01-01"},{"name":"end","in":"query","required":true,"description":"End date YYYY-MM-DD","schema":{"type":"string"},"example":"2023-03-31"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2023-03-31","days":90,"start":"2023-01-01","latitude":52.54833,"timezone":"Europe/Berlin","longitude":13.407822,"temperature_c":{"mean":4.2,"lowest":{"date":"2023-02-07","value":-7.8},"highest":{"date":"2023-03-18","value":17.2}},"precipitation_mm":{"total":201,"wet_days":45,"daily_avg":2.2}},"meta":{"timestamp":"2026-05-30T18:16:58.602Z","request_id":"bb038359-f29c-4330-903d-8b9149e3eda4"},"status":"ok","message":"Summary retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1000,"rps_limit":1,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":300,"monthly_call_quota":30000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":800,"monthly_call_quota":250000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":1900,"monthly_call_quota":1500000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/weatherhistory-api"}