Weatheo

How Weatheo’s weather data reports are made

Every figure in a Weatheo report can be traced to a source, a definition and a period. This page sets them out, along with the checks a number has to pass before we print it — and the data we tested and chose not to publish.

Last reviewed 11 September 2026.

Sources

Observed temperatures come from OpenWeather’s History API: hourly records for each city’s coordinates, covering the most recent twelve months. We aggregate them into local calendar days — mean, highest and lowest hourly value — and count a day only when it has at least 20 of its 24 hours.

Long-run normals come from OpenWeather’s Statistical Weather Data API, which gives the mean temperature for every calendar date over the years its archive holds for a place — about fourteen years for the cities we cover.

Every report is cross-checked against an independent record: the ERA5 reanalysis produced by the European Centre for Medium-Range Weather Forecasts for the Copernicus Climate Change Service, retrieved through Open-Meteo’s historical weather API. For ERA5 we compute our own normal: the 2011–2025 mean for each calendar date.

Definitions

Anomaly: a period’s mean temperature minus the normal for the same calendar days. Each source is compared with its own normal, so a difference in how two datasets measure a city does not masquerade as warming or cooling.

Hot day: a day whose highest temperature reached 30 °C. Very hot day: 35 °C. Tropical night: a day whose lowest temperature stayed at or above 20 °C. Frost day: a lowest temperature below 0 °C. Ice day: a highest temperature below 0 °C.

Seasons are meteorological: summer is June to August, winter December to February, in the northern hemisphere.

The checks a figure has to pass

We rank a city by its anomaly only when OpenWeather and ERA5 agree on it to within 1.5 °C. Where they do not, the city is named and left out of the ranking rather than quietly dropped.

The two anomalies are not expected to match exactly, because each is measured against a different normal: OpenWeather’s archive period and our 2011–2025 ERA5 average. In practice ERA5’s anomalies run a few tenths of a degree to a degree larger, so the OpenWeather figures we headline are the more conservative of the two. The tolerance is there to catch a broken series — during testing, one city’s OpenWeather normal was 3.5 °C too warm — not to force two datasets into agreement.

For counts of hot days and for peak temperatures, which depend more on exactly where a dataset is sampled, reports show both sources side by side.

ERA5 is a grid of roughly 30 km, so it can smooth out a city’s hottest afternoons; OpenWeather is sampled closer to the city. Over summer 2026 the two agreed on seasonal mean temperature to within 1 °C for 84 of 87 cities, but single-day peaks differed by up to 4–5 °C in either direction — which is why headline peaks use the value both sources support, with both shown. Neither replaces a national weather service’s official station record, and our reports never describe a value as an official record.

What we tested and do not publish

Rainfall. OpenWeather’s hourly rain totals disagreed with ERA5 by factors of two to eight for many cities over summer 2026 — one city summed 1,600 mm where ERA5 put 192 mm. Until the two can be reconciled we do not report rainfall.

Sunshine hours and all-time records from the statistical archive failed basic sanity checks (a February record of 56 °C in Seville; 239 hours of sunshine a year in Dublin, a sixth of its true figure). They are not used.

Reuse, corrections and contact

Each report links a CSV of every figure it quotes, with both sources’ values. You are free to reuse the figures and charts with credit to Weatheo and a link to the report.

When we find an error we correct the article in place and update its “Updated” date. To report one, or to ask for a figure for a city we have not covered, use the contact page.

Contact the data desk