archive: Get historical weather data

API: open-meteo.com:open-meteo
Endpoint: /v1/archive
Response format: application/json
Auth: unknown
Method: GET
Last Status: 200
Latency: 145ms

Description

Access historical weather data going back several decades, sourced from ERA5 and other reanalysis datasets. Use this for climate research, historical analysis, or training ML models on past weather patterns.

From spec: Returns historical weather data from 1940 onwards for a specific location.

Usage Tips

- Date range limited by dataset availability (ERA5 typically from 1950 onwards) - Maximum date range per request is typically 1-2 years - Available variables: temperature, humidity, precipitation, wind, pressure, etc. - Timezone parameter automatically converts UTC data to local time

Parameters (10)

daily (array, query, optional)

A list of daily weather variable aggregations to return.

end_date (string, query, required)

End date (yyyy-mm-dd).

hourly (array, query, optional)

A list of hourly weather variables to return.

latitude (number, query, required)

Geographical WGS84 latitude of the location.

longitude (number, query, required)

Geographical WGS84 longitude of the location.

precipitation_unit (string, query, optional, default: mm)

Constraints: {'enum': ['mm', 'inch']}

start_date (string, query, required)

Start date (yyyy-mm-dd).

temperature_unit (string, query, optional, default: celsius)

Constraints: {'enum': ['celsius', 'fahrenheit']}

timezone (string, query, optional)

Timezone for local timestamps.

wind_speed_unit (string, query, optional, default: kmh)

Constraints: {'enum': ['kmh', 'ms', 'mph', 'kn']}

Examples (1)

Get historical weather for Berlin in January 2023 probe-gate

Demonstrates fetching historical daily temperature data for a specific week

curl 'https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2023-01-01&end_date=2023-01-07&daily=temperature_2m_max%2Ctemperature_2m_min&timezone=auto'
import requests

resp = requests.get(
    "https://archive-api.open-meteo.com/v1/archive",
    params={
        'latitude': '52.52',
        'longitude': '13.41',
        'start_date': '2023-01-01',
        'end_date': '2023-01-07',
        'daily': 'temperature_2m_max,temperature_2m_min',
        'timezone': 'auto',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("open-meteo")
result = api.fetch("v1/archive", latitude=52.52, longitude=13.41, start_date="2023-01-01", end_date="2023-01-07", daily="temperature_2m_max,temperature_2m_min", timezone="auto")

for item in result:
    print(item)
const resp = await fetch("https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2023-01-01&end_date=2023-01-07&daily=temperature_2m_max%2Ctemperature_2m_min&timezone=auto");
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 00:40:27.937974 200 145ms
2026-04-15 00:36:37.262309 200 154ms
2026-04-14 02:56:10.672585 200 141ms
2026-04-12 13:57:28.247534 200 512ms
2026-04-10 02:47:50.741463 200 90ms
2026-04-09 00:36:39.350001 200 142ms