API reference.
Every endpoint and field.
Rendered from the same OpenAPI 3.1 document the API serves, so this page cannot drift from the thing it describes.
/v1/weather/latest Latest observation
The newest stored observation from the station nearest the coordinate. No freshness policy is applied: observed_at is always returned so the caller can judge staleness itself.
Query parameters
-
latnumber · double optional - Latitude in decimal degrees. Omit together with
lonto use the location the edge derives from the request's IP address; the response says which was used. - e.g. 35.69
-
lonnumber · double optional - Longitude in decimal degrees. Omit together with
latto use the location the edge derives from the request's IP address. - e.g. 139.7
Responses
- 200
- The newest observation for the nearest station.
- 400
- A parameter is missing or malformed — absent
lat/lon, a non-numeric or out-of-range coordinate, a timestamp that is not RFC 3339, or atoearlier thanfrom. - 404
- No station within the service radius of the coordinate — this is how points outside Japan are rejected — or no observation retained for the requested station and time.
- 500
- Something failed server-side. The detail is in the server log, not here.
- 503
- The station list has not loaded yet, so no coordinate can be resolved.
/v1/weather/history Observations over a time range
Every retained observation for the nearest station between from and to, oldest first.
A from older than the retention window is silently clamped to the earliest retained instant rather than rejected; the echoed from and retention_days explain the shortfall.
Query parameters
-
latnumber · double optional - Latitude in decimal degrees. Omit together with
lonto use the location the edge derives from the request's IP address; the response says which was used. - e.g. 35.69
-
lonnumber · double optional - Longitude in decimal degrees. Omit together with
latto use the location the edge derives from the request's IP address. - e.g. 139.7
-
fromstring · date-time required - Start of the range, RFC 3339. Clamped to the retention window.
- e.g. 2026-09-12T00:00:00Z
-
tostring · date-time required - End of the range, RFC 3339. Must not be before
from. - e.g. 2026-09-12T06:00:00Z
Responses
- 200
- The observations retained in the range.
countmay be 0. - 400
- A parameter is missing or malformed — absent
lat/lon, a non-numeric or out-of-range coordinate, a timestamp that is not RFC 3339, or atoearlier thanfrom. - 404
- No station within the service radius of the coordinate — this is how points outside Japan are rejected — or no observation retained for the requested station and time.
- 500
- Something failed server-side. The detail is in the server log, not here.
- 503
- The station list has not loaded yet, so no coordinate can be resolved.
/v1/weather/at Observation at a point in time
The reading current at at for the nearest station.
at is floored to the enclosing ten-minute boundary, never rounded up: the reading current at 14:23 is the one from 14:20. If nothing was stored for that boundary, the preceding 30 minutes are searched; beyond that the station was down and the answer is 404.
Both the requested instant and the reading's own observed_at are returned so any gap between them is visible.
Query parameters
-
latnumber · double optional - Latitude in decimal degrees. Omit together with
lonto use the location the edge derives from the request's IP address; the response says which was used. - e.g. 35.69
-
lonnumber · double optional - Longitude in decimal degrees. Omit together with
latto use the location the edge derives from the request's IP address. - e.g. 139.7
-
atstring · date-time required - The instant of interest, RFC 3339. Floored to a ten-minute boundary.
- e.g. 2026-09-12T01:23:00Z
Responses
- 200
- The reading current at the requested instant.
- 400
- A parameter is missing or malformed — absent
lat/lon, a non-numeric or out-of-range coordinate, a timestamp that is not RFC 3339, or atoearlier thanfrom. - 404
- No station within the service radius of the coordinate — this is how points outside Japan are rejected — or no observation retained for the requested station and time.
- 500
- Something failed server-side. The detail is in the server log, not here.
- 503
- The station list has not loaded yet, so no coordinate can be resolved.
/v1/weather/now Every reporting station, right now
One reading per station: the newest each one has, for the whole AMeDAS network in a single response. Intended for maps and dashboards that need the country at a glance rather than one point.
A station whose newest reading is more than 30 minutes old is left out entirely rather than returned with a stale value, so count varies between calls. Stations report on their own schedule, so the entries do not share one timestamp — each carries its own observed_at, and the top-level observed_at is simply the newest among them.
No coordinate is involved, so entries carry no distance_km.
Query parameters
No parameters.
Responses
- 200
- The current state of every reporting station.
- 500
- Something failed server-side. The detail is in the server log, not here.
- 503
- The station list has not loaded yet, so no coordinate can be resolved.
Rate limits
There is no key and no per-caller quota. One edge rule stands between the API and a client stuck in a loop: 50 requests every 10 seconds, counted per IP address per Cloudflare location, across every /v1/weather/ path.
Go over it and the edge answers 429 until the ten-second window clears; nothing is banned for longer than that. The count is taken before the cache is consulted, so responses served from the edge count the same as ones that reach the origin. If you are fanning out over many stations at once, keep the burst under fifty. These numbers describe how the service is run today, not a guarantee: the limit, and the endpoints themselves, may change without notice, and the service is provided as is with no uptime commitment.
Response fields
Station
The station the coordinate resolved to. Readings are this station's, not the requested point's — `distance_km` is how far apart those are.
-
idstring - JMA station number.
-
namestring - Station name in Japanese.
-
name_enstring - Station name romanised.
-
latnumber · double - Station latitude, 5 decimal places.
-
lonnumber · double - Station longitude, 5 decimal places.
-
altitude_minteger | null - Station elevation in metres, or null if JMA does not publish one.
-
distance_kmnumber · double - Great-circle distance from the requested coordinate, 2 decimal places.
Observation
One ten-minute reading. Every measurement is nullable: null means the station has no such sensor or did not report it, and is never a substitute for zero.
-
observed_atstring · date-time - When the reading was taken, UTC, on a ten-minute boundary.
-
temp_cnumber | null - Air temperature, °C.
-
humidity_pctnumber | null - Relative humidity, percent.
-
pressure_hpanumber | null - Sea-level pressure, hPa.
-
wind_msnumber | null - Wind speed, m/s.
-
wind_direction_degnumber | null - Wind direction in degrees clockwise from north, the direction the wind blows from.
-
precipitation_10m_mmnumber | null - Precipitation over the preceding 10 minutes, mm.
-
precipitation_1h_mmnumber | null - Precipitation over the preceding hour, mm.
-
precipitation_3h_mmnumber | null - Precipitation over the preceding 3 hours, mm.
-
precipitation_24h_mmnumber | null - Precipitation over the preceding 24 hours, mm.
-
sun_10m_minnumber | null - Sunshine during the preceding 10 minutes, minutes.
-
sun_1h_hnumber | null - Sunshine during the preceding hour, hours.
-
snow_cmnumber | null - Snow depth on the ground, cm.
-
visibility_mnumber | null - Horizontal visibility, metres.
Coordinate
The coordinate the answer was computed from, and where it came from.
-
latnumber · double -
lonnumber · double -
sourcestring - Whether the coordinate came from the query or from IP geolocation.
NowStation
A station in the all-stations snapshot, with its own newest reading. There is no `distance_km`: no coordinate was asked for.
-
idstring - JMA station number.
-
namestring - Station name in Japanese.
-
name_enstring - Station name romanised.
-
latnumber · double - Station latitude, 5 decimal places.
-
lonnumber · double - Station longitude, 5 decimal places.
-
altitude_minteger | null - Station elevation in metres, or null if JMA does not publish one.
-
observationobject - One ten-minute reading. Every measurement is nullable: null means the station has no such sensor or did not report it, and is never a substitute for zero.
Error
-
errorstring - A human-readable message. Not a stable machine-readable code.