Weather API
Historical and ongoing weather for Canada and the Caribbean. Station observations from Environment and Climate Change Canada and NOAA's Global Historical Climatology Network, Caribbean hourly from NOAA's Integrated Surface Database and the Iowa State ASOS archive, with solar irradiance and the gridded daily means from NASA POWER at each station's coordinates.
- Stations
- 9,210
- Daily observations
- 65,783,049
- Hourly observations
- 290,178,771
- Record begins
- 1840-03-01
- Stations with hourly
- 1,968
- Caribbean hourly stations
- 309
- Stations with solar
- 1,483
An API key is required
Every data endpoint needs one, including /status and /meta. Without a key the API answers 401 API key required. This page and the OpenAPI contract stay open so you can see exactly what you would be getting first. Request a key →
Getting started
Every endpoint is a GET and returns JSON by default. Send your key as an Authorization: Bearer header, an X-API-Key header, or ?key=. Each key carries its own per-minute and per-day limits, reported back in X-RateLimit-* headers.
# a year of daily weather for one station
curl -H "Authorization: Bearer $GOOSE_KEY" \
"https://gooseatlas.ca/api/v2/weather/observations\
?station=8329&from=2024-01-01&to=2024-12-31\
&fields=tmax,tmin,precip,wind_mean,ghi,hdd,cdd"# the live five-minute feed
curl -H "Authorization: Bearer $GOOSE_KEY" \
"https://gooseatlas.ca/api/v2/weather/observations\
?station=7854&cadence=minute\
&fields=temp,wind_speed,wind_gust,pressure,precip"# Caribbean hourly: find the station, then pull it
curl -H "Authorization: Bearer $GOOSE_KEY" \
"https://gooseatlas.ca/api/v2/weather/stations\
?country=TT&min_years=10"# Piarco, Trinidad — hourly back to July 1941
curl -H "Authorization: Bearer $GOOSE_KEY" \
"https://gooseatlas.ca/api/v2/weather/observations\
?wmo=78970&cadence=hourly&from=1950-01-01&to=1950-12-31\
&fields=temp,dewpoint,wind_speed,pressure_msl,cloud,ceiling"Endpoints
| Path | What it answers |
|---|---|
| /meta | Sources, every measure with its unit, station counts, what the archive spans. |
| /status | Holdings, how fresh each network is, and the state of every ingest job. |
| /stations | Find a station by name, country, region, bounding box, distance, or by which measures it actually carries. |
| /stations/{id} | One station: coverage, a count per measure, and its normals. |
| /observations | The archive itself at three cadences — daily, hourly, or the five-minute sub-hourly feed — with field selection, keyset pagination and CSV or NDJSON output. |
| /monthly | Monthly rollups, optionally beside the 1991-2020 normal and the departure from it. |
| /normals | WMO climate normals, with the count of years behind each figure. |
| /degree-days | Heating and cooling degree days on whatever base your model uses. |
| /solar | GHI, DNI, DHI, the clear-sky reference and the clearness index, by day, month or year. |
| /nearest | Nearest stations to a point, optionally with each one's latest observation. |
How the data is put together
- A measurement is never overwritten by an estimate. Sources carry a precedence, and the row names the network that measured it. Where irradiance and the gridded daily means have been filled in beside a station's own readings, the row carries
source_griddedas well. - Irradiance is gridded, not measured. No national daily network in this region publishes it. It comes from NASA POWER at each station's coordinates, and the solar endpoint says so on every response.
- Values are returned in real units — degC, mm, cm, km/h, kPa, kWh/m²/day, W/m² — and every response restates the units it used.
- Three cadences. Daily for the whole archive back to 1840; hourly for Canada back to 1953 and for the Caribbean back to 1941; and a five-minute feed from the Canadian one-minute network, sampled on a fixed grid so stations line up with each other. Ask for it with
?cadence=minute; each row carries the interval it represents. - Caribbean hourly comes from two sources, deliberately. No national meteorological service in the region publishes machine-readable observations, but their reports reach the world over the GTS. NOAA's Integrated Surface Database holds the history, quality-flagged, back to 1941 at Piarco; it has stopped publishing past 2025. The Iowa State ASOS archive parses the same METAR traffic and is current to yesterday. Each row names which one measured it, the curated record wins any disagreement, and neither source's gap is allowed to erase the other's reading.
- What you can ask for: temperature (max, min, mean, dew point), precipitation, rain, snow, snow depth, wind (mean, max, gust, direction), pressure, humidity, visibility, sunshine, evaporation, heating and cooling degree days on any base, and solar irradiance — global, direct, diffuse and the clear-sky reference. The full column list is here.
- Nothing silently truncates. A response that has more rows behind it returns
next_cursor; follow it until it is null.
Conditions
Conditional requests are supported: every response carries an ETag, and an If-None-Match that still matches returns 304 without a body. Rate limits are reported in X-RateLimit-* headers. CSV and NDJSON are streamed, so a large export does not wait on the whole result being assembled.
Licensing
ECCC observations under the Open Government Licence – Canada. GHCN-Daily, the Integrated Surface Database and NASA POWER are United States government works in the public domain. The Iowa State ASOS archive is freely available and asks for acknowledgement. Attribution to the original agencies, and to the national meteorological services whose reports these archives carry, is expected and appreciated.
Need a key, a bulk extract, or a measure that is not here yet? Get in touch. Keys are issued per organisation with their own rate limits, and every call is recorded against the key that made it.