Weather — entry 023 of 31
RainViewer
RainViewer aggregates and re-tiles third-party radar imagery from over 1,200 radar stations across 150+ countries, refreshed every 5 minutes, and exposes it as XYZ PNG tile pyramids plus a JSON timeline endpoint listing available past and short-term nowcast frames. Coverage isn't guaranteed to be permanent since individual source radar owners can request their feed be pulled, and the service is explicitly licensed for personal, educational, and small-scale community projects only.
RainViewer's weather-maps endpoint doesn't serve images directly — it returns a timeline of recent (and near-term nowcast) radar frame IDs, which you combine with a host URL and a tile template to build actual XYZ PNG tile URLs for a map.
GreatAPIs Score
Auth quickstart
- No API key required — requests are public and keyless.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Current radar frame timeline
GEThttps://api.rainviewer.com/public/weather-maps.json
{
"version": "2.0",
"generated": 1785031534,
"host": "https://tilecache.rainviewer.com",
"radar": {
"past": [
{ "time": 1785030000, "path": "/v2/radar/5c94a72502b3" },
{ "time": 1785030600, "path": "/v2/radar/e94fa45b7cd9" },
{ "time": 1785031200, "path": "/v2/radar/580a9aec0213" }
],
"nowcast": []
},
"satellite": {
"infrared": []
}
}Developer reference
https://api.rainviewer.com/publicGotchas & limits
- The JSON only lists frame metadata, not images — build a tile URL yourself as `host` + frame `path` + `/{size}/{z}/{x}/{y}/{color}/{options}.png`, e.g. `https://tilecache.rainviewer.com/v2/radar/580a9aec0213/256/6/33/22/2/1_1.png`
- Tiles are served from the `tilecache.rainviewer.com` host in the response's `host` field, not from `api.rainviewer.com` — don't hardcode the API host for tile requests
- RainViewer documents a 5-minute refresh, but the public `weather-maps.json` timeline exposes `radar.past` frames spaced exactly 10 minutes apart (13 frames covering 2 hours, observed 2026-07-26); older frames age out of the list entirely, so re-fetch the timeline before building tile URLs rather than reusing a `path` you cached earlier
- `radar.nowcast` (short-term forecast frames) and `satellite.infrared` are frequently empty arrays — check `.length` before assuming a nowcast layer is available