---
title: "Storm and hazard event history by county (NOAA)"
method: POST
path: "/api/locus-storm-events"
tags: ["weather", "hazards", "ownership-loop", "read-only", "paid", "x402", "category:hazard"]
---

# Storm and hazard event history by county (NOAA)

`POST /api/locus-storm-events`

## Request

- Base URL: `https://api.locus.report`
- URL: `https://api.locus.report/api/locus-storm-events`
- Auth: one of:
  - API key in header `PAYMENT-SIGNATURE`
  - API key in header `Authorization`

Returns dated NOAA Storm Events Database records for a county from 1950 to present: event type, date, damage estimates, and narrative. Returns the same records as locus_storm_events. Use this when your client can only call paid x402 routes. Use locus_storm_events instead when you can call Locus free tools (REST tools/call or MCP).

## Request body

- object
  - `address` string: Optional US street address or place; NC uses AddressNC first, other areas use the national geocoder fallback when latitude/longitude are not provided.
  - `latitude` number: Optional decimal latitude; provide with longitude to skip address geocoding.
  - `longitude` number: Optional decimal longitude; provide with latitude to skip address geocoding.
  - `place` string: Optional US place or address; use a street address or unambiguous place with state when FIPS are not provided.
  - `stateFips` string: Optional state FIPS, e.g. 37 for NC. Omit to resolve from the address/place/point.
  - `countyName` string: Optional county name as NOAA labels it, e.g. Wake. Omit to resolve from the address/place/point.
  - `countyFips3` string: Optional 3-digit county FIPS, e.g. 183 for Wake. Omit to resolve from the address/place/point.
  - `beginYear` integer: Optional start year for NOAA events; default source helper range starts at 1950.
  - `endYear` integer: Optional end year for NOAA events; omit for latest available year.

## Response `200`

Atomic read result. A substantive result is paid; an empty/out-of-coverage result carries charged:false (x402 settlement suppressed).

- object

## Other responses

- `400`: Invalid request body.
- `402`: Payment Required. For x402 v2, repeat the identical request with a valid PAYMENT-SIGNATURE header (legacy X-PAYMENT is accepted for compatibility), or use Authorization: Payment for MPP Tempo when advertised in x-payment-info.offers.

---

[API](https://skmtc.dev/locus/apis/locus-api.md) · [All operations](https://skmtc.dev/locus/apis/locus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/locus/apis/locus-api/revisions/ba7786b74adb?raw)
