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": […] }
  }
}

まずは1行、つないでみる。

curl -N https://quake-api.nakn.jp/v2/events