How much warmer has it become?
De Bilt has daily temperatures from 1 January 1901, so one request to KNMI answers this question. Averaged over 1996–2025 it was 10.8 °C there, against 8.9 °C in 1901–1930: 1.8 degrees warmer. The warmest years were 2024 (11.80 °C) and 2023 (11.79 °C). This is the raw series of a single station, not corrected for changes in how and where it measures. For a place without a weather station you need ERA5, which requires an account.
Short answerIn De Bilt, 1.84 degrees: from an average of 8.93 °C in 1901–1930 to 10.77 °C in 1996–2025. Most of it came after 1990; 1961–1990 still averaged 9.40 °C.
De Bilt is 1.8 degrees warmer than a century ago: an average of 10.8 °C in 1996–2025, against 8.9 °C in 1901–1930
Annual mean temperature in De Bilt, 1901 – 2025, in °C. The highest point was 2024 (11.8).
Step by step
- 1
Fetch daily temperatures for De Bilt since 1901.
- 2
Average per year and compare thirty-year periods.
- 3
For places without a station: use ERA5.
Join on stationsnummer + datum
Start with AI
Paste this prompt into Claude or ChatGPT. It names the real endpoints, the join key and the pitfalls, so the assistant writes usable code straight away. Always check the result against the source itself.
Make a web page with 'warming stripes' for a KNMI weather station: one vertical stripe per year, coloured by the difference from the 1901–1930 average (blue colder, red warmer), with the annual mean as a line below.
Data: KNMI daily data, no key. One POST request; CORS is open, so it works from the browser:
curl -d "stns=260&vars=TG&start=19010101&end=20251231&fmt=json" https://www.daggegevens.knmi.nl/klimatologie/daggegevens
What you need to know:
- The response is a list of {station_code, date, TG}, about 45,000 days for De Bilt.
- TG is the daily mean temperature in tenths of a degree: TG 115 is 11.5 °C. Also available: TX (maximum), TN (minimum), RH (rainfall in 0.1 mm; -1 means less than 0.05 mm).
- Station 260 is De Bilt, from 1901. Other stations start later: pick your own reference period and show it in the chart.
- Only use years with at least 365 days with a value. Leave out the current year.
- This is the raw series of one station, not corrected for changes in how it measures. Say so under the chart.
Output: the stripes, a tooltip with year and temperature, and a sentence computed from the data, like 'Averaged over 1996–2025 it was 1.8 degrees warmer than in 1901–1930'. Plus a dropdown for other stations (the same call with a different stns number).
Try it yourself
A small script that answers the core of the question. Needs: Python 3.10+ en requests. Tested on 2026-10-15; below is the real output of that run.
# Hoeveel warmer is het geworden? Jaargemiddelde temperatuur in De Bilt (station 260) sinds 1901.
# Bron: KNMI daggegevens. Geen sleutel nodig. Waarden in tienden van een graad.
import requests
r = requests.post("https://www.daggegevens.knmi.nl/klimatologie/daggegevens",
data={"stns": "260", "vars": "TG", "start": "19010101", "end": "20251231", "fmt": "json"},
headers={"User-Agent": "opendataindex-voorbeeld/0.2 (+https://opendataindex.nl)"}, timeout=120)
dagen = r.json() # [{"station_code": 260, "date": "1901-01-01T00:00:00.000Z", "TG": -49}, ...]
per_jaar = {}
for d in dagen:
if d["TG"] is not None:
per_jaar.setdefault(int(d["date"][:4]), []).append(d["TG"] / 10) # tienden -> °C
# Alleen volledige jaren (minstens 365 dagen met een meting).
jaar = {j: sum(v) / len(v) for j, v in per_jaar.items() if len(v) >= 365}
def gemiddeld(van, tot):
w = [jaar[j] for j in range(van, tot + 1) if j in jaar]
return sum(w) / len(w), len(w)
print(f"{len(dagen):,} dagen opgehaald, {len(jaar)} volledige jaren ({min(jaar)}-{max(jaar)})\n")
for van, tot in [(1901, 1930), (1931, 1960), (1961, 1990), (1991, 2020), (1996, 2025)]:
g, n = gemiddeld(van, tot)
print(f"{van}-{tot}: {g:5.2f} °C ({n} jaren)")
oud, _ = gemiddeld(1901, 1930); nieuw, _ = gemiddeld(1996, 2025)
print(f"\nVerschil 1996-2025 t.o.v. 1901-1930: {nieuw - oud:+.2f} °C")
print("Warmste vijf jaren:", ", ".join(f"{j} ({t:.2f})" for j, t in sorted(jaar.items(), key=lambda x: -x[1])[:5]))
print("Koudste vijf jaren:", ", ".join(f"{j} ({t:.2f})" for j, t in sorted(jaar.items(), key=lambda x: x[1])[:5]))
45,656 dagen opgehaald, 125 volledige jaren (1901-2025) 1901-1930: 8.93 °C (30 jaren) 1931-1960: 9.28 °C (30 jaren) 1961-1990: 9.40 °C (30 jaren) 1991-2020: 10.57 °C (30 jaren) 1996-2025: 10.77 °C (30 jaren) Verschil 1996-2025 t.o.v. 1901-1930: +1.84 °C Warmste vijf jaren: 2024 (11.80), 2023 (11.79), 2014 (11.71), 2020 (11.69), 2022 (11.57) Koudste vijf jaren: 1963 (7.87), 1940 (8.00), 1919 (8.05), 1962 (8.13), 1956 (8.15)
The sources2

