NOAA NCEI Natural Hazards API
Free natural hazards API with no key: NOAA's historical tsunami, significant earthquake and volcanic eruption databases, filterable by year, region and magnitude. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the NOAA NCEI Natural Hazards API?
NOAA's National Centers for Environmental Information publish their historical natural hazards databases as a keyless REST API. Tsunami events return the source earthquake's magnitude and depth, the location, the maximum observed water height and the number of recorded runups.
These are the authoritative historical catalogues — the tsunami database alone reaches back to 2000 BC, assembled from instrumental records, historical accounts and geological deposits. The API sits over the same data that underpins tsunami hazard assessment, and it is entirely open, which is not something you can say about most authoritative hazard datasets.
Interpreting the results requires attention to the confidence fields. `eventValidity` grades how certain the record is, running from definite tsunami down to erroneous entry, so an unfiltered query mixes well-instrumented modern events with contested historical accounts. `causeCode` distinguishes earthquake-generated events from volcanic, landslide and meteorological causes. And `numRunups` matters more than it first appears: an event with zero runups was detected instrumentally but produced no observed coastal effect. Each tsunami links to its source earthquake through `earthquakeEventId`, which resolves in the companion earthquakes endpoint.
Quick facts
- Base URL
https://www.ngdc.noaa.gov/hazel/hazard-service/api/v1- Authentication
- No API key and no registration. United States federal government open data.
- Rate limit
- No published limit. These are historical catalogues that change rarely.
- Pricing
- Free, public domain.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the NOAA NCEI Natural Hazards API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch tsunami events for a given year
GET https://www.ngdc.noaa.gov/hazel/hazard-service/api/v1/tsunamis/events?minYear=2011&maxYear=2011&itemsPerPage=2
curl 'https://www.ngdc.noaa.gov/hazel/hazard-service/api/v1/tsunamis/events?minYear=2011&maxYear=2011&itemsPerPage=2'const res = await fetch("https://www.ngdc.noaa.gov/hazel/hazard-service/api/v1/tsunamis/events?minYear=2011&maxYear=2011&itemsPerPage=2");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.ngdc.noaa.gov/hazel/hazard-service/api/v1/tsunamis/events?minYear=2011&maxYear=2011&itemsPerPage=2", timeout=20)
res.raise_for_status()
print(res.json()){
"items": [
{
"id": 5406,
"year": 2011,
"month": 2,
"day": 11,
"hour": 20,
"minute": 5,
"second": 30.7,
"eventValidity": 4,
"causeCode": 1,
"eqMagnitude": 6.8,
"earthquakeEventId": 9776,
"numDeposits": 0,
"country": "CHILE",
"locationName": "CENTRAL CHILE",
"regionCode": 89,
"latitude": -36.474,
"longitude": -73.125,
"maxWaterHeight": 0.15,
"numRunups": 1,
"warningStatusId": 4,
"publish": true,
"eqDepth": 28,
"oceanicTsunami": true
},
{
"id": 5407,
"year": 2011,
"month": 2,
"day": 21,
"hour": 23,
"minute": 51,
"second": 42.3,
"eventValidity": 2,
"causeCode": 3,
"eqMagnitude": 6.1,
"earthquakeEventId": 9779,
"numDeposits": 0,
"country": "NEW ZEALAND",
"locationName": "SOUTH ISLAND",
"regionCode": 81,
"latitude": -43.583,
"longitude": 172.68,
"maxWaterHeight": 3.5,
"numRunups": 1,
"deathsTotal": 185,
"deathsAmountOrderTotal": 3,
"injuriesTotal": 1500,
"injuriesAmountOrderTotal": 4,
"damageMillionsDollarsTotal": 15000,
"damageAmountOrderTotal": 4,
"housesDestroyedTotal": 100000,
"housesDestroyedAmountOrderTotal": 4,
"publish": true,
"eqDepth": 6,
"oceanicTsunami": true
}
],
"page": 1,
"totalPages": 11,
"itemsPerPage": 2,
"totalItems": 21
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
minYear / maxYear | query | Optional | Bound the event year. Negative values address years BC. 2011 |
itemsPerPage | query | Optional | Page size. 2 |
page | query | Optional | 1-based page number. 1 |
country | query | Optional | Filter by country name, in the database's uppercase convention. CHILE |
minEqMagnitude | query | Optional | Minimum source earthquake magnitude. 7 |
/earthquakes/events | path | Optional | The significant earthquakes catalogue, same query grammar. |
/volcanoes/events | path | Optional | The significant volcanic eruptions catalogue. |
Response fields
itemsarray- The matching hazard events.
items[].idinteger- Database identifier for the event.
items[].year / month / day / hour / minute / secondinteger / float- Event time as separate components, not a timestamp. Historical entries are frequently missing the finer parts.
items[].country / locationName / regionCodestring / integer- Where it happened, with country names in uppercase and a numeric ocean or region code.
items[].latitude / longitudefloat- Source coordinates in decimal degrees.
items[].eqMagnitude / eqDepthfloat / integer- Magnitude and depth in kilometres of the source earthquake, when there was one.
items[].earthquakeEventIdinteger- Link into the companion earthquakes catalogue for the source event.
items[].maxWaterHeightfloat- Maximum observed water height in metres across all runup observations.
items[].numRunupsinteger- How many coastal runup observations exist. Zero means instrumentally detected with no observed coastal effect.
items[].numDepositsinteger- Count of associated geological deposit records, which is how prehistoric events are evidenced.
items[].eventValidityinteger- Confidence grade for the record, from definite down to erroneous. Filter on it before analysis.
items[].causeCodeinteger- What generated the tsunami — earthquake, volcanic activity, landslide or meteorological.
items[].oceanicTsunami / publishboolean- Whether it propagated across an ocean basin, and whether the record is published.
What you can build with the NOAA NCEI Natural Hazards API
- Map historical tsunami sources for a coastline
- Analyse the relationship between earthquake magnitude and water height
- Build a natural hazards timeline for a region
- Cross-reference tsunami events with their source earthquakes
Common errors and how to fix them
Dates cannot be parsed
Time is split across separate integer fields with no timestamp.
Fix: Assemble it yourself, and handle nulls — historical records often have only a year.
Implausible historical events
The catalogue includes contested and erroneous entries by design.
Fix: Filter on `eventValidity` before drawing any conclusion. Unfiltered queries mix instrumented and anecdotal records.
Zero water height on a real tsunami
`numRunups` is zero — it was detected but produced no observed coastal effect.
Fix: Read the two fields together rather than treating a zero height as missing data.
Country filter returns nothing
Country names use the database's uppercase convention.
Fix: Send `CHILE` rather than `Chile`, and check spelling against values already in the data.
NOAA NCEI Natural Hazards API — frequently asked questions
Is the NOAA hazards API free?
Yes, free with no key and no registration. It is United States federal government open data and in the public domain.
How far back does the tsunami database go?
To 2000 BC, combining instrumental records, historical accounts and geological deposit evidence. Negative year values address years BC in the query parameters.
What does eventValidity mean?
A confidence grade for the record, running from a definite tsunami down to an entry judged erroneous. The catalogue deliberately retains doubtful records, so filter on this before any analysis.
Can I link a tsunami to its earthquake?
Yes. `earthquakeEventId` resolves in the companion significant earthquakes endpoint, which shares the same query grammar.
Tools that pair with this API
Coordinate Converter
Convert GPS coordinates between decimal degrees, degrees-minutes-seconds and decimal minutes instantly. Paste any format like 40°26'46"N and copy the result.
Distance Calculator
Calculate the straight-line distance and bearing between two points on a map by latitude/longitude using the Haversine formula — km, miles and nautical miles.
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
NOAA NCEI Natural Hazards is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.