Skip to content
Console

Radar reflectivity

Tiles of Central Weather Administration (CWA) composite radar reflectivity (echo intensity, dBZ). Coverage is 115°E–126.5°E and 18°N–29°N, on a 0.0125° grid. About 7 days are kept. The interval follows CWA releases. Use the list. Use the tiles for rainfall-echo animation and live weather maps.

Shared rules (coordinates, caching, attribution, and full map examples) are in Map tiles.

Upstream terms
  • Central Weather Administration (CWA): CWA's own data terms (such as the Open Government Data License) also apply; CWA's official releases take precedence.

Where to show it, examples and commercial-use requests: Data licensing and attribution.

No API Token is required.

GEThttps://api.core-tnn1.exptech.dev/api/v2/tiles/radar/list
ServerTNN-1
Request
curl --compressed "https://api.core-tnn1.exptech.dev/api/v2/tiles/radar/list"
Response

Success (an empty array [ ] when there is no data). Gzip-compressed when the client supports it

[
1794641400,
600,
600,
600
]

Server error (plain-text error message)text/plain

Try it

The token is sent from your browser directly to the API.

The response is a delta-encoded array of integers, oldest first, in Unix seconds. See Map tiles for how to decode it.

FieldTypeDescription
[0]integerTime of the oldest entry, in Unix seconds.
[i](i ≥ 1)integerGap from the previous entry, in seconds. Add these up to get each time.
GEThttps://static.core-tnn1.exptech.dev/api/v2/tiles/radar/{time}/{z}/{x}/{y}.webp
ServerTNN-1
Path parameters
  • timeintegerRequired

    Unix seconds. Must be a value from the list (an exact match; the server does not pick the nearest entry).

  • zintegerRequired

    Zoom level, 3–12. Outside that range the response is a 1 × 1 transparent GIF.

  • xintegerRequired

    XYZ tile column.

  • yintegerRequired

    XYZ tile row (north to south).

Request
curl -o output.webp "https://static.core-tnn1.exptech.dev/api/v2/tiles/radar/<time>/<z>/<x>/<y>.webp"
Response

image/webp, 256 × 256, lossless, transparent background. Only cells with echo (dBZ > 0) are drawn. If z is outside 3–12, the tile is outside coverage, or there is no echo in range, the response is a 1 × 1 transparent GIF (image/gif)binary image/webp

If-None-Match matches the ETag. No contentNo response body

time is not an integer

bad time

That time does not exist, or the server errored. The body is a single newlineNo response body

Try it
Path parameters

The token is sent from your browser directly to the API.

After the fractional part of dBZ is dropped, each integer maps to one color (0–65 dBZ; above 65 uses the color for 65). The main stops:

dBZ Color Notes
0–14 #00FFFF → #0000FF Cyan to blue, darker with each dBZ
15–25 #00FF00 → #009600 Green, darker with each dBZ
26–29 #33AB00 → #CCEA00 Yellow-green
30–35 #FFFF00 → #FFC800 Yellow
36–44 #FFB800 → #FF1800 Orange
45–55 #FF0000 → #960000 Red, darker with each dBZ
56–59 #AB0033 → #EA00CC Magenta
60–65 #FF00FF → #9600FF Magenta to purple
  • A missing time returns 500, which is a different status from 404. The body is a single newline. Use only times from the list. Times older than about 7 days drop off the list, and the tiles for them are gone.
  • The time must match exactly. time is Unix seconds. Do not use milliseconds.
  • A z, x, or y that is not an integer does not return 400. It is treated as 0. Check the values yourself.
  • Set minzoom: 3 and maxzoom: 12 in the map library for zoom levels you do not need. Above 12, scale up level-12 tiles.
  • The bytes for a tile URL are fixed, so cache them on the client for a long time. The response has no Cache-Control, but it has an ETag for conditional requests.
  • The same list path is also available on the tile host, but it is cached for about an hour. Use the list host above for the latest time.
  • On the map, credit the source with the suggested attribution in Data license.