Unified weather API across NOAA, ECMWF and more. POC running on Contabo VPS.
Single REST API that returns forecast values from multiple models (GFS, ECMWF IFS, …) at a point, over a bounding box, or as a vertical profile. Variables are exposed in CF-standard names so the same call works across models.
| Model | Coverage | Resolution | Horizon |
|---|---|---|---|
| GFS | global | 0.25° | 384h |
| ECMWF IFS | global | 0.25° | 240h |
// Output appears here
GET /healthz
GET /models list models + variables
GET /models/{model}/variables
GET /point ?model=&var=&lat=&lon=&lead_from=0&lead_to=24
GET /bbox ?model=&var=&west=&south=&east=&north=&lead_hours=0&fmt=json|netcdf
GET /profile ?model=&lat=&lon=&lead_hours=0
GET /stac/search ?model=&from=&to=&bbox=&limit=
GET /docs OpenAPI spec UI
Download a kerchunk refs JSON via /refs/{model}, then read directly with xarray.
Data flows from the source S3 bucket straight to your compute (no transit through this API).
import fsspec, xarray as xr
# small (~MB), describes how to read the GRIB2 files
refs_url = "https://5-189-137-60.sslip.io/refs/gfs"
fs = fsspec.filesystem(
"reference",
fo=refs_url,
remote_protocol="s3",
remote_options={"anon": True}, # NOAA Open Data, free egress
)
ds = xr.open_dataset(fs.get_mapper(""), engine="zarr", consolidated=False)
# everything cfgrib exposed is now a regular xarray Dataset.
t2m = ds["t2m"] # (step, lat, lon)
print(t2m.sel(latitude=48.85, longitude=2.35, method="nearest").values)
For ECMWF: /refs/ecmwf-ifs. Add ?init_time=2026-06-19T00 to pin a specific run.
Surface: air_temperature_2m, dewpoint_temperature_2m, wind_u_10m, wind_v_10m,
wind_gust_10m, mean_sea_level_pressure, total_precipitation,
total_cloud_cover, low_cloud_cover, mid_cloud_cover, high_cloud_cover,
cape, visibility, snow_depth, relative_humidity_2m.
Pressure levels (1000 / 850 / 700 / 500 / 300 / 250 hPa): temperature, u_wind, v_wind,
specific_humidity, geopotential_height, vertical_velocity.
Roadmap: ECMWF IFS validation, full 1-year GFS backfill, then HRRR, ICON-EU, AROME, WW3.
Loading catalog status…
Source: github.com/pdrion/weather_ruse