Open-Meteo Historical Archive API
Free historical weather API with no key: hourly and daily weather for any location worldwide going back to 1940, from ERA5 reanalysis data. Tested example.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the Open-Meteo Historical Archive API?
The Open-Meteo Historical Weather API is a free, key-free API providing hourly and daily weather records for any location worldwide going back to 1940, based on ERA5 and other reanalysis datasets.
Historical weather is normally expensive — commercial providers charge substantially for archive access. This endpoint gives eight decades of hourly global data for free, drawn from ECMWF's ERA5 reanalysis.
Reanalysis is worth understanding: rather than raw station readings, it is a physical model reconstruction assimilating observations, which means consistent global coverage including oceans and places that never had a weather station. The tradeoff is that it is a modelled estimate, not a direct measurement.
Quick facts
- Base URL
https://archive-api.open-meteo.com/v1/archive- Authentication
- No API key required.
- Rate limit
- Shares the Open-Meteo fair-use policy — roughly 10,000 requests per day.
- Pricing
- Free including commercial use below the daily limit.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Open-Meteo Historical Archive API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch historical daily weather
GET https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2026-01-01&end_date=2026-01-02&daily=temperature_2m_max
curl 'https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2026-01-01&end_date=2026-01-02&daily=temperature_2m_max'const res = await fetch("https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2026-01-01&end_date=2026-01-02&daily=temperature_2m_max");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://archive-api.open-meteo.com/v1/archive?latitude=52.52&longitude=13.41&start_date=2026-01-01&end_date=2026-01-02&daily=temperature_2m_max", timeout=20)
res.raise_for_status()
print(res.json()){
"latitude": 52.54833,
"longitude": 13.407822,
"generationtime_ms": 1.4096498489379883,
"utc_offset_seconds": 0,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"elevation": 38.0,
"daily_units": {
"time": "iso8601",
"temperature_2m_max": "°C"
},
"daily": {
"time": [
"2026-01-01",
"2026-01-02"
],
"temperature_2m_max": [
3.0,
2.5
]
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude / longitude | float | Required | Coordinates. 52.52 |
start_date / end_date | string | Required | Date range as YYYY-MM-DD, from 1940 onwards. 2026-01-01 |
daily | string | Optional | Daily aggregates such as temperature_2m_max. temperature_2m_max |
hourly | string | Optional | Hourly variables — large responses over long ranges. temperature_2m |
timezone | string | Optional | IANA timezone or auto. auto |
Response fields
latitude / longitudenumber- The model grid point used, snapped from your request.
daily.timearray- Dates for each daily value.
daily.temperature_2m_maxarray- Daily maximum temperatures.
hourly.time / hourly.<variable>array- Parallel arrays of timestamps and values.
daily_units / hourly_unitsobject- Units for each variable.
elevationnumber- Elevation of the grid cell.
What you can build with the Open-Meteo Historical Archive API
- Analyse long-term climate trends for a location
- Correlate historical weather with business or agricultural data
- Backfill weather context into analytics
- Research extreme weather events without paying for archive access
Common errors and how to fix them
Enormous response
Hourly data over years produces huge arrays.
Fix: Use daily aggregates unless you genuinely need hourly, and split long ranges.
Recent dates missing
Reanalysis data lags real time by around five days.
Fix: Use the forecast API for recent and current conditions.
Values differ from a local station
Reanalysis is modelled, not measured.
Fix: It is a physically consistent estimate for a grid cell, not a station reading — expect small differences.
Open-Meteo Historical Archive API — frequently asked questions
Is there a free historical weather API?
Yes. The Open-Meteo Historical Weather API provides hourly global data back to 1940 with no API key, which commercial providers normally charge substantially for.
What is reanalysis data?
A physical model reconstruction that assimilates historical observations, producing consistent global coverage including oceans and regions with no weather stations. It is a modelled estimate rather than a direct measurement.
Why is there no data for last week?
Reanalysis processing lags real time by around five days. Use the standard Open-Meteo forecast API for recent and current conditions.
How far back does it go?
To 1940, giving over eight decades of hourly data — enough for genuine climate trend analysis.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Alternatives to Open-Meteo Historical Archive API
If Open-Meteo Historical Archive does not fit, these weather apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Open-Meteo | Free weather forecast API with no API key and no signup. Hourly and daily forecasts worldwide, free for commercial use. Working curl example and live response. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Air Quality | Free air quality API with no key: PM2.5, PM10, ozone, nitrogen dioxide, European and US AQI plus pollen forecasts worldwide. Tested curl example included. | No key | Yes | 19 Aug 2026 |
| wttr.in | wttr.in is a free console-oriented weather API with no key. Get weather as plain text, ASCII art, PNG or full JSON with one curl command. Live example included. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Geocoding | Free geocoding API with no key: convert a city or place name into latitude and longitude, with population, country and timezone. Tested curl example and live JSON. | No key | Yes | 19 Aug 2026 |
| Hong Kong Observatory | Free Hong Kong weather API with no key: current readings by district, rainfall, warnings and forecasts from the territory's official meteorological service. Tested example included. | No key | Yes | 21 Aug 2026 |
| IPMA (Portugal) | Free Portuguese weather API with no key: five-day city forecasts from the national meteorological institute, plus seismic and warning datasets. Tested example included. | No key | Yes | 21 Aug 2026 |
Open-Meteo Historical Archive is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.