Back to Utils

Weather forecast

Temperature Forecast

Predict temperature for a date far in the future, based on a weighted blend of three historical windows — instead of the usual 10-14 day forecast horizon.

Goal

Regular weather forecasts become unreliable past a week or two. For longer-term planning (an event three months out, say) there's little better than guessing — even though historical climate data actually holds useful signal.

Temperature Forecast combines three non-overlapping periods — everything older than 40 years, 10 to 40 years back, and the last 10 years — into one weighted forecast per region and calendar day (default 20/35/45%, adjustable). The three individual components are also shown, so you can spot a warming trend yourself.

New: for day 15 to 30 out — exactly the gap between the usual 14-day forecast and pure climatology — we now factor in the current weather forecast as a trend. Running warmer or colder than normal right now? That deviation gets factored in, but with fading weight: 30% at day 15, tapering to 3% by day 30. That keeps day 30 honestly close to pure climatology, while day 15-20 gets a grounded nudge on top of the long-term average.

Also new: alongside temperature, now also precipitation (mm) and wind (km/h, daily max), following the same setup. Two deliberate differences: the day 15-30 trend nudge is temperature-only — precipitation is too day-to-day chaotic for a persisting trend to carry reliable signal — and the dataset is being filled in region by region, so precipitation/wind may not appear yet for every region right away.

Try it yourself

Enter an address or place name — anywhere in the world.

Temperature forecast for any date, anywhere in the world

Looking for a reliable long-range weather forecast for a holiday, event or wedding a few months out? Temperature Forecast blends historical climate normals into a grounded temperature prediction — not a guess, but a transparent calculation from decades of weather data. Available as a free, open source weather API for anyone who wants to use it in their own app, dashboard or Home Assistant setup.

Using the API

This page runs on a free, open API — no key, no signup. One GET request, JSON back.

Parameters

  • addressaddress (or use lat and lon for coordinates)
  • datetarget date (YYYY-MM-DD)
  • w_long / w_30 / w_10optional: your own weighting (must sum to 1)

Example

https://climatenormals.vercel.app/api/normal?address=Jena&date=2027-03-15&w_long=0.2&w_30=0.35&w_10=0.45

Example response

{
  "region": "DE-TH",
  "region_meta": { "country": "GM", "admin1": "Thüringen", ... },
  "distance_to_reference_station_km": 0.2,
  "date": "2027-03-15",
  "weights_used": { "p_long": 0.2, "p30": 0.35, "p10": 0.45 },
  "temp": { "p_long": 8.1, "p30": 8.9, "p10": 9.6, "blend": 8.9 }
}

Want to see coverage per country? /api/status

Frequently asked questions

How reliable is this forecast?

Depends how far out. Day 0-14: the real, live weather forecast (Open-Meteo) — as reliable as any good weather app. Day 15-30: the long-term climate average, lightly adjusted with the current trend (30% weight at day 15, fading to 3% by day 30) — a grounded estimate, not a hard forecast. Beyond day 30: pure climate average, no trend component.

What exactly is that 'trend-adjusted estimate' for day 15-30?

The technique is called anomaly/trend persistence — also used in real subseasonal forecasting (e.g. NOAA's 3-4 week outlook). We measure how much warmer or colder the current forecast is than normal, and let that deviation gradually carry into the climatological estimate: 30% weight at day 15, decaying exponentially to 3% by day 30. Explicitly not a hard forecast — but more grounded than a plain guess, and the exact weighting is shown right alongside every result.

Is the API really free, and do I need a key?

Yes, completely free — no API key, no account. MIT license, source open on GitHub.

Which regions and countries are supported?

336 regions across 30 countries, each linked to a historical weather station. Current coverage per country can be checked live via /api/status.

Where does the data come from?

From historical weather stations, fetched via Open-Meteo's archive API, combined into three non-overlapping periods (40+ years, 10-40 years, last 10 years) per region and calendar day.

Can I use this in Home Assistant or my own app?

Yes — it's a simple GET request that returns JSON, no authentication required. Works well in Home Assistant, a dashboard, or any custom application.

Is there a rate limit?

Yes, a reasonable floor: max 60 requests per minute per IP address, as a backstop against abuse. Normal use — including a script that polls occasionally — won't come close. Have a legitimate use case that needs more? Get in touch via the contact form and we'll work something out.

Can I look up historical temperatures too?

Yes — just pick a date in the past. You'll get the historical climate average for that calendar day (not a single reading from that one year, but the long-term average), for any of the 336 supported regions.

Does it include precipitation and wind too?

Yes, in mm (precipitation) and km/h daily max (wind), following the same three-window setup as temperature. Two differences: the day 15-30 trend nudge is temperature-only, and the dataset is being filled in region by region -- check /api/status for current coverage, or just query your region: if precipitation/wind aren't there yet, those fields simply won't appear in the response.