Download OpenAPI specification:Download
The FEMA Flood Map API offers up-to-date FEMA flood zone maps and data that can be easily embedded into partners' products or workflow. Our data service is used by insurance companies, appraisers, real estate investors and software companies that offer services to these industries.
We offer the data in the various formats described below to meet a variety of partner use cases. If you have a particular need that you don't see met by the services below, please contact us and we'll likely be able to add what you need.
Queries to the v3 API require a key provided by National Flood Data, and the key must be provided in a request header using the key "X-API-KEY". The key cannot be supplied as a parameter, and therefore the API cannot be accessed through a simple web browser. To obtain a key, log-in or register
The v3 API implements a rate limit of four requests per second with a burst limit of three, i.e. at most three requests will be processed simultaneously.
The core of the FEMA flood maps API is the "flood zone" that is assigned to each region. This value is returned as the fld_zone
field from the s_fld_haz_ar
layer. Definitions for the zones are below.
Flood Zone | Description |
---|---|
A | An area with a 1% annual chance of flood; does not have base flood elevations (BFEs) available. |
AE | An area with a 1% annual chance of flood; base flood elevations BFEs are available. |
AH | An area with a 1% annual chance of flood with flood depths ranging from 1 to 3 feet, generally near pond or pooling areas. BFEs are available. |
AO | An area with a 1% annual chance of flood with flood depths ranging from 1 to 3 feet, generally sheet flow on sloping terrain. BFEs are available. |
AR | An area inundated by flooding, for which BFEs or average depths have been determined. This is an area that was previously, and will again, be protected from the 1% annual chance flood by a Federal flood protection system whose restoration is Federally funded and underway |
A1-A30 | An area with a 1% annual chance flooding, for which BFEs have been determined. |
B, X500 | An area with at least a 0.2% chance of annual flood or with a 1% annual chance of flood with average depths less that one foot or with drainage area less than one square mile. (C is the older designation and X500 is the current designation.) |
C, X | An area outside the 0.2% and 1% annual chance of flood regions. (C is the older designation and X500 is the current designation.) |
D | An area where flooding is possible but has not been studied. |
V | An area with a 1% annual chance flooding with velocity hazard due to waves; BFEs have are not available. |
VE, V1-V30 | An area with a 1% annual chance flooding with velocity hazard due to waves; BFEs have are available. |
The API field bfe_type
describes how the base flood elevation for a region was determined.
bfe_type | description |
---|---|
provided | The base flood elevation is provided by FEMA within the flood zone layer. |
matched | The base flood elevation is provided by FEMA in an additional later, and that layer only has one base flood elevation transect that intersects the flood zone polygon. |
interpolated | The base flood elevation is provided by FEMA in an additional later. More than one base flood elevation transect intersects the flood zone polygon, and the closest value of these is used. |
extrapolated | No base flood elevation is provided by FEMA for the flood zone polygon. A value is extrapolated from neighboring values. |
The API returns the distance to nearest ten bodies of water. The bodies of water considered are those provided in the USGS National Hydrological Data (NHD) Set with an area greater than 0.25 square kilometers. Streams and not included. The USGS also generally does not include reservoirs, and therefore distance to these are not included.
Key | Description |
---|---|
areasqkm | area of the polygon in square meters (a body of water may be made of multiple polygons) |
distkm | distance to the body of water in kilometers |
filename | name of the file from USGS containing the body of water |
gnis_id | unique identifier provided by USGS |
name | name of body of water, generally only available for larger bodies of water |
state | US state that the body of water is in |
searchtype required | string Enum: "addresscoord" "addressparcel" "coord" "coordparcel" "polygon" Specification of location type |
address | string Example: address=12 Maple Pl Mapleville KS 12345 address with street number, street type, city, state, zip and without punctuation. Required for searchtypes |
lat | number Example: lat=34.071783 Location's latitude. Required for searchtype |
lng | number Example: lng=-118.2596 Location's longitude. Required for searchtype |
polygon | string Polygon in well known text format |
loma | boolean Default: false Include LOMA updates |
elevation | boolean Default: false Include Elevation Data (Elevation, BFE, Stormsurge) (Special key required) |
property | boolean Default: false Include property data (Only for seachtype addressparcel) (Special key required) |
parcel | boolean Default: false Include parcel data (Special key required) |
x-api-key required | string API Key needed for authentication |
headers = {'x-api-key':'YOUR KEY'} # Get data without BFE payload = { 'lat': 34.071783, 'lng': -118.2596, 'searchtype':'addresscoord', 'loma': False } r = requests.get('https://api.nationalflooddata.com/v3/data', headers=headers, params=payload) # Get data with BFE payload = { 'address':'430 Australian Ave Palm Beach, FL 33480', 'searchtype':'addressparcel', 'loma': False 'elevation': True } r = requests.get('https://api.nationalflooddata.com/v3/data', headers=headers, params=payload)
{- "parceladdress": null,
- "geocode": {
- "relevance": 1,
- "matchLevel": "houseNumber",
- "label": "521 Saguaro Dr, Fort Worth, TX 76177, United States",
- "latitude": 26.70319,
- "longitude": -80.04238
}, - "coords": {
- "lat": null,
- "lng": null
}, - "result": {
- "loma": [
- {
- "casenumber": "14-05-8454A",
- "cid": "390319",
- "communityn": "PAINESVILLE, CITY OF",
- "dateended": "2014-09-04",
- "determinat": "DetermLetter",
- "lat": "41.170999999999999",
- "lon": "-81.260999999999996",
- "miles": 0.0012070620614019194,
- "pdfhyperli": "14-05-8454A-390319",
- "projectcat": "LOMA",
- "projectnam": "THE PAINESVILLE INDUSTRIAL PARK SUBDIVISION, SUBLOT 12 -- 440 WEST PROSPECT STREET",
- "status": "Completed"
}
], - "flood.s_firm_pan": [
- {
- "suffix": "F",
- "pnp_reason": null,
- "firm_pan": "12099C0583F",
- "eff_date": "2017-10-05",
- "firm_id": "12099C_185",
- "dfirm_id": "12099C",
- "st_fips": "12",
- "panel_typ": "Countywide, Panel Printed",
- "panel": "0583"
}
], - "flood.s_fld_haz_ar": [
- {
- "fld_ar_id": "12099C_20011",
- "version_id": "1.1.1.0",
- "sfha_tf": "T",
- "zone_subty": null,
- "source_cit": "12099C_STUDY1",
- "fld_zone": "AE",
- "dfirm_id": "12099C"
}
], - "flood.s_pol_ar": [
- {
- "comm_no": "0220",
- "pol_name1": "Town Of Palm Beach",
- "co_fips": "099",
- "cid": "120220",
- "com_nfo_id": "12099C_28",
- "pol_ar_id": "12099C_16"
}
], - "census_bureau": {
- "census_block": "120990035092",
- "cbsa": {
- "cbsafp": "42600",
- "name": "example cbsa name"
}, - "metdiv": {
- "metdivfp": "42644",
- "name": "example metdiv name"
}
}, - "community": {
- "firm": "string",
- "regemer_sanction": "05/15/78 ",
- "tribal": "No ",
- "notes": null,
- "comm_name": "string",
- "comm_part": true,
- "fhbm": "09/13/74 ",
- "curreff": "10/05/17 "
}, - "elevation": {
- "propertyelevation": 268.38,
- "flood.basefloodelevation": [
- {
- "bfe_ln_id": null,
- "bfe_type": "provided",
- "dfirm_id": "12099C",
- "distkm": 0,
- "elevation": "6.0",
- "fld_ar_id": "12099C_20008",
- "fld_zone": "AE",
- "len_unit": "Feet",
- "v_datum": "NAVD88",
- "zone_subty": null
}
], - "coastline": [
- {
- "distkm": 0.183983579961924,
- "ogc_fid": 3442,
- "closestpoint": {
- "lat": null,
- "lng": null
}, - "closestpoint_property": {
- "lat": null,
- "lng": null
}
}
], - "waterbody": [
- {
- "areasqkm": "29.66",
- "distkm": 0.183983579961924,
- "gnis_id": "00293537",
- "name": "Lake Worth",
- "objectid": "67454",
- "ogc_fid": 3442,
- "state": "Florida",
- "closestpoint": {
- "lat": null,
- "lng": null
}, - "closestpoint_property": {
- "lat": null,
- "lng": null
}
}
], - "rivers": [
- {
- "id": "6340",
- "name": "Snake River",
- "distkm": 0.183983579961924,
- "closestpoint": {
- "lat": null,
- "lng": null
}, - "closestpoint_property": {
- "lat": null,
- "lng": null
}
}
], - "coastalbarrier": [
- {
- "unit": "A01",
- "name": "Lubec Barriers",
- "cbrs_type": "System Unit",
- "fi_date": "1983-10-01",
- "su_date": "1982-10-18",
- "distkm": 0.183983579961924,
- "closestpoint": {
- "lat": null,
- "lng": null
}, - "closestpoint_property": {
- "lat": null,
- "lng": null
}
}
], - "coastalbarrier_buffer": [
- {
- "id": "1",
- "buff_dist": "20",
- "distkm": 0.183983579961924,
- "closestpoint": {
- "lat": null,
- "lng": null
}, - "closestpoint_property": {
- "lat": null,
- "lng": null
}
}
], - "stormsurge": {
- "1": null,
- "2": 1,
- "3": 1,
- "4": 3,
- "5": 3
}
}, - "property": {
- "sqft": "1200",
- "yearbuilt": "2001",
- "propertyusedescription": "Multi Family: Multi-family Dwellings (Generic, Any Combination)",
- "constructiondesc": "23",
- "storiescount": "3",
- "fireresistance": "",
- "parkinggaragetype": "",
- "parkinggaragearea": "0"
}
}, - "match_type": null
}
apiKey | string |
Array of objects |
{- "apiKey": "string",
- "requests": [
- {
- "id": "string",
- "searchtype": "string",
- "address": "12 Maple Pl Mapleville KS 12345",
- "lat": 34.071783,
- "lng": -118.2596,
- "polygon": { },
- "loma": { },
- "elevation": { },
- "property": { },
- "parcel": { }
}
]
}
{- "batch_id": "string",
- "result": "string"
}
lat required | number |
lng required | number |
size | number Default: 0.08 Enum: 0.04 0.06 0.08 degree value for size of square that polygons are returned for |
geojson | boolean Default: true When set to false, geojson content will not be included. The geojson content can be large, so not including it is often faster. |
excludex | boolean Default: true When set to true, polygons with flood zone (fld_zone) "X" will not be included in the query. This generally makes the response load much smaller and easier to process quickly. |
elevation | boolean Default: false When set to true, base flood elevations (BFE) will be included in geojson format. |
X-API-KEY required | string API Key needed for authentication |
headers = {'x-api-key':'YOUR KEY'} payload = { 'lat': 34.071783, 'lng': -118.2596, 'size': '0.04' } s = requests.get('https://api.nationalflooddata.com/floodmapraw', headers=headers, params=payload)
{- "result": {
- "bfelist": [
- {
- "bfe_ln_id": "06037C_1842",
- "v_datum": "NAVD88",
- "distkm": 2.36056507085,
- "version_id": "2.3.3.2",
- "source_cit": "06037C_STUDY10",
- "geojson": "{\"type\":\"LineString\",\"coordinates\":[[-118.257285374615,34.0505893496427],[-118.25697976635,34.0505244789197]]}",
- "elev": 287,
- "dfirm_id": "06037C",
- "len_unit": "Feet",
- "ogc_fid": 4846389
}
], - "floodregions": [
- {
- "fld_ar_id": "06037C_2140",
- "distkm": 2.2775802896,
- "geojson": "{\"type\":\"Polygon\",\"coordinates\":[[[-118.269068464616,34.0527995184363], ...]]}",
- "zone_subty": "0.2 PCT ANNUAL CHANCE FLOOD HAZARD",
- "fld_zone": "X",
- "dfirm_id": "06037C",
- "ogc_fid": 12441534
}
]
}
}
key required | string authentication key |
lat required | number |
lng required | number |
zoom required | integer [ 6 .. 17 ] Default: 15 integer parameter between 6 (low zoom) and 17 (high zoom). |
showLegend | boolean Default: true true to show the legend; any other value false. |
How to use the static flood map, i.e. to obtain map images in jpg format to embed, for example, in a user report.
lat required | number |
lng required | number Default: 0.08 |
height required | integer |
width required | integer |
showMarker required | boolean Default: true if marker is set to false, no marker will be shown |
showLegend required | boolean Default: true if legend is set to false, no legend will be shown |
zoom required | integer [ 14 .. 16 ] Default: 15 integer parameter between 14 (low zoom) and 16 (high zoom) |
X-API-KEY required | string API Key needed for authentication |
z required | number Example: 13 Zoom level of tile |
x required | number Example: 2043 x coord of tile |
y required | number Example: 3140 y coord of tile |
x-api-key required | string API Key needed for authentication |
curl https://api.nationalflooddata.com/v3/tiles/flood-vector/13/2043/3140.mvt -H "x-api-key: <YOUR API KEY>" --output tile.mvt
{- "status": 401,
- "message": "Unauthorized"
}
category required | string Enum: "category1" "category2" "category3" "category4" "category5" category of storm surge for which to retrieve tiles |
z required | number Example: 13 Zoom level of tile |
x required | number Example: 2043 x coord of tile |
y required | number Example: 3140 y coord of tile |
x-api-key required | string API Key needed for authentication |
curl https://api.nationalflooddata.com/v3/tiles/stormsurge/category1/8/57/101.png -H "x-api-key: <YOUR API KEY>" --output tile.png
{- "status": 401,
- "message": "Unauthorized"
}