Historical weather API
any place, any day since 1940What was the weather on that day, at that place? Get daily highs and lows, rain and wind, plus the hour-by-hour detail, from the reference record of past weather.
Pro plan · $49 a month, 200,000 calls a dayRequest
curl -H "X-API-Key: YOUR_KEY" \ "https://atmoatlas.com/api/v1/history?lat=48.85&lon=2.35&date=2025-07-01&days=2"
const res = await fetch("https://atmoatlas.com/api/v1/history?lat=48.85&lon=2.35&date=2025-07-01&days=2", { headers: { "X-API-Key": "YOUR_KEY" } }); const data = await res.json();
import requests r = requests.get("https://atmoatlas.com/api/v1/history", params={"lat": "48.85", "lon": "2.35", "date": "2025-07-01", "days": "2"}, headers={"X-API-Key": "YOUR_KEY"}) data = r.json()
Your key goes in the X-API-Key header.
Response
{
"lat": 48.85, "lon": 2.35, "grid_point": { "lat": 48.75, "lon": 2.25 },
"start": "2025-07-01", "end": "2025-07-02", "days": 2,
"daily": [
{ "date": "2025-07-01", "temp_max_c": 38.2, "temp_min_c": 19.5, "precip_mm": 0.1, "wind_max_kmh": 12.2 },
{ "date": "2025-07-02", "temp_max_c": 32.9, "temp_min_c": 18.2, "precip_mm": 2.3, "wind_max_kmh": 31.1 }
],
"hourly": [ { "time": "2025-07-01T00:00:00", "temp_c": 22.5, "precip_mm": 0, "wind_kmh": 5.3 }, ... ],
"source": "ERA5 reanalysis — ECMWF / Copernicus Climate Change Service (C3S). ..."
}Real response for Paris, 1–2 July 2025 (heatwave), shortened.
Coverage and source
- Coverage
- Worldwide, land and sea
- Period
- 1 January 1940 up to 7 days ago
- Detail
- Daily summary and hourly values, up to 10 days per call
- Source
- ERA5 reanalysis, ECMWF / Copernicus Climate Change Service
What the response contains
| Field | Meaning |
|---|---|
daily[].temp_max_c / temp_min_c | Highest and lowest temperature of the day, °C. |
daily[].precip_mm | Rain and snow (water equivalent) over the day, mm. |
daily[].wind_max_kmh | Strongest hourly wind of the day, km/h. |
hourly[] | Temperature, rain and wind for each hour. |
grid_point | The ERA5 grid point used for your coordinates. |
Parameters
| Parameter | Type | Description |
|---|---|---|
lat / lon | float | Latitude and longitude. Required. |
date | YYYY-MM-DD | First day to return, from 1940-01-01 up to 7 days ago. Required; a date before 1940 returns 400. |
days | int | Days, 1 to 10 (7 if omitted); more returns 400: split a longer period into several calls. A period running into the last 7 days is shortened. |
What people build with it
Insurance and claims
Check the rain or wind on the day of a claim.
Retail and energy analysis
Explain sales or energy use with the weather of each day.
Agriculture
Compare this season with the same weeks in past years.
Data science and media
Build weather features for models, or answer “was it hotter in 1976?”.
Frequently asked questions
How far back does it go?
To 1 January 1940. The last 7 days are not available yet: the archive is published with a short delay.
How long a period per call?
Up to 10 days. Split a longer period into several calls.
Which plan do I need?
Past weather is part of the Pro plan.
Try it with your own key
Create an account in a minute: the key arrives straight away, and the same key opens every other dataset.