QUAKEAPI · v2
地震・津波を、
つないだ瞬間から
受け取る API。
気象庁の地震・津波情報と緊急地震速報を、WebSocket・SSE・REST で。続報ごとにまとめ直した「今の状態」が届くので、受け取った側はそのまま表示するだけです。
const ws = new WebSocket(
"wss://quake-api.nakn.jp/v2/ws?topics=earthquake,tsunami,eew"
);
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
// { type: "earthquake", seq: 1024, data: { … } }
if (msg.type === "earthquake") {
show(msg.data.hypocenter.name, msg.data.maxIntensity);
}
};
3 WAYS
使い方に合わせて3通り
WebSocket /v2/ws
いちばん速い
Bot やサーバーに。つなぎっぱなしで、届いた瞬間に押し出されます。
SSE /v2/events
ブラウザにそのまま
EventSource だけで受け取れます。切れても自動でつなぎ直します。
REST /v2/…
必要なときに取る
最新の地震、過去の地震の一覧、いまの津波。震度・都道府県・マグニチュードで絞り込めます。
取りこぼさない
すべての配信に通し番号(seq)が付きます。つなぎ直すときに since を付ければ、切れていた間の分から届きます。
「今の状態」で届く
震度速報・震源・震度情報・取消をまとめ直した地震1件ぶんの状態が、version 付きで届きます。電文をつなぎ合わせる必要はありません。
緊急地震速報も
受信を冗長化し、最初に届いた報をすぐ配ります。予報か警報かが確定した報だけを届けます。
必要なものだけ
topics で地震・津波・緊急地震速報を選び、minIntensity で震度を絞れます。
過去の地震も
2022年11月からの地震・津波を、同じ形で取り出せます。
QuakeInfo と同じ API
Discord Bot の QuakeInfo も、この API で動いています。
ENDPOINTS
エンドポイント
ベース URL:https://quake-api.nakn.jp
| メソッド | パス | 内容 |
|---|---|---|
| WS | /v2/ws | リアルタイム配信(WebSocket) |
| SSE | /v2/events | リアルタイム配信(Server-Sent Events) |
| GET | /v2/earthquakes/latest | 最新の地震 |
| GET | /v2/earthquakes | 過去の地震の一覧(震度・都道府県・マグニチュード・期間) |
| GET | /v2/earthquakes/{eventId} | 地震1件(市町村・観測点の震度まで) |
| GET | /v2/tsunami | いまの津波警報・注意報・予報 |
| GET | /v2/tsunami/history | 過去の津波 |
| GET | /v2/eew/latest | 最新の緊急地震速報 |
| GET | /v2/health | 配信の状態 |
PAYLOAD
地震1件が、
1つの JSON に。
震源、マグニチュード、最大震度、都道府県・地域・市町村・観測点ごとの震度。続報が届くたびに version が上がった同じ形で届くので、eventId ごとに置き換えるだけです。
対象:震度速報・震源に関する情報・震源・震度に関する情報・顕著な地震の震源要素更新・津波警報・注意報・予報・津波情報・沖合の津波観測・緊急地震速報
{
"type": "earthquake",
"seq": 1024,
"data": {
"eventId": "20080614084350",
"version": 3,
"originTime": "2008-06-14T08:43:00+09:00",
"hypocenter": { "name": "岩手県内陸南部", "depthKm": 10 },
"magnitude": { "value": 7.0 },
"maxIntensity": "6+",
"intensity": { "prefectures": […], "cities": […], "stations": […] }
}
}