気象庁の警報・注意報JSON(公式APIではない)の読み方:r8形式のURL、コード表、発表・継続・解除
要点
- URLは r8 に変わっていた。 警報・注意報の画面は
https://www.jma.go.jp/bosai/warning/data/r8/<府県予報区コード>.jsonを読み込んでいます。旧URLのファイルは2026年5月28日10時16分の発表のままでした。 - 1つのファイルに、種類ごとの報が並ぶ。 大雨、土砂災害、波浪などの報が配列で入り、発表時刻もそれぞれ違います。全部の報を合わせて読みます。
- 市区町村は class20Items で探す。 八丈町なら
1340100の項目を、すべての報から集めます。 - 発表中は「発表」と「継続」だけ。 「解除」の項目は、次の報が出るまで何か月も残ります。
- コードの名前はJSONの外にある。 画面のスクリプトの対応表で、
"43"はレベル4大雨危険警報でした。
警報・注意報をプログラムやAIエージェントから引くなら、府県予報区コードの r8 ファイルを取得し、すべての報から市区町村等のコードの項目を集め、status が「発表」か「継続」のものだけを発表中として返します。 気象庁ホームページの画面が読み込むJSONで、API仕様書は見つかりませんでした。報ごとに発表時刻が違うので、項目ごとに reportDatetime を残します。
2026年10月29日の12時42分から12時46分にかけて、Node.js(依存なし)から警報・注意報のJSONを5回取得しました。対象は東京都(旧URLとr8形式)、沖縄本島地方、石川県、全国をまとめた map.json です。市区町村等のコードは気象庁 地域コード検索ツールで調べられます。天気予報のJSONは天気予報JSONの使い方で扱っています。
2026年5月29日からの体系変更と、JSONへの影響
気象庁の新たな防災気象情報について(令和8年~)によると、令和6年6月に取りまとめられた「防災気象情報に関する検討会」の提言を踏まえ、令和8年(2026年)5月29日から新しい防災気象情報の運用が始まっています。 河川氾濫、大雨、土砂災害、高潮の情報は5段階の警戒レベルに対応させ、情報名にレベルの数字を付けて発表します。たとえば、これまでの大雨警報は「レベル3大雨警報」になりました。
気象警報・注意報のページにある対応は次のとおりです。レベル4に「危険警報」が新しく入っています。
| 警戒レベル | 河川氾濫 | 大雨 | 土砂災害 | 高潮 |
|---|---|---|---|---|
| 5相当 | レベル5氾濫特別警報 | レベル5大雨特別警報 | レベル5土砂災害特別警報 | レベル5高潮特別警報 |
| 4相当 | レベル4氾濫危険警報 | レベル4大雨危険警報 | レベル4土砂災害危険警報 | レベル4高潮危険警報 |
| 3相当 | レベル3氾濫警報 | レベル3大雨警報 | レベル3土砂災害警報 | レベル3高潮警報 |
| 2 | レベル2氾濫注意報 | レベル2大雨注意報 | レベル2土砂災害注意報 | レベル2高潮注意報 |
気象警報・注意報の種類では、特別警報8種類、危険警報4種類、警報8種類、注意報17種類としています。暴風・波浪・大雪・暴風雪の特別警報と警報、強風・雷・濃霧などの注意報には、レベルの数字が付きません。河川氾濫の情報は、洪水予報河川ごとの河川予報区を単位に発表します。
JSONで確かめた影響は3つです。
- 画面が読むURLが変わった。 10月29日に取得した警報・注意報の画面のスクリプトは、
./warning/data/r8/${府県予報区コード}.jsonを読み込んでいました。旧URLwarning/data/warning/130000.jsonも HTTP 200 で返りましたが、reportDatetimeは2026-05-28T10:16:00+09:00、Last-Modified は5月28日10時17分15秒(日本時間)でした。 - ファイルの形が変わった。 旧形式は1つのオブジェクトでした。r8 は報の配列で、報ごとに
dataTypeCode(VPWW55など)が付きます。 - 新しい情報のコードがある。 画面の対応表には、新設の危険警報(
43・49・48)や、土砂災害の警報・注意報(09・29・39)のコードがあります。氾濫は別のファイルと別の番号表です。旧形式のコード表は今回確認していません。
旧URLが今後も残るのか、更新が止まった理由は、公式の案内では確認していません。運用開始の前日の内容が返り続けるので、旧URLで作った仕組みは、5月28日の状態を現在の発表として表示し続けるおそれがあります。
取得した5つのファイル
| 用途 | URL | 本文のサイズ | Last-Modified(日本時間) |
|---|---|---|---|
| 旧URL(東京都) | https://www.jma.go.jp/bosai/warning/data/warning/130000.json | 14,069 bytes | 2026-05-28 10:17:15 |
| 東京都 | https://www.jma.go.jp/bosai/warning/data/r8/130000.json | 29,011 bytes | 2026-10-29 09:48:44 |
| 全国 | https://www.jma.go.jp/bosai/warning/data/r8/map.json | 883,432 bytes | 2026-10-29 12:31:46 |
| 沖縄本島地方 | https://www.jma.go.jp/bosai/warning/data/r8/471000.json | 17,511 bytes | 2026-10-29 07:11:50 |
| 石川県 | https://www.jma.go.jp/bosai/warning/data/r8/170000.json | 10,359 bytes | 2026-10-29 10:22:25 |
5つとも Content-Type: application/json、Cache-Control: max-age=60 で、キーなしのGETで返りました。3府県予報区のファイルの報は、map.json に入っている同じ府県予報区の報と、dataTypeCode ごとに中身が一致しました。
記事の検証に使った部分は保存JSON jma-warning-r8-20261029.jsonにまとめました。報と class10Items は取得したまま残し、class20Items は記事で使う9つの市区町村等だけにしています。元の応答のSHA-256と、全国の map.json の集計も入れています。
r8形式の構造:報の配列
東京都のファイルのうち、波浪の報(5件中4件目)を短くすると次の形です。
[ 報, 報, 報, 報, 報 ] dataTypeCode "VPWW59" 報の種類(波浪警報・注意報) reportDatetime "2026-10-29T09:47:00+09:00" この報の発表時刻 controlDatetime "2026-10-29T00:47:38Z" UTC。reportDatetime の数十秒後 infoType "発表" publishingOffice "気象庁" headlineText "伊豆諸島南部、小笠原諸島では、高波に注意してください。" warning class10Items [ { "areaCode": "130030", "kinds": [ { "code": "16", "status": "発表" } ] }, ... 4件 ] class20Items [ { "areaCode": "1340100", "kinds": [ { "code": "16", "status": "発表", "properties": [...] } ] }, ... 62件 ]notice(お知らせ)と offices は、一部の報にだけありました。controlDatetime から reportDatetime を引いた差は、全国の289報で −1秒から59秒でした。
dataTypeCode の値は、防災情報XMLの電文の種類を表す符号と同じ文字列でした。気象庁の電文等の情報ページにある「気象警報・解説情報XML電文概要資料」(PDF)で、VPWW55 から VPWW61 の名前を確認しました。全国の map.json での件数と、そこに現れたコードは次のとおりです。
| dataTypeCode | 概要資料での名前 | 全国の報 | 10月29日に現れたコード |
|---|---|---|---|
| VPWW55 | 大雨警報・注意報 | 57 | 10、03 |
| VPWW56 | 土砂災害警報・注意報 | 57 | 29 |
| VPWW57 | 高潮警報・注意報 | 7 | 48 |
| VPWW58 | 暴風(雪)警報・注意報 | 58 | 15 |
| VPWW59 | 波浪警報・注意報 | 50 | 16 |
| VPWW60 | 大雪警報・注意報 | 2 | 12 |
| VPWW61 | 注意報(その他) | 58 | 14、20、21、24 |
報ごとに発表時刻が違います。 東京都では、大雨の報が10月1日1時16分、波浪の報が10月29日9時47分でした。ファイルには、種類ごとに最後に出た報が残っているように見えます。全国の289報で最も古いものは、7月11日の宮古島地方の高潮の報でした。一番新しい報だけを見ると、ほかの種類の警報・注意報を落とします。画面のスクリプトも、配列のすべての報を合わせてから表示していました。
status:発表・継続・解除・なし
kinds の status は、今回のデータでは次の4つでした。
| status | 読み方 | 扱い |
|---|---|---|
| 発表 | この報で発表した | 発表中 |
| 継続 | 前の報から続いている | 発表中 |
| 解除 | この報で解除した | 発表中ではない。解除した時刻として残す |
| 発表警報・注意報はなし | この報の種類で、その地域に発表しているものがない | code がない |
画面のスクリプトの英訳表には、ほかに「特別警報から警報」「特別警報から注意報」「警報から注意報」もありました。今回のデータには現れておらず、JSONにどう入るかは確かめていません。知らない status は発表中にも解除にも入れず、確認が要るものとして返します。
解除の項目は長く残ります。 沖縄本島地方のファイルでは、高潮の報(VPWW57)が8月8日16時16分のもので、見出しは「危険警報を解除します。」、久米島町の項目は {"code": "48", "status": "解除"} でした。48 はレベル4高潮危険警報です。status を見ずにコードだけを拾うと、2か月半前に解除された危険警報を「発表中」と答えてしまいます。
八丈町(1340100)の項目を、東京都のファイルの5つの報から並べるとこうなります。
- 10/01 01:16VPWW55(大雨)レベル2大雨注意報(10)を解除
- 10/01 07:29VPWW56(土砂災害)レベル2土砂災害注意報(29)を解除
- 10/28 18:06VPWW58(暴風(雪))八丈町は「発表警報・注意報はなし」
- 10/29 09:47VPWW59(波浪)波浪注意報(16)を発表
- 10/29 09:47VPWW61(その他の注意報)雷注意報(14)が継続。付加事項は「竜巻」
10月29日12時44分の時点で発表中だったのは、波浪注意報と雷注意報の2つです。千代田区(1310100)は、暴風の報(10月28日18時6分)に強風注意報の解除があるだけで、発表中のものはありませんでした。
警報・注意報コードと名前の対応
JSONには "code": "16" のような番号しかありません。名前の対応は、警報・注意報の画面(https://www.jma.go.jp/bosai/warning/)に含まれるスクリプトにありました。コードごとに要素名・レベル・名前を持つ表です。そこから写した33件です。
| 要素 | 注意報 | 警報 | 危険警報 | 特別警報 |
|---|---|---|---|---|
| 大雨 | 10 レベル2大雨注意報 | 03 レベル3大雨警報 | 43 レベル4大雨危険警報 | 33 レベル5大雨特別警報 |
| 土砂災害 | 29 レベル2土砂災害注意報 | 09 レベル3土砂災害警報 | 49 レベル4土砂災害危険警報 | 39 レベル5土砂災害特別警報 |
| 高潮 | 19 レベル2高潮注意報 | 08 レベル3高潮警報 | 48 レベル4高潮危険警報 | 38 レベル5高潮特別警報 |
| 暴風・強風 | 15 強風注意報 | 05 暴風警報 | なし | 35 暴風特別警報 |
| 暴風雪・風雪 | 13 風雪注意報 | 02 暴風雪警報 | なし | 32 暴風雪特別警報 |
| 大雪 | 12 大雪注意報 | 06 大雪警報 | なし | 36 大雪特別警報 |
| 波浪 | 16 波浪注意報 | 07 波浪警報 | なし | 37 波浪特別警報 |
| その他 | 14 雷、17 融雪、20 濃霧、21 乾燥、22 なだれ、23 低温、24 霜、25 着氷、26 着雪 | なし | なし | なし |
数を数えると、特別警報7、危険警報3、警報7、注意報16です。「気象警報・注意報の種類」の8・4・8・17より1つずつ少なく、差はどれも氾濫です。氾濫の情報は、スクリプトでは flood/data/r8/flood_xml.json という別のファイルと、別の番号表で扱われていました。その表では 20〜22 がレベル2氾濫注意報で、上の表の濃霧・乾燥・なだれ注意報と番号が重なります。2つの表を1つにまとめないでください。 氾濫のファイルは今回取得していません。
ほかに気をつける点です。
- コードは2文字の文字列。
"03"を数値に変えると3になり、表を引けません。 - 警戒レベルが付くのは4要素だけ。 画面は暴風や波浪の警報も同じ配色で塗りますが、気象警報・注意報のページは、それらが警戒レベルに相当しないことに注意を促しています。「レベル3暴風警報」のような名前を作らないでください。
- 10月29日に現れたのは11のコード。
03・10・12・14・15・16・20・21・24・29・48です。特別警報・危険警報・警報が発表中のデータは見ていません。
市区町村コードから、どのファイルのどこを見るか
気象警報・注意報のページによると、河川氾濫以外の警報・注意報は、原則として市町村ごとに発表します。JSONでは、市区町村等のコード(area.json の class20s、7桁)が class20Items の areaCode に入っていました。
八丈町 class20 1340100 └ 親をたどると府県予報区(offices)130000 東京都 → https://www.jma.go.jp/bosai/warning/data/r8/130000.json → 各報の warning.class20Items から areaCode "1340100" を探す └ 区域(class10s)130030 伊豆諸島南部 → 区域の単位で見るなら warning.class10Items から "130030" を探すファイル名に使う府県予報区コードと、ファイルの中で探す市区町村等のコードは、地域コード検索ツールに「八丈町」と入れると両方表示されます。天気予報のJSONでは区域(class10)のコードで探しましたが、警報・注意報では市区町村等のコードが使えます。
3つのファイルで、class20Items の件数(東京都62、沖縄本島地方34、石川県19)と class10Items のコードは、地域コード検索ツールが使う2026年10月5日の area.json の一覧と一致しました。北海道・沖縄県・鹿児島県は、府県予報区が都道府県と一致しません。久米島町のファイルは沖縄県ではなく沖縄本島地方の 471000 でした。考え方は地域コード検索の検証にもまとめています。
notice・additions・properties
notice は報ごとのお知らせです。 全国の289報のうち16報にあり、どれも大雨(VPWW55)か土砂災害(VPWW56)の報でした。石川県では、大雨の報に羽咋市の、土砂災害の報に珠洲市の、発表基準を通常より引き下げた暫定基準で運用している旨が入っていました。
notice は報に1つ付くので、石川県のファイルの金沢市の項目を見ても、同じ2つのお知らせが付いてきます。「金沢市の基準が引き下げられている」と読まないでください。画面は、お知らせを「(地域名)の警報・注意報(お知らせ)」として、区域ごとの表とは別に表示していました。
additions は項目に付く付加事項です。 今回は「竜巻」「ひょう」「突風」「うねり」が現れました。八丈町の雷注意報には「竜巻」、小笠原村の波浪注意報には「うねり」が付いていました。同じ報の見出しにも「竜巻などの激しい突風」とあります。
properties は意味を確かめていません。 class20Items の一部に、「波危険度」「風危険度」「雷危険度」「乾燥危険度」などの type と、significancyPart.locals[].code がありました。何の値かを説明する資料を見つけていないので、この記事のコードでは使っていません。土砂災害の報(VPWW56)には offices もあり、東京都では「補足情報担当」として東京都建設局河川部防災課が入っていました。
Node.jsで区域ごとにまとめる(依存なし)
解析コード jma-warning-summary.mjsと保存JSONを同じフォルダに保存すると、通信なしで試せます。Node.js 18以降で動き、npmパッケージは使いません。中心は、すべての報から1つの地域の項目を集める部分です。
// jma-warning-summary.mjs の summarizeArea から(全体は上のリンク先)// ACTIVE は「発表」「継続」、CANCELLED は「解除」、NONE は「発表警報・注意報はなし」for (const report of reports) { const item = report.warning[`${level}Items`].find((x) => x.areaCode === code); const base = { dataTypeCode: report.dataTypeCode, reportDatetime: report.reportDatetime }; if (!item) { missing.push(base); continue; } // 後で needsReview(area_missing_in_report)に入れる touched.push({ ...base, dataTypeName: DATA_TYPES[report.dataTypeCode] ?? null, headlineText: report.headlineText ?? null }); if (!Array.isArray(item.kinds) || item.kinds.length === 0) throw new JmaWarningError('unexpected_shape', `${report.dataTypeCode} の ${code} に kinds がない`); for (const kind of item.kinds) { if (kind.status === NONE && !kind.code) continue; const info = WARNING_CODES[kind.code]; const entry = { code: kind.code ?? null, name: info?.name ?? null, kind: info?.kind ?? null, alertLevel: info?.alertLevel ?? null, status: kind.status, additions: kind.additions ?? [], ...base }; if (!info) needsReview.push({ ...entry, reason: 'unknown_code' }); else if (ACTIVE.has(kind.status)) active.push(entry); else if (kind.status === CANCELLED) cancelled.push(entry); else needsReview.push({ ...entry, reason: 'unknown_status' }); }}保存JSONから八丈町を要約した結果です(長い配列は抜粋)。
$ node jma-warning-summary.mjs 130000 1340100 --file jma-warning-r8-20261029.json"status": "ok", "area": { "code": "1340100", "level": "class20" }, "inEffect": true,"active": [ { "code": "14", "name": "雷注意報", "kind": "注意報", "alertLevel": null, "status": "継続", "additions": ["竜巻"], "dataTypeCode": "VPWW61", "reportDatetime": "2026-10-29T09:47:00+09:00" }, { "code": "16", "name": "波浪注意報", "kind": "注意報", "alertLevel": null, "status": "発表", "additions": [], "dataTypeCode": "VPWW59", "reportDatetime": "2026-10-29T09:47:00+09:00" } ],"cancelled": [ { "code": "10", "name": "レベル2大雨注意報", "alertLevel": 2, "status": "解除", "reportDatetime": "2026-10-01T01:16:00+09:00", ... }, { "code": "29", "name": "レベル2土砂災害注意報", "alertLevel": 2, "status": "解除", "reportDatetime": "2026-10-01T07:29:00+09:00", ... } ],"provenance": { "publishingOffice": "気象庁", "latestReportDatetime": "2026-10-29T09:47:00+09:00", "source": "https://www.jma.go.jp/bosai/warning/data/r8/130000.json", "retrievedAt": "2026-10-29T12:44:37.920+09:00", "attribution": "出典:気象庁ホームページ(https://www.jma.go.jp/bosai/warning/)を加工して作成", ... }--file を付けなければ、r8/130000.json を1回だけ取得して同じ形で返します(この記事では、取得の部分は模擬の応答でだけ試しています)。取得に失敗したとき、HTMLが返ったとき、旧形式のJSONが返ったとき、地域の項目の kinds がないか空のときは、"status": "error" と "inEffect": null を返して終わります。知らないコードや status があるときと、一部の報にだけその地域の項目がないときは、発表中の項目がほかになければ "status": "needs_review" と "inEffect": null にします。「発表なし」とは返しません。
開発側の npm run test:jma-warning は、保存JSONを使う15件のテストです。八丈町・千代田区・今帰仁村・久米島町・小笠原村・珠洲市・金沢市の結果、コード表の件数、旧形式で止まること、知らないコードと status を発表中に入れないこと、それしかない地域や一部の報に項目がない地域を「発表なし」にしないこと、kinds がない・空の項目で止まること、配布ファイルとリポジトリのスクリプトが同じことを確かめます。fetch は模擬の関数に置き換え、実際の通信が0回であることも確認しています。2026年10月29日に Node.js 24.22.1(Windows)で当初の12件が、10月31日に Node.js 26.5.0(macOS)で追加の3件を含む15件が、すべて通りました。
AIエージェント・MCPで返すときの決めごと
- 項目ごとに発表時刻と出典を返す。 報によって
reportDatetimeが違うので、項目ごとに残します。ファイル全体の時刻としては、その地域に関係する報で一番新しいものをlatestReportDatetimeにします。取得元URL、取得日時、「加工して作成」の出典表記も付けます。型はMCPの出典情報を欠落させないoutputSchema設計に合わせられます。 - 解除と継続を取り違えない。 発表中として返すのは「発表」と「継続」だけです。「解除」は別の欄に、解除した報の時刻と一緒に返します。「継続」は新しく出たものではないので、「新たに発表された」と言わせません。
- 知らないものは止めて渡す。 対応表にないコード、知らない status、ファイルにない地域コードは、推測で分類せずに
needs_reviewやエラーにします。 - 取得の失敗を「警報なし」にしない。 HTTPエラー、HTMLの応答、旧形式のJSON、形の違いは、どれも警報・注意報の有無を答えずにエラーとして返します。取得間隔はサーバー側で決め、
max-age=60の間は取り直しません。考え方は公共データAPIをMCP化する設計パターンにあります。 - 独自の警報や予想を作らない。 気象庁の気象業務法「第二十三条」のページは、気象庁以外の者が気象・高潮・波浪・洪水などの警報をすることを、政令で定める場合を除いて禁じる条文を掲げています。気象庁の発表を出典付きでそのまま伝える範囲にとどめ、モデルに危険度の判断や避難の呼びかけを作らせません。筆者は法律の専門家ではないので、個別の可否は気象庁の案内で確認してください。
- 警報・注意報の回答は get_jma_warnings の結果だけを根拠にし、項目ごとの reportDatetime と出典を併記する- status が ok で active が空のときだけ「この時点で、氾濫を除く警報・注意報に発表中のものはない」と書く。cancelled を発表中として扱わない- 氾濫の情報(指定河川洪水予報)はこのJSONに含まれないので、「ない」とは言わず、別に確認するよう添える- status が needs_review のときは、active が空でも「ない」と書かず、needsReview の項目を示して気象庁ホームページを直接確認するよう返す- status が error のときは、警報・注意報の有無を答えず、気象庁ホームページを直接確認するよう返す- 地域の候補が複数なら候補を示して止まる。市区町村コードを推測しない- 避難の判断は、気象庁の発表と自治体の避難情報で行うよう添える- 出典は「出典:気象庁ホームページ(URL)を加工して作成」の形で残すまとめ
- 2026年5月29日に新しい防災気象情報の運用が始まった。警報・注意報の画面は
warning/data/r8/<府県予報区コード>.jsonを読み、旧URLは5月28日10時16分の発表のままだった - r8 は報の配列で、
dataTypeCode(VPWW55〜VPWW61)ごとに発表時刻が違う。すべての報を合わせて読む - 市区町村は
class20Items、区域はclass10ItemsのareaCodeで探す。コードは地域コード検索ツールで調べられる - 発表中は「発表」と「継続」だけ。「解除」は2か月以上残ることがある
- コードの名前は画面のスクリプトにある33件の表から引く。氾濫は別の表で、番号が重なる
この記事は気象庁の公式発表の代わりではありません。避難の判断は、気象庁の発表と、お住まいの自治体の避難情報で行ってください。
観測値はアメダスの観測値JSON、地震は地震情報JSONの読み方で扱っています。ほかの公共データとの使い分けは公共データAPIのガイドを参照してください。
この記事の情報・検証メモ
- 公開日
- 情報確認
- 参考リンク
- 8件
- 更新性
- 定期更新
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
一次情報・参考リンク
- 気象庁: 新たな防災気象情報について(令和8年~)(2026-10-29確認) https://www.jma.go.jp/jma/kishou/know/bosai/keiho-update2026/index.html
- 気象庁: 気象警報・注意報の種類(2026-10-29確認) https://www.jma.go.jp/jma/kishou/know/bosai/warning_kind.html
- 気象庁: 気象警報・注意報(警戒レベルとの対応・発表区域、2026-10-29確認) https://www.jma.go.jp/jma/kishou/know/bosai/warning.html
- 気象庁: 新たな防災気象情報 電文等の情報ページ(XML電文概要資料を含む、2026-10-29確認) https://www.jma.go.jp/jma/kishou/know/bosai/keiho-update2026/tech-info/index.html
- 気象庁ホームページ: 警報・注意報(画面とスクリプトを2026-10-29に取得) https://www.jma.go.jp/bosai/warning/
- 気象庁ホームページ: 東京都の警報・注意報JSON(r8形式、2026-10-29取得) https://www.jma.go.jp/bosai/warning/data/r8/130000.json
- 気象庁ホームページについて(利用規約・出典の記載・予告なしの変更、2026-10-29確認) https://www.jma.go.jp/jma/kishou/info/coment.html
- 気象庁: 気象業務法「第二十三条」(警報の制限、2026-10-29確認) https://www.jma.go.jp/jma/kishou/info/ml-23.html