Get the FEMA flood zone for any US address in one API call
Send a street address, or a latitude and longitude. The JSON that comes back names the flood zone, says whether the point is in a Special Flood Hazard Area, gives the base flood elevation where FEMA publishes one, and identifies the FIRM panel and the date it took effect.
- 100 free calls a month, no card
- Paid plans from $19 a month
- Answers from FEMA's live National Flood Hazard Layer
curl -sG https://api.floodzoneapi.com/api/v1/flood/zone \
-H "Authorization: Bearer $FZA_KEY" \
--data-urlencode "address=1700 Convention Center Dr, Miami Beach, FL 33139"{
"query": {
"address": "1700 Convention Center Dr, Miami Beach, FL 33139"
},
"location": {
"lat": 25.792247,
"lon": -80.134934,
"geocoder": "census",
"precision": "address_range",
"matched_address": "1700 CONVENTION CENTER DR, MIAMI BEACH, FL, 33139",
"candidates": 1,
"county": "Miami-Dade County",
"county_fips": "12086",
"state": "FL"
},
"flood_zone": {
"mapped": true,
"zone": "AE",
"subtype": null,
"description": "1% annual chance flood hazard. Base flood elevations determined.",
"sfha": true,
"static_bfe": {
"elevation": 8.0,
"unit": "Feet",
"datum": "NGVD29"
},
"depth": null,
"dfirm_id": "12086C",
"polygon_id": "12086C_1179",
"at_zone_boundary": false,
"other_zones": []
},
"firm_panel": {
"panel": "12086C0317L",
"effective_date": "2009-09-11",
"panel_type": "Countywide, Panel Printed",
"dfirm_id": "12086C",
"other_panels": []
},
"source": {
"dataset": "FEMA National Flood Hazard Layer (NFHL)",
"service": "https://hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer",
"layers": [
{
"id": 28,
"name": "Flood Hazard Zones"
},
{
"id": 3,
"name": "FIRM Panels"
}
],
"query_point": {
"lat": 25.79225,
"lon": -80.13493
},
"queried_at": "2026-09-29T08:36:12Z",
"cached": true,
"cache_ttl_seconds": 86400
},
"notice": "Informational. This is the zone shown on FEMA's effective flood map (NFHL) at this point. It is not a Standard Flood Hazard Determination (FEMA Form 086-0-32), a prediction of flood risk, or an insurance quote, and it does not reflect a Letter of Map Amendment issued for a single structure."
}What comes back for each address
- flood_zone.zonesubtype, description
The zone on FEMA's effective map at the point (AE here), FEMA's subtype where there is one (for example "0.2 PCT ANNUAL CHANCE FLOOD HAZARD" or "FLOODWAY"), and a one-line definition from the FIRM legend.
- flood_zone.sfhatrue, false or null
Whether the point is in a Special Flood Hazard Area, the area where lenders that are federally regulated or backed must require flood insurance.
- flood_zone.static_bfeelevation, unit, datum
The base flood elevation FEMA publishes for the zone, with its unit and vertical datum. This answer is 8 feet in NGVD29; many newer maps use NAVD88, so compare elevations in the same datum.
- firm_panelpanel, effective_date, panel_type
The Flood Insurance Rate Map panel covering the point (12086C0317L) and the date it took effect (2009-09-11), so you can tell how current the map is. Where panels overlap at a county line, the others are listed.
- locationlat, lon, geocoder, precision
The point we looked up, the address we matched, which geocoder matched it and how precisely: interpolated along the street's address range (US Census) or a building point (OpenStreetMap).
- sourcelayers, queried_at, cached
The NFHL layers queried, when FEMA was asked, and whether the answer came from our 24-hour cache.
Every field, with types, in the reference
FEMA quirks you do not have to handle
- Dropped connections
- FEMA's map server resets TLS connections from some cloud hosting ranges, including ours on AWS. Our requests go through a relay FEMA accepts, so your server never talks to FEMA directly.
- Placeholder numbers
- FEMA stores a missing elevation as -9999 and some missing dates as 9999-09-09. You get
null. - Map seams
- Where two counties' panels overlap, you get the panel from the same map database as the zone polygon, with the others in
other_panels. - Zone boundaries
- A point on the line between two zones returns the more hazardous zone, with
at_zone_boundary: trueand the other zone listed. - Gaps in the digital map
- Where FEMA has no digital flood map, the answer says
"mapped": falseinstead of defaulting to Zone X. See the gaps by state. - Outages
- When FEMA or the geocoder does not answer you get a 503 with
Retry-After, and the call is not counted against your quota.
A zone lookup is not a flood determination
The zone is what FEMA's effective map shows at the point. It is not a Standard Flood Hazard Determination (FEMA Form 086-0-32), the form lenders use for a loan secured by a building, and it is not a prediction of whether a building will flood.
Since Risk Rating 2.0 (new NFIP policies from October 1, 2021, renewals from April 1, 2022) the zone does not by itself set an NFIP premium. A Letter of Map Amendment issued for a single building is not part of the map polygons, so a house with a LOMA can still show inside the SFHA here. Every response carries a notice saying this, so it travels with the data.
Plans
Every plan returns the same data from the same endpoint. Plans differ only in how many calls a month they include.