WeatherTotals JSON API
The WeatherTotals JSON API serves the same figures that appear on the site's pages as structured data. It is free, requires no key or signup, and uses only GET requests.
Endpoints
| Endpoint | Returns |
|---|---|
| /api/v1/snow/season | Season-to-date snowfall by state, with the highest measured city per state and the normal to date, in inches. |
| /api/v1/snow/reports | For the last 24 hours, nationwide snowfall reports are sorted newest first and include place, amount, source, and time. |
| /api/v1/snow/:state/:city | A single city's snowfall data: season to date versus normal, snow days, biggest day, the day-by-day season, all-time records, and monthly normals. |
| /api/v1/aurora/now | For every state, the current verdict and required Kp are shown, along with the planetary Kp, its time, and the forecast peak. |
| /api/v1/rain/:state/:city | A single city's rain data: yesterday's official climate report, year to date versus normal, rain days, records, and monthly normals. |
| /api/v1/hail/week | For the last seven days, state-by-state hail reports include the largest stone and the most recent 24 hours. |
| /api/v1/yesterday | Each tracked city's entry includes yesterday's official high and low, the times they were recorded, departures from normal, records, and rain. |
| /api/v1/storms/:kind/:slug | A storm's summary and all its reports. Slug comes from the address in the storm's page URL, and kind accepts snow, rain or hail. |
Example
Request the current aurora data with this curl command:
curl https://weathertotals.com/api/v1/aurora/now
CSV downloads
Add format=csv to any endpoint to get its data as a CSV file. Where an endpoint holds several tables, table= names the one you want, and the day list is the default. The file opens with comments naming the page it mirrors, the public domain notice, and the source of the figures.
https://weathertotals.com/api/v1/snow/season?format=csv https://weathertotals.com/api/v1/snow/massachusetts/boston?format=csv&table=seasons https://weathertotals.com/api/v1/rain/texas/houston?format=csv&table=thresholds https://weathertotals.com/api/v1/storms/rain/2026-09-09?format=csv
Response envelope
Every response uses the same JSON envelope. The fields are api, asOf, page, docs, attribution, and data.
{
"api": "v1",
"asOf": "2026-08-23T10:40:12.000Z",
"page": "https://weathertotals.com/aurora",
"docs": "https://weathertotals.com/api",
"attribution": {
"notice": "Contains NWS/NOAA material in the public domain (17 U.S.C. 403). ...",
"license": { "name": "CC BY 4.0", "spdx": "CC-BY-4.0", "url": "https://creativecommons.org/licenses/by/4.0/" },
"sources": ["NOAA Space Weather Prediction Center planetary Kp"],
"required": "You must attribute WeatherTotals by linking to the page named above; CC BY 4.0 requires this credit."
},
"data": { "kp": 1.0, "observedAt": "2026-08-23T10:39:00.000Z", "states": [ ... ] }
}Usage terms
- Every API response is licensed under CC BY 4.0 for any purpose, including commercial use, with no key or permission needed. Attribute WeatherTotals, add a link to the response page, and name the license. The underlying observations are US government public domain.
- Every response carries an attribution block; republished figures must keep the credit, license, sources and public domain notice it gives.
- Each IP address gets 120 requests per minute. Exceeding that returns a 429 status and a Retry-After header telling you how many seconds to wait.
- On every response, the RateLimit-Reset, RateLimit-Remaining, and RateLimit-Limit headers appear, so your client can pace itself. Responses are cached for 5 to 60 minutes, so requesting more often just returns the same figures, and you can contact us via the form if you need more.