KNMI daily weather dataIn depth
Daily values from over fifty weather stations: temperature, rainfall, sunshine and wind. The De Bilt series starts in 1901.

ERA5 climate reanalysis
A reconstructed hourly weather record for the whole earth since 1940. Coarse (30 km) but without gaps: useful where no station stood.
More examples with this data
Solar radiation on a flat surface in De Bilt (KNMI measurements): an average of 1,038 kWh per m² a year in 1996–2025, 8% more than in 1958–1987
Global mean temperature at 2 metres (ERA5): highest on average in July, lowest in January
Summer days (25 °C or warmer) in De Bilt (KNMI measurements): an average of 29 days a year in 1996–2025, 87% more than in 1901–1930
Also in the indexes
Datasets from data.overheid.nl, the National Georegister, CBS, Eurostat and city portals that fit this question.
- CHASE-PL Climate Projections: 5-km Gridded Daily Precipitation & Temperature Dataset (CPLCP-GDPT5)Norwegian Meteorological Institute
- Data underlying the publication: "A novel reduced-order model for climate impact assessment of aircraft engines: Climate Functions for Engine Design (CFED 1.0)"4TU.ResearchData
- Data and code underlying the publication "Alternative climate metrics to the Global Warming Potential are more suitable for assessing aviation non-CO2 effects"4TU.ResearchData
- Climate data used to study the potential impacts of climate change on future hydrological regimes and water resources (2010-2050) in the PhilippinesPAGASA
- Data underlying the publication: A Cryo-CMOS Smart Temperature Sensor for the Ultrawide Temperature Range from 5 K to 296 K4TU.ResearchData
- KNMI'23 - Representative climate years for the urban environment corresponding to the KNMI'23 climate scenariosKoninklijk Nederlands Meteorologisch Instituut (KNMI)
- Plan quality characteristics of Local Climate Adaptation Plans in EuropeDANS Data Station Social Sciences and Humanities
- Data accompanying the manuscript "Predicting the climate impact of aviation for en-route emissions: The algorithmic climate change function submodel ACCF 1.0 of EMAC 2.53"4TU.ResearchData
- CHASE-PL Forcing Data: Gridded Daily Precipitation & Temperature Dataset 5 km (CPLFD-GDPT5)Warsaw University of Life Sciences WULS-SGGW
- Youth CLIMATE: Youth and Climate emotions, Lifestyle, Identity, Mental health, and Actions for a Thriving EnvironmentDANS Data Station Social Sciences and Humanities
Other worked-out questions
- Is there more nuisance in my neighbourhood than last year?3 sources
- How much grant money does a foundation in Amsterdam receive?3 sources
- How clean is the air on my street?3 sources
- What does my area look like from space?3 sources
- Did house prices rise faster here than elsewhere in Europe?2 sources
- How many cars in my municipality are electric?2 sources