Utilities & AI

Weather & Hazards API API

The Weather Intelligence API returns weather and environmental data as clean JSON.

13 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary environment_current endpoint returns a location's temperature, feels-like, wind, condition symbol and air quality, and you can pull a forecast, air_quality, alerts, nearby hazards, disasters and earthquakes. It is built for weather apps, logistics and risk tools that need weather and hazard data from one endpoint. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, environment_current, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/weather-intel/v1/environment_current",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "lat": 52.52,
    "lon": 13.405
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "weather-intel",
    "endpoint": "environment_current",
    "mode": "live",
    "latency_ms": 6379.5,
    "record_count": 1,
    "bytes": 0,
    "cache_hit": false,
    "blocks": [
      "air_quality",
      "alerts",
      "hazards"
    ]
  },
  "data": {
    "location": {
      "lat": 52.52,
      "lon": 13.405
    },
    "units": "metric",
    "weather": {
      "time": "[redacted-phone]T17:00:00Z",
      "temperature": 23.7,
      "feels_like": 23.7,
      "humidity_pct": 44.6,
      "wind_speed": 4.8,
      "wind_gust": null,
      "wind_direction_deg": 294.5,
      "pressure_hpa": 1010.3,
      "cloud_cover_pct": 14.8,
      "fog_pct": 0,
      "dew_point": 10.9,
      "uv_index_clear_sky": 0.5,
      "precipitation": 0,
      "precipitation_window_hours": 1,
      "symbol": {
        "code": "fair_day",
        "condition": "mostly_clear",
        "intensity": "normal",
        "is_showers": false,
        "has_thunder": false,
        "day_night": "day"
      }
    },
    "air_quality": {
      "pollutants": {
        "no2": {
          "value": 8.78,
          "unit": "µg/m³",
          "measured_at": "[redacted-phone]T16:00:00Z",
          "age_hours": 1.3,
          "station": "Berlin Mitte",
          "station_id": 3019,
          "station_distance_km": 1.18,
          "provider": "EEA"
        },
        "pm10": {
          "value": 27.57,
          "unit": "µg/m³",
          "measured_at": "[redacted-phone]T16:00:00Z",
          "age_hours": 1.3,
          "station": "Berlin Mitte",
          "station_id": 3019,
          "station_distance_km": 1.18,
          "provider": "EEA"
        },
        "pm25": {
          "value": 16.49,
          "unit": "µg/m³",
          "measured_at": "[redacted-phone]T16:00:00Z",
          "age_hours": 1.3,
          "station": "Berlin Mitte",
          "station_id": 3019,
          "station_distance_km": 1.18,
          "provider": "EEA"
        },
        "co": {
          "value": 250,
          "unit": "µg/m³",
          "measured_at": "[redacted-phone]T16:00:00Z",
          "age_hours": 1.3,
          "station": "Berlin Neukölln",
          "station_id": 2993,
          "station_distance_km": 3.82,
          "provider": "EEA"
        },
        "o3": {
          "value": 100.72,
          "unit": "µg/m³",
          "measured_at": "[redacted-phone]T16:00:00Z",
          "age_hours": 1.3,
          "station": "Berlin Neukölln",
          "station_id": 2993,
          "station_distance_km": 3.82,
          "provider": "EEA"
        }
      },
      "aqi_us": {
        "value": 65,
        "category": "moderate",
        "dominant_pollutant": "pm25",
        "per_pollutant": {
          "pm25": 65,
          "pm10": 26
        },
        "scale": "US EPA AQI (PM2.5 2024 breakpoints); computed from listed pollutants only"
      },
      "aqi_eu": {
        "index": 3,
        "category": "moderate",
        "dominant_pollutant": "o3",
        "per_pollutant": {
          "pm25": "fair",
          "pm10": "fair",
          "no2": "good",
          "o3": "moderate"
        },
        "scale": "European Air Quality Index (EAQI) bands"
      },
      "nearest_station_km": 1.18,
      "stale_readings_skipped": 21,
      "insufficient_data": false
    },
    "alerts": {
      "active": [
        {
          "identifier": "[redacted-phone].DWD.PVW.[redacted-phone]dbed1-2c0c-42c2-be[redacted-phone].MUL",
          "event": "heavy thunderstorms with gale- or storm-force gusts, heavy rain and hail",
          "color": null,
          "hazard": null,
          "severity": "moderate",
          "urgency": "immediate",
          "certainty": "likely",
          "status": "actual",
          "message_type": "update",
          "area": "Bodenseekreis",
          "geocode_emma_id": "DE271",
          "onset": "[redacted-phone]T16:31:00+00:00",
          "effective": null,
          "expires": "[redacted-phone]T17:30:00+00:00",
          "sent": "[redacted-phone]T16:31:00+00:00",
          "title": "Orange Thunderstorm Warning issued for Germany - Bodenseekreis"
        },
        {
          "identifier": "[redacted-phone].DWD.PVW.[redacted-phone]d64efea-72bb-4822-833c-8c7d688c51bb.MUL",
          "event": "heavy rain",
          "color": null,
          "hazard": null,
          "severity": "moderate",
          "urgency": "immediate",
          "certainty": "likely",
          "status": "actual",
          "message_type": "alert",
          "area": "Kreis Cuxhaven - Küste",
          "geocode_emma_id": "DE045",
          "onset": "[redacted-phone]T02:00:00+00:00",
          "effective": null,
          "expires": "[redacted-phone]T13:00:00+00:00",
          "sent": "[redacted-phone]T13:56:00+00:00",
          "title": "Orange Rain Warning issued for Germany - Kreis Cuxhaven - Küste"
        },
        {
          "identifier": "[redacted-phone].DWD.PVW.[redacted-phone].e5bdb[redacted-phone]bad-96bc-7190d0afe854.MUL",
          "event": "wind gusts",
          "color": null,
          "hazard": null,
          "severity": "minor",
          "urgency": "immediate",
          "certainty": "likely",
          "status": "actual",
          "message_type": "update",
          "area": "Stadt Emden",
          "geocode_emma_id": "DE154",
          "onset": "[redacted-phone]T06:00:00+00:00",
          "effective": null,
          "expires": "[redacted-phone]T19:00:00+00:00",
          "sent": "[redacted-phone]T17:21:00+00:00",
          "title": "Yellow Wind Warning issued for Germany - Stadt Emden"
        }
      ],
      "country": {
        "slug": "germany",
        "name": "Germany"
      },
      "matched_via": "point-in-polygon",
      "coverage": "meteoalarm",
      "coverage_note": "country-level MeteoAlarm warnings (EMMA regions) — not point-precise"
    },
    "hazards": {
      "events": [
        {
          "event_id": 1104019,
          "episode_id": 2,
          "type": "flood",
          "type_code": "FL",
          "name": "[redacted-name]",
          "alert_level": "green",
          "alert_score": 1,
          "severity": 0,
          "severity_text": "Magnitude 0 ",
          "country": "Germany",
          "iso3": "DEU",
          "from": "[redacted-phone]T01:00:00",
          "to": "[redacted-phone]T01:00:00",
          "is_current": true,
          "coordinates": {
            "lat": "[trimmed-depth]",
            "lon": "[trimmed-depth]"
          },
          "report_url": "https://www.gdacs.org/report.aspx?eventid=1104019&episodeid=2&eventtype=FL",
          "distance_km": 150
        },
        {
          "event_id": 1104024,
          "episode_id": 1,
          "type": "flood",
          "type_code": "FL",
          "name": "[redacted-name]",
          "alert_level": "green",
          "alert_score": 1,
          "severity": 0,
          "severity_text": "Magnitude 0 ",
          "country": "Czech Republic",
          "iso3": "CZE",
          "from": "[redacted-phone]T01:00:00",
          "to": "[redacted-phone]T01:00:00",
          "is_current": true,
          "coordinates": {
            "lat": "[trimmed-depth]",
            "lon": "[trimmed-depth]"
          },
          "report_url": "https://www.gdacs.org/report.aspx?eventid=1104024&episodeid=1&eventtype=FL",
          "distance_km": 275.1
        },
        {
          "event_id": 1104025,
          "episode_id": 1,
          "type": "flood",
          "type_code": "FL",
          "name": "[redacted-name]",
          "alert_level": "green",
          "alert_score": 1,
          "severity": 0,
          "severity_text": "Magnitude 0 ",
          "country": "Poland",
          "iso3": "POL",
          "from": "[redacted-phone]T01:00:00",
          "to": "[redacted-phone]T01:00:00",
          "is_current": true,
          "coordinates": {
            "lat": "[trimmed-depth]",
            "lon": "[trimmed-depth]"
          },
          "report_url": "https://www.gdacs.org/report.aspx?eventid=1104025&episodeid=1&eventtype=FL",
          "distance_km": 294.6
        }
      ],
      "count": 3,
      "days": 7,
      "radius_km": 300,
      "window_truncated": {
        "earthquake": true,
        "tropical_cyclone": false,
        "flood": false,
        "volcano": false,
        "wildfire": true,
        "drought": false
      }
    },
    "risk_summary": {
      "level": "moderate",
      "score": 1,
      "reasons": [
        "official warning: heavy thunderstorms with gale- or storm-force gusts, heavy rain and hail",
        "official warning: heavy rain",
        "official warning: gale-force gusts"
      ],
      "confidence": "high"
    },
    "sources": {
      "weather": {
        "source": "MET Norway Locationforecast 2.0",
        "source_url": "https://api.met.no",
        "license": "CC BY 4.0",
        "source_updated_at": "[redacted-phone]T17:16:09Z",
        "fetched_at": "[redacted-phone]T17:20:45Z",
        "staleness_minutes": 4,
        "stale": false,
        "confidence": "high"
      },
      "air_quality": {
        "source": "OpenAQ v3",
        "source_url": "https://openaq.org",
        "license": "per-source (attribution required)",
        "source_updated_at": "[redacted-phone]T16:00:00Z",
        "fetched_at": "[redacted-phone]T17:20:47Z",
        "staleness_minutes": 80,
        "stale": false,
        "confidence": "high"
      },
      "alerts": {
        "source": "EUMETNET MeteoAlarm",
        "source_url": "https://meteoalarm.org",
        "license": "CC BY 4.0",
        "source_updated_at": "[redacted-phone]T16:31:00+00:00",
        "fetched_at": "[redacted-phone]T17:20:50Z",
        "staleness_minutes": 49,
        "stale": false,
        "confidence": "high"
      },
      "hazards": {
        "source": "GDACS (EC-JRC/UN OCHA)",
        "source_url": "https://www.gdacs.org",
        "license": "open data, source acknowledgment",
        "source_updated_at": null,
        "fetched_at": "[redacted-phone]T17:20:47Z",
        "staleness_minutes": 0,
        "stale": false,
        "confidence": "high"
      }
    },
    "attribution": [
      "Weather data by the Norwegian Meteorological Institute (MET Norway), CC BY 4.0 — https://api.met.no",
      "Air-quality measurements via OpenAQ (openaq.org); underlying data licensed by each originating source (attribution required)",
      "Alert data © EUMETNET MeteoAlarm (meteoalarm.org), CC BY 4.0 — time-delayed redistribution; may be incomplete or outdated; NOT the official source"
    ],
    "disclaimer": "Informational only — NOT for life-safety decisions. Always follow your national meteorological/civil-protection authority for warnings."
  }
}
Actions

