Hydra
API Reference

Retrieve the last 20 missile and rocket alerts.

GET /public/alerts

Returns the most recent 20 missile and rocket alerts from Pikud HaOref (Israel Home Front Command). These are real-time civil defense alerts for incoming rockets, missiles, and hostile UAVs.

Request

GET https://api.hydra.fast/public/alerts

Headers: None required

Query Parameters: None

Response

Status: 200 OK

Content-Type: application/json

{
  "data": [
    {
      "id": "cm5alert001",
      "title": "Rocket alert — Sderot, Ibim, Nir Am",
      "severity": "CRITICAL",
      "region": "Gaza Envelope",
      "countries": ["IL"],
      "latitude": 31.52,
      "longitude": 34.59,
      "createdAt": "2026-03-21T06:45:12.000Z"
    },
    {
      "id": "cm5alert002",
      "title": "Hostile UAV alert — Metula, Kiryat Shmona",
      "severity": "HIGH",
      "region": "Northern Israel",
      "countries": ["IL"],
      "latitude": 33.28,
      "longitude": 35.57,
      "createdAt": "2026-03-21T05:30:00.000Z"
    }
  ]
}

Response Fields

Field Type Description
id string Unique alert identifier
title string Alert description including affected cities
severity string CRITICAL or HIGH
region string | null Geographic region within Israel
countries string[] Always ["IL"]
latitude number | null Alert centroid latitude
longitude number | null Alert centroid longitude
createdAt string ISO 8601 timestamp of alert

Code Examples

cURL

curl https://api.hydra.fast/public/alerts

JavaScript (fetch)

const response = await fetch('https://api.hydra.fast/public/alerts');
const { data } = await response.json();

data.forEach(alert => {
  const time = new Date(alert.createdAt).toLocaleTimeString();
  console.log(`[${time}] ${alert.severity}: ${alert.title}`);
});

Python (requests)

import requests
from datetime import datetime

response = requests.get("https://api.hydra.fast/public/alerts")
alerts = response.json()["data"]

for alert in alerts:
    dt = datetime.fromisoformat(alert["createdAt"].replace("Z", "+00:00"))
    print(f"[{dt.strftime('%H:%M:%S')}] {alert['severity']}: {alert['title']}")
    print(f"  Region: {alert.get('region', 'N/A')}")

Polling for new alerts

let lastSeen = null;

async function checkAlerts() {
  const response = await fetch('https://api.hydra.fast/public/alerts');
  const { data } = await response.json();

  const newAlerts = lastSeen
    ? data.filter(a => new Date(a.createdAt) > lastSeen)
    : data;

  if (newAlerts.length > 0) {
    console.log(`${newAlerts.length} new alert(s)!`);
    newAlerts.forEach(a => console.log(`  ${a.severity}: ${a.title}`));
    lastSeen = new Date(data[0].createdAt);
  }
}

// Poll every 10 seconds
setInterval(checkAlerts, 10_000);
checkAlerts();

Notes

  • Returns a maximum of 20 alerts
  • Alerts are sourced from Pikud HaOref (Israel Home Front Command) via 3-second polling
  • For real-time alerts with zero delay, use the WebSocket Stream instead
  • Coordinates represent the centroid of the alert area, not individual city locations