外務省の海外安全情報をAPIで取る

執筆:NextLogic元SE・IT実務15年/政府オープンデータ・各府省APIを自ら検証) / 最終更新:2026-07-15

外務省の海外安全情報は、渡航先の危険レベル(レベル1〜4)や感染症危険情報、現地大使館からの領事メールを公開しており、オープンデータとしてXMLで配信されています。登録もAPIキーも不要で、政府標準利用規約に準拠して商用利用も可能という、扱いやすい部類のAPIです。ただし、コードを1桁間違えるだけで「エラーではなく200 OK」が返ってくるという、静かで危険な仕様があります。このガイドでは、取れるデータと実際に叩いて確認した罠を整理します。

地域別と国別、2種類のファイル

ベースURLは `https://www.ezairyu.mofa.go.jp/opendata` です。クエリパラメータは無く、静的なXMLファイルを直接取りに行く形式です。認証は不要。

**地域別**は `GET /area/{2桁の地域コード}.xml`。実際に確認できたコードは、`10`=アジア、`20`=大洋州、`30`=北米、`33`=中南米、`42`=ヨーロッパ、`50`=中東、`60`=アフリカ です。`00` は全地域になります。中身は、その地域に関する領事メールの一覧です。

**国別**は `GET /country/{4桁ゼロ埋めの国コード}.xml`。実測例では `0086`=中国、`0227`=ニジェール、`0421`=スロバキア、`1000`=米国本土です(`1002`=グアム、`1808`=ハワイのように、地域によって別コードが振られています)。国別ファイルには危険情報の要約が入るので、「この国は今どのレベルか」を知りたいならこちらです。

危険レベルは「数字」ではなく「フラグ」で返る

ここが解釈の要点です。「レベル4」という値がそのまま入っているフィールドは**ありません**。代わりに `riskLevel1` 〜 `riskLevel4` という4つのフィールドがあり、**該当する件数のフラグ**として表現されます。

実測例を挙げると、ニジェール(`0227`)では `riskLevel4` が 1、他のレベルは 0 でした。つまり「レベル4に該当する情報が1件ある」という意味です。「レベル4の国だ」と読むには、この4フィールドを見て判断する必要があります。テキストとしての「レベル4」という表現は、`riskTitle` や `lead`、`mainText` といった本文側にしか出てきません(実測の `riskTitle` は「ニジェールの危険情報【一部地域の危険レベル引上げ】」でした)。

**感染症危険情報も同じスキーマの中**に `infectionLevel1` 〜 `infectionLevel4` として入っています。渡航危険情報と感染症危険情報は別制度ですが、同じファイルの中に並んでいるので、混同しないよう注意してください。

このほか、現在有効な危険情報の要約として `riskLeaveDate` / `riskTitle` / `riskLead` / `riskUrl`、広域の注意喚起として `wideareaSpot`、そして領事メールの一覧が入ります。メールの種別は `infoType` で区別され、実測値は `R10`=領事メール(一般)、`T40`=危険情報、`R20`=緊急一斉配信系(台風警報等)、`C50`=広域情報でした。

最大の罠:コードを間違えると200 OKでHTMLが返る

このAPIで最も危険なのがこれです。存在しないコードを指定しても、**404にはなりません**。実測で `9999`(存在しない国コード)や `421`(4桁ゼロ埋めしていない3桁)を渡したところ、**HTTP 200 OK** とともに `Content-Type: text/html` で「指定されたページが見つかりません」という外務省の汎用エラーページが返ってきました。配信基盤(Akamai)のフォールバックです。

何が起きるかというと、XMLを期待しているコードがHTMLを受け取ります。`response.ok` をチェックしていても通過します。運が悪いとパースエラーにもならず、「データが空だった」として静かに処理が進みます。**「危険情報が0件だから安全」と誤読する**——安全情報を扱うAPIとしては、これは笑えない事故です。

対策は明快です。**国コードは必ず4桁ゼロ埋め、地域コードは2桁**という桁数を厳守すること。そして `Content-Type` を検証し、`application/xml` でなければエラーとして扱うことです。ステータスコードだけを信じてはいけません。

参考までに、同じ政府系でもe-Govのパブリックコメントは、存在しないコードに対して301→404という**検知できる**エラーを返します。同じ「政府のオープンデータ」でも壊れ方が非対称なので、APIごとに確かめる必要があります。

利用条件(商用可・出典必須)

利用規約が明確なのはこのAPIの美点です。**政府標準利用規約(第2.0版)に準拠**しており、CC BY 4.0 と互換です。複製・公衆送信・翻案が自由にでき、**商用利用も可能**です。

条件は出典の記載です。「出典:外務省 海外安全情報オープンデータ(当該ページのURL)」のように明記します。加工した場合は加工した旨も書く必要があり、国が作成したかのように見せる態様での公表は禁止されています。

免責条項として「国は利用者の一切の行為について責任を負わない」「コンテンツは予告なく変更・移転・削除されることがある」と明記されています。前述のソフト404は、まさにこの「予告なく削除される」が起きたときにも同じ形で現れます。エラー処理を省略しないでください。

更新頻度は、実測時に取得時刻の約15分前を `lastModified` が指していました。領事メールの配信のたびに更新されているようですが、1回の観測なので推測です。

出典

この記事を書いた人
NextLogicCiviNavi 主筆

元システムエンジニア。Web系アプリ開発6年+ソリューション9年、IT実務およそ15年。個人開発者として、政府オープンデータや各府省のAPIを実際に叩いて検証し、「何が取れるか」「実装時にどこで詰まるか」「どう活用するか」を一次検証にもとづいて記録しています。

運営者・検証方針について →
自分のAIに接続する →83ツールを見る

ほかのガイド

e-Stat APIで何が取れるか早わかり日本政府のオープンデータAPIの始め方RESAS廃止後の代替データAPI気象庁の天気予報・地震情報をAPIで取得する法令を全文検索・取得する(e-Gov法令API)住所を緯度経度に変換する(国土地理院ジオコーディング)日本銀行の時系列統計(為替・金利・マネー)を取得する国会の会議録・発言を検索・取得する(国会会議録API)法人番号・gBizINFO・EDINETで企業情報を調べる地震ハザード・地質・地震/津波をAPIで調べる不動産の取引価格・地価をAPIで調べるEDINET APIで何が取れるか早わかりJ-STAGE APIで論文を検索するPLATEAU 3D都市モデルをAPIで探すjGrants APIで補助金・助成金を検索する雇用・賃金の統計をAPIで取るシームレス地質図APIで地点の地質を調べるCiNii Research APIで論文・研究データを横断検索するそらまめくんAPIで大気汚染データを取る国立国会図書館サーチAPIで書誌を検索するJAXAの衛星データをAPIで探す(STAC)ジャパンサーチ・IRDB・researchmap をAPIで使い分けるパブリックコメントをRSSで自動監視するミラサポplus APIで中小企業の支援事例を探す
← ガイド一覧