What the Weather & Hazards API API does

ActionDescriptionConcrete use caseKey params
environment_currentpremium combined snapshot: current weather + AQ + active alerts + nearby hazards + risk_summary{level,reasons,confidence} for a coordinateOps teams call environment_current to get premium combined snapshot.lat, lon, units, include, radius_km
forecastglobal point forecast (MET Norway, ~9 days): hourly steps + daily aggregates with normalized weather-code, feels-like, sunrise/sunset/moon. Optional source=us_nws returns the US-official National Weather Service forecast for US coordinates (api.weather.gov, public domain)Developer tools call forecast to get global point forecast (MET Norway, ~9 days).lat, lon, units, hours, days, ...
air_qualitynearest-station air quality (OpenAQ v3): pollutants + computed AQI-US/EAQI-EU + station distance + measurement freshness; honest insufficient_data when no stationValidation workflows call air_quality to get nearest-station air quality (OpenAQ v3).lat, lon, radius_km
alertsofficial severe-weather warnings by country/US-state or coordinate: EU MeteoAlarm (39 countries) AND US NWS (api.weather.gov, all 50 states + territories + marine zones, via Webshare). The source is chosen automatically from the location; coverage/coverage_note name exactly which authority answeredData-quality teams call alerts to get official severe-weather warnings by country/US-state or coordinate.country, lat, lon, severity_min, active_only, ...
hazards_nearbyGDACS multi-hazard events (earthquake/cyclone/flood/volcano/wildfire/drought) within a radius of a coordinate, distance-sortedOps teams call hazards_nearby to get gDACS multi-hazard events (earthquake/cyclone/flood/volcano/wildfire/drought) within a radius….lat, lon, radius_km, days, types, ...
disastersglobal GDACS disaster events with type/alert-level/date/bbox filters, or a single-event detail via event_id+event_typeDeveloper tools call disasters to get global GDACS disaster events with type/alert-level/date/bbox filters, or a single-event detai….types, min_alert_level, days, bbox, country, ...
earthquakesUSGS earthquake catalog (earthquake.usgs.gov, public domain): filter by magnitude, radius, time window, depth, and PAGER alert — includes small and medium-magnitude events that disaster aggregators like GDACS omit. Results are distance-sorted around a coordinate. Pass event_id for a single-event detail.Validation workflows call earthquakes to get uSGS earthquake catalog (earthquake.usgs.gov, public domain).lat, lon, radius_km, min_magnitude, max_magnitude, ...
natural_eventsNASA EONET natural-event catalog (eonet.gsfc.nasa.gov, NASA open data): wildfires, severe storms, volcanoes, floods, icebergs, dust/haze — a second independent hazard source alongside GDACS. Filter by category, status, and date range; optionally list the full EONET category taxonomy.Data-quality teams call natural_events to get nASA EONET natural-event catalog (eonet.gsfc.nasa.gov, NASA open data).category, status, days, bbox, limit, ...
firesLive wildfire and thermal-anomaly hotspots from NASA FIRMS (firms.modaps.eosdis.nasa.gov, NASA open data): pixel-level VIIRS (375 m) and MODIS (1 km) near-real-time detections — the raw sensor data that disaster aggregators like GDACS and EONET do not include. Query by a coordinate radius or a bounding box; each hotspot includes brightness, Fire Radiative Power (FRP), confidence, day/night flag, and the exact acquisition timestamp.Ops teams call fires to get live wildfire and thermal-anomaly hotspots from NASA FIRMS (firms.modaps.eosdis.nasa.gov, NAS….lat, lon, radius_km, bbox, sensor, ...
geocodePlace name → coordinates (Open-Meteo Geocoding, GeoNames-backed, free/keyless): turns a city/town/region name into the lat/lon every other weather-intel action needs, with country, region (admin1/2), population, timezone and elevation. Pass 'id' (a GeoNames id from a prior result) for the single canonical record instead of a name search.Developer tools call geocode to get place name → coordinates (Open-Meteo Geocoding, GeoNames-backed, free/keyless).name, id, language, count
historicalHistorical weather (Open-Meteo Archive / ERA5 reanalysis, 1940→present, free/keyless) for a coordinate and date range: daily aggregates (min/max temp, precipitation, wind, weather-code, sunrise/sunset) and/or hourly variables. The live forecast actions exclude history — this is the long-record companion. Default daily set is returned when neither 'daily' nor 'hourly' is specified.Validation workflows call historical to get historical weather (Open-Meteo Archive / ERA5 reanalysis, 1940→present, free/keyless) for a c….lat, lon, start_date, end_date, units, ...
marineMarine / ocean-wave forecast (Open-Meteo Marine, free/keyless) for a coordinate: significant wave height, period and direction plus swell and wind-wave components — hourly out to several days, plus daily maxima and the current sea state. On land (no marine grid cell) values are honestly null (never fabricated).Data-quality teams call marine to get marine / ocean-wave forecast (Open-Meteo Marine, free/keyless) for a coordinate.lat, lon, units, forecast_days, hourly, ...
air_quality_forecastAir-quality FORECAST + pollen (Open-Meteo Air-Quality, CAMS-backed, free/keyless) for a coordinate: hourly forecast of PM2.5/PM10/O3/NO2/SO2/CO, the European AQI and US AQI, plus European pollen (alder/birch/grass/olive/ragweed/mugwort). Complements the OpenAQ nearest-station `air_quality` (which is measured, current only) with a forward forecast and pollen — and needs NO API key. Pollen is European-domain only; outside Europe it is honestly null.Ops teams call air_quality_forecast to get air-quality FORECAST + pollen (Open-Meteo Air-Quality, CAMS-backed, free/keyless) for a coord….lat, lon, forecast_days, hourly, current
Code samples

Call environment_current from your stack

curl -X POST https://api.reefapi.com/weather-intel/v1/environment_current \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"lat":52.52,"lon":13.405}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.weather-intel.environment_current with {"lat":52.52,"lon":13.405}.
Use cases

Who uses this API and why

  • Weather apps call environment_current and forecast to show conditions.
  • Logistics uses alerts and hazards_nearby to route around severe weather.
  • Risk tools use disasters and earthquakes to monitor exposure.
FAQ

Questions developers ask before integrating

What is the Weather & Hazards API API?

Weather & Hazards API API is a ReefAPI endpoint group for weather & hazards api It returns live JSON through POST requests under /weather-intel/v1.

Is the Weather & Hazards API API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Weather & Hazards API calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Weather & Hazards API login or account?

No login to Weather & Hazards API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Weather & Hazards API data?

The page example is captured from a live environment_current call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Weather & Hazards API API use?

Weather & Hazards API actions currently cost 1-3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Weather & Hazards API from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call weather-intel actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Weather & Hazards API API a Weather & Hazards API scraper?

It is the managed alternative to a DIY Weather & Hazards API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same weather & hazards api back as clean JSON.

Why does my Weather & Hazards API scraper keep getting blocked?

Most Weather & Hazards API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / weather-intel

Weather & Hazards API

Weather & Hazards API

base /weather-intel/v113 endpoints
post/weather-intel/v1/environment_current3 credits

premium combined snapshot: current weather + AQ + active alerts + nearby hazards + risk_summary{level,reasons,confidence} for a coordinate

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
units = metricoptionalmetric · imperialUnit system for temperatures, wind speeds and precipitation.
includeoptionalComma-separated blocks to include: weather, air_quality, alerts, hazards. Default: all.
radius_km = 300optional1–2000Search radius in km around the point for nearby hazards (1..2000).
Try in playground →
post/weather-intel/v1/forecast1 credit

global point forecast (MET Norway, ~9 days): hourly steps + daily aggregates with normalized weather-code, feels-like, sunrise/sunset/moon. Optional source=us_nws returns the US-official National Weather Service forecast for US coordinates (api.weather.gov, public domain)

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
units = metricoptionalmetric · imperialUnit system for temperatures, wind speeds and precipitation.
hours = 24optional1–90Number of forecast steps to return (hourly for ~2.5 days, then 6-hourly to ~day 9 — each step carries its timestamp).
days = 7optional1–10Number of days (1..10).
source = autooptionalauto · met · us_nwsForecast source. 'us_nws' returns the US-official NWS gridpoint forecast (US coordinates only); 'met'/'auto' use MET Norway global.
Try in playground →
post/weather-intel/v1/air_quality1 credit

nearest-station air quality (OpenAQ v3): pollutants + computed AQI-US/EAQI-EU + station distance + measurement freshness; honest insufficient_data when no station

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
radius_km = 10optional1–25Search radius in km around the point for monitoring stations (1..25).
Try in playground →
post/weather-intel/v1/alerts1 credit

official severe-weather warnings by country/US-state or coordinate: EU MeteoAlarm (39 countries) AND US NWS (api.weather.gov, all 50 states + territories + marine zones, via Webshare). The source is chosen automatically from the location; coverage/coverage_note name exactly which authority answered

ParameterAllowed / rangeDescription
countryoptionalMeteoAlarm member country (EU) — slug or ISO2 — OR a US state/marine code (e.g. CA, TX, NY) which routes to NWS api.weather.gov. Alternative to lat/lon.
latoptional-90–90Latitude (alternative to country) — resolved to a MeteoAlarm country (EU) or NWS coverage (US).
lonoptional-180–180Longitude (alternative to country).
severity_minoptionalyellow · orange · redMinimum awareness color (MeteoAlarm yellow/orange/red).
active_only = trueoptionalOnly warnings active NOW (onset<=now<expires). false = full feed.
limit = 50optional1–200Maximum records to return (1..200).
Try in playground →
post/weather-intel/v1/hazards_nearby1 credit

GDACS multi-hazard events (earthquake/cyclone/flood/volcano/wildfire/drought) within a radius of a coordinate, distance-sorted

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
radius_km = 500optional1–5000Search radius in km around the point for hazard events (1..5000).
days = 14optional1–365Number of days (1..365).
typesoptionalComma-separated disaster types: earthquake, tropical_cyclone, flood, volcano, wildfire, drought (or GDACS codes EQ/TC/FL/VO/WF/DR). Default: all.
min_alert_level = greenoptionalgreen · orange · redMinimum GDACS alert level to include.
limit = 50optional1–200Maximum records to return (1..200).
Try in playground →
post/weather-intel/v1/disasters1 credit

global GDACS disaster events with type/alert-level/date/bbox filters, or a single-event detail via event_id+event_type

ParameterAllowed / rangeDescription
typesoptionalComma-separated disaster types: earthquake, tropical_cyclone, flood, volcano, wildfire, drought (or GDACS codes EQ/TC/FL/VO/WF/DR). Default: all.
min_alert_level = greenoptionalgreen · orange · redMinimum GDACS alert level to include.
days = 30optional1–365Number of days (1..365).
bboxoptionalBounding-box filter 'min_lon,min_lat,max_lon,max_lat' applied to event coordinates.
countryoptionalFilter by GDACS country name or ISO3 (case-insensitive substring).
limit = 100optional1–300Maximum records to return (1..300).
event_idoptionalGDACS event id — returns the single-event detail (use with event_type code, e.g. EQ).
event_typeoptionalEQ · TC · FL · VO · WF · DRGDACS event type code for event_id detail lookups.
Try in playground →
post/weather-intel/v1/earthquakes1 credit

USGS earthquake catalog (earthquake.usgs.gov, public domain): filter by magnitude, radius, time window, depth, and PAGER alert — includes small and medium-magnitude events that disaster aggregators like GDACS omit. Results are distance-sorted around a coordinate. Pass event_id for a single-event detail.

ParameterAllowed / rangeDescription
latoptional-90–90Latitude for a radius search (with lon + radius_km).
lonoptional-180–180Longitude for a radius search.
radius_km = 500optional1–20000Search radius in km around the point for earthquake epicentres (1..20000).
min_magnitudeoptional-1–10Minimum earthquake magnitude (USGS). Omit for the full catalog (includes micro-quakes M<2.5 that GDACS never lists).
max_magnitudeoptional-1–10Maximum earthquake magnitude (USGS).
days = 7optional1–365Number of days (1..365).
startoptionalISO start time (overrides days), e.g. 2026-06-01.
endoptionalISO end time.
min_depth_kmoptional-100–1000Minimum hypocenter depth (km).
max_depth_kmoptional-100–1000Maximum hypocenter depth (km).
order = timeoptionaltime · time-asc · magnitude · magnitude-ascSort order for the USGS earthquake catalog.
pager_alertoptionalgreen · yellow · orange · redFilter to quakes with at least this USGS PAGER impact alert.
limit = 100optional1–1000Maximum records to return (1..1000).
event_idoptionalUSGS event id — returns the single-event detail.
Try in playground →
post/weather-intel/v1/natural_events1 credit

NASA EONET natural-event catalog (eonet.gsfc.nasa.gov, NASA open data): wildfires, severe storms, volcanoes, floods, icebergs, dust/haze — a second independent hazard source alongside GDACS. Filter by category, status, and date range; optionally list the full EONET category taxonomy.

ParameterAllowed / rangeDescription
categoryoptionaldrought · dustHaze · earthquakes · floods · landslides · manmade · seaLakeIce · severeStorms · snow · tempExtremes · volcanoes · waterColor · wildfiresNASA EONET natural-event category filter.
status = openoptionalopen · closed · allEONET event status: open (ongoing), closed, or all.
days = 60optional1–365Number of days (1..365).
bboxoptionalBounding-box filter 'min_lon,min_lat,max_lon,max_lat' applied to event coordinates.
limit = 50optional1–200Maximum records to return (1..200).
list_categories = falseoptionalReturn the EONET category taxonomy instead of events.
Try in playground →
post/weather-intel/v1/fires1 credit

Live wildfire and thermal-anomaly hotspots from NASA FIRMS (firms.modaps.eosdis.nasa.gov, NASA open data): pixel-level VIIRS (375 m) and MODIS (1 km) near-real-time detections — the raw sensor data that disaster aggregators like GDACS and EONET do not include. Query by a coordinate radius or a bounding box; each hotspot includes brightness, Fire Radiative Power (FRP), confidence, day/night flag, and the exact acquisition timestamp.

ParameterAllowed / rangeDescription
latoptional-90–90Latitude for a radius search (with lon + radius_km); alternative to bbox.
lonoptional-180–180Longitude for a radius search; alternative to bbox.
radius_km = 100optional1–1000Search radius in km around the point for active-fire hotspots (1..1000).
bboxoptionalBounding box 'min_lon,min_lat,max_lon,max_lat' — alternative to lat/lon/radius_km (FIRMS area query).
sensor = viirs_snppoptionalviirs_snpp · viirs_noaa20 · viirs_noaa21 · modisSatellite sensor for fire detection. VIIRS (375 m resolution) gives the finest detail; MODIS (1 km) covers the longest historical record. All feeds are near-real-time (NRT) from NASA FIRMS.
days = 1optional1–10Look-back window in days (1..10) for NRT detections.
min_confidenceoptionallow · nominal · highMinimum detection confidence (VIIRS low/nominal/high; MODIS percent mapped to the same bands at 30/80).
min_frpoptional0–100000Minimum Fire Radiative Power in megawatts — filters out the smallest thermal anomalies.
limit = 200optional1–1000Maximum records to return (1..1000).
Try in playground →
post/weather-intel/v1/geocode1 credit

Place name → coordinates (Open-Meteo Geocoding, GeoNames-backed, free/keyless): turns a city/town/region name into the lat/lon every other weather-intel action needs, with country, region (admin1/2), population, timezone and elevation. Pass 'id' (a GeoNames id from a prior result) for the single canonical record instead of a name search.

ParameterAllowed / rangeDescription
nameoptionalPlace name to search for (city, town, region) — at least 2 characters. Returns matching locations with coordinates. Pass 'id' instead to look up a specific GeoNames id.
idoptionalGeoNames id (from a prior search result's 'id') to fetch the single canonical place record. Alternative to 'name'.
language = enoptionalResult language (ISO-639-1, e.g. en, de, fr, tr, es). Affects the localized place/country/region names.
count = 10optional1–100Maximum number of place matches to return (1..100).
Try in playground →
post/weather-intel/v1/historical2 credits

Historical weather (Open-Meteo Archive / ERA5 reanalysis, 1940→present, free/keyless) for a coordinate and date range: daily aggregates (min/max temp, precipitation, wind, weather-code, sunrise/sunset) and/or hourly variables. The live forecast actions exclude history — this is the long-record companion. Default daily set is returned when neither 'daily' nor 'hourly' is specified.

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
start_daterequiredStart date (ISO YYYY-MM-DD), 1940-01-01 or later.
end_daterequiredEnd date (ISO YYYY-MM-DD), on/after start_date. ERA5 archive lags the present by ~5 days.
units = metricoptionalmetric · imperialUnit system for temperatures, wind speeds and precipitation.
dailyoptionalComma-separated DAILY variables (Open-Meteo names), e.g. temperature_2m_max, temperature_2m_min, precipitation_sum, rain_sum, snowfall_sum, weather_code, apparent_temperature_max, wind_speed_10m_max, sunrise, sunset. Default set used if both daily+hourly omitted.
hourlyoptionalComma-separated HOURLY variables (Open-Meteo names), e.g. temperature_2m, relative_humidity_2m, precipitation, wind_speed_10m, pressure_msl, cloud_cover, weather_code. Optional — omit for daily-only.
Try in playground →
post/weather-intel/v1/marine1 credit

Marine / ocean-wave forecast (Open-Meteo Marine, free/keyless) for a coordinate: significant wave height, period and direction plus swell and wind-wave components — hourly out to several days, plus daily maxima and the current sea state. On land (no marine grid cell) values are honestly null (never fabricated).

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
units = metricoptionalmetric · imperialUnit system for temperatures, wind speeds and precipitation.
forecast_days = 3optional1–8Number of forecast days for wave data (1..8).
hourlyoptionalComma-separated HOURLY wave variables, e.g. wave_height, wave_direction, wave_period, swell_wave_height, swell_wave_direction, swell_wave_period, wind_wave_height, wind_wave_direction. Default set used if omitted.
dailyoptionalComma-separated DAILY wave variables, e.g. wave_height_max, wave_direction_dominant, wave_period_max, swell_wave_height_max.
current = trueoptionalInclude the current sea state (wave_height, direction, period, swell, wind-wave).
Try in playground →
post/weather-intel/v1/air_quality_forecast1 credit

Air-quality FORECAST + pollen (Open-Meteo Air-Quality, CAMS-backed, free/keyless) for a coordinate: hourly forecast of PM2.5/PM10/O3/NO2/SO2/CO, the European AQI and US AQI, plus European pollen (alder/birch/grass/olive/ragweed/mugwort). Complements the OpenAQ nearest-station `air_quality` (which is measured, current only) with a forward forecast and pollen — and needs NO API key. Pollen is European-domain only; outside Europe it is honestly null.

ParameterAllowed / rangeDescription
latrequired-90–90Latitude in decimal degrees (WGS84), -90..90.
lonrequired-180–180Longitude in decimal degrees (WGS84), -180..180.
forecast_days = 3optional1–7Number of forecast days for air quality (1..7).
hourlyoptionalComma-separated HOURLY variables, e.g. pm2_5, pm10, ozone, nitrogen_dioxide, sulphur_dioxide, carbon_monoxide, european_aqi, us_aqi, uv_index, alder_pollen, birch_pollen, grass_pollen, olive_pollen, ragweed_pollen, mugwort_pollen. Default set used if omitted.
current = trueoptionalInclude the current-hour AQ + pollen snapshot.
Try in playground →