← hillandglen.com

Weather Model Accuracy API

The 30-day rolling accuracy of 11 global weather models — scored every day against observed weather at 100 UK & Ireland locations. Free, open, no API key.

What this is

Most weather services use a single model, or an undisclosed blend, and never tell you how accurate it actually is. We do the opposite: every day at 12:00 UTC we score 11 independent global weather models — plus our accuracy-weighted ensemble and AI predictor — against the weather that actually happened at 100 locations across the UK and Ireland.

This API publishes that verification data openly so researchers, journalists, and other forecasters can use and cite it. There is no sign-up and no key. Please just credit hillandglen.com and link back (see the licence below).

Base URL

https://weather-worker.hillandglen.workers.dev/v1

All responses are JSON, served with open CORS (Access-Control-Allow-Origin: *) and edge-cached for one hour. The underlying scores update once per day, so please don't poll faster than hourly.

Endpoints

GET/v1

API index — lists every endpoint, the licence, and usage guidance.

GET/v1/accuracy

The headline leaderboard: one ranked row per model over the 30-day rolling window.

GET/v1/accuracy/history

Historical daily scores. Use ?date=YYYY-MM-DD for one day, ?from=YYYY-MM-DD&to=YYYY-MM-DD for a range (capped at 90 days), and ?detail=full to include the raw forecasts and observations for ML training. With no parameters it returns the index of available dates.

GET/v1/models

Catalogue of the scored models — id, provider, country, grid resolution, and type (nwp, ml, or ensemble).

GET/v1/locations

The 100 UK & Ireland points each forecast is scored against, with coordinates.

Example

curl https://weather-worker.hillandglen.workers.dev/v1/accuracy
{
  "window": "30-day rolling",
  "metric": "composite = 100 - weighted MAE (temperature, wind, rain occurrence + amount, cloud). Higher is better.",
  "higherIsBetter": true,
  "updatedAt": "2026-05-30T12:00:00.000Z",
  "leaderboard": [
    {
      "id": "ecmwf_ifs025",
      "name": "ECMWF",
      "type": "nwp",
      "composite": 94.1,
      "dataPoints": 30,
      "tempMAE_C": 1.12,
      "windMAE_kmh": 4.83,
      "rainHitRate": 0.871,
      "rainMAE_mm": 0.94,
      "cloudMAE_pct": 18.4,
      "rank": 1
    }
    /* ... one row per model ... */
  ],
  "license": "CC BY 4.0",
  "attribution": "Data: hillandglen.com"
}

Figures above are illustrative of the shape — call the endpoint for current values.

Field reference

FieldMeaning
compositeOverall skill score, 0–100. Higher is better. Weighted blend of the error metrics below.
tempMAE_CMean absolute temperature error, °C.
windMAE_kmhMean absolute wind-speed error, km/h.
rainHitRateFraction of rain/no-rain calls that were correct (0–1).
rainMAE_mmMean absolute rainfall-amount error, mm.
cloudMAE_pctMean absolute cloud-cover error, percentage points.
dataPointsNumber of scored days in the rolling window (max 30).

Licence — CC BY 4.0

This data is published under the Creative Commons Attribution 4.0 licence. You are free to use it anywhere — commercially or not — provided you credit the source: