FEMA Flood Zone Batch Lookup — No Login, $10/1k
Pricing
from $10.00 / 1,000 flood zone lookups
FEMA Flood Zone Batch Lookup — No Login, $10/1k
Give it a list of US addresses or coordinates and get each one's FEMA flood zone, SFHA flag, base flood elevation, FIRM panel and effective date, LOMR and a risk label. Geocoding included. No login or API key. MCP-ready. $10 per 1,000 lookups.
Pricing
from $10.00 / 1,000 flood zone lookups
Rating
0.0
(0)
Developer
Khrystyna Skotte
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
FEMA Flood Zone Batch Lookup
Give it a list of US addresses (or latitude/longitude points) and get back, for every one, the official FEMA flood zone, whether it sits in a Special Flood Hazard Area, the base flood elevation, the FIRM panel and its effective date, a plain-English risk label and a link to the FEMA Map Service Center. One row per input, in order, whether or not the address could be located. No API key, no browser, thousands of addresses per run.
Built for flood insurance quoting, mortgage flood-determination pre-screens, real-estate due diligence, portfolio risk reviews and property data enrichment.
What you get per address
| Field | Example | Meaning |
|---|---|---|
inputAddress | 4802 Braesvalley Dr, Houston, TX 77096 | What you sent |
id | nola-ae | Your id, or the 1-based position in the list |
normalizedAddress | 4802 BRAESVALLEY DR, HOUSTON, TX 77096 | USPS-style cleaned address |
matchedAddress | 4802 BRAESVALLEY DR, HOUSTON, TX, 77096 | Address the geocoder matched |
latitude / longitude | 29.6827 / -95.4610 | Point used for the lookup |
geocoder | census / nominatim / input / none | Which geocoder located it (input = you supplied coordinates) |
geocodeConfidence | 1 | 1 exact Census match, 0.7 non-exact Census, 0.5 Nominatim, 0 not found |
floodZone | AE | FEMA flood zone code |
zoneSubtype | 0.2 PCT ANNUAL CHANCE FLOOD HAZARD | Zone qualifier (shaded X, floodway, levee, etc.) |
inSFHA | true | Inside a Special Flood Hazard Area (mandatory flood insurance for federally backed mortgages) |
staticBFE | -3 | Static base flood elevation in feet, when the zone carries one |
depth | 2 | Flood depth in feet for AO zones |
verticalDatum | NAVD88 | Datum of the BFE |
dfirmId | 48201C | FEMA study (county) identifier |
firmPanel | 48201C0865M | Flood Insurance Rate Map panel number |
panelEffectiveDate | 2019-05-02 | Panel effective date |
lomrCaseNumber / lomrEffectiveDate | 19-04-6434P | Most recent Letter of Map Revision covering the point (only with includeLomr) |
riskLabel | High | High, Moderate, Minimal, Undetermined, Open Water or Unmapped |
femaMapUrl | https://msc.fema.gov/portal/search?AddressQuery=… | FEMA Map Service Center search for this address |
lookupStatus | ok | ok, geocode_failed, not_mapped (no NFHL coverage at this point) or lookup_failed (FEMA service error after retries) |
processedAt | ISO timestamp | When the run happened |
What the zones mean
| Zone | Risk label | Meaning |
|---|---|---|
A, AE, AH, AO, AR, A99 | High | 1% annual chance (100-year) floodplain. AE has base flood elevations, AH/AO are shallow flooding, AR/A99 relate to levee restoration or construction. Flood insurance is mandatory for federally backed mortgages. |
V, VE | High | Coastal 1% annual chance floodplain with wave action. Mandatory insurance, stricter building standards. |
X with subtype 0.2 PCT ANNUAL CHANCE FLOOD HAZARD (shaded X, formerly B) | Moderate | 0.2% annual chance (500-year) floodplain, or 1% floodplain with less than 1 ft depth. Insurance optional but recommended. |
X with subtype AREA WITH REDUCED FLOOD RISK DUE TO LEVEE | Moderate | Protected by an accredited levee; residual risk if the levee fails. |
X with subtype AREA OF MINIMAL FLOOD HAZARD (unshaded X, formerly C) | Minimal | Outside the 500-year floodplain. |
D | Undetermined | Flood hazards possible but not studied. |
OPEN WATER | Open Water | The point falls on a lake, river or the sea. |
| No polygon | Unmapped | Outside the National Flood Hazard Layer (some rural counties, tribal lands, most of Alaska). |
inSFHA comes straight from FEMA's SFHA_TF flag, not from the label, so it is the field to use for mandatory-purchase decisions.
Input
| Field | Default | Notes |
|---|---|---|
addresses | 5 sample properties | Array of strings ("123 Main St, Austin, TX 78701"), address objects ({"id", "street", "city", "state", "zip"}) or coordinate objects ({"id", "latitude", "longitude"}). Objects may also carry {"id", "address"} for a one-line string with your own id. |
includeFirmPanel | true | Add FIRM panel number and effective date |
includeLomr | false | Add the latest Letter of Map Revision covering the point |
fallbackToNominatim | true | Try OpenStreetMap when the Census Geocoder cannot match an address (1 request/second) |
maxItems | 10 | Process at most this many items |
{"addresses": ["4802 Braesvalley Dr, Houston, TX 77096",{ "id": "nola-ae", "street": "4900 Paris Ave", "city": "New Orleans", "state": "LA", "zip": "70122" },{ "id": "denver-point", "latitude": 39.7392, "longitude": -104.9903 }],"includeFirmPanel": true,"maxItems": 5000}
Sample output
{"inputAddress": "4900 Paris Ave, New Orleans, LA 70122","id": "nola-ae","normalizedAddress": "4900 PARIS AVE, NEW ORLEANS, LA 70122","matchedAddress": "4900 PARIS AVE, NEW ORLEANS, LA, 70122","latitude": 30.0074667765,"longitude": -90.074569988723,"geocoder": "census","geocodeConfidence": 1,"floodZone": "AE","zoneSubtype": null,"inSFHA": true,"staticBFE": -3,"depth": null,"verticalDatum": null,"dfirmId": "22071C","firmPanel": "22071C0114F","panelEffectiveDate": "2016-09-30","lomrCaseNumber": null,"lomrEffectiveDate": null,"riskLabel": "High","femaMapUrl": "https://msc.fema.gov/portal/search?AddressQuery=4900%20PARIS%20AVE%2C%20NEW%20ORLEANS%2C%20LA%2C%2070122","lookupStatus": "ok","processedAt": "2026-09-28T18:00:00.000Z"}
How it works
- Normalise every address to USPS style (suffix and directional abbreviations, state codes, ZIP+4 split).
- Geocode with the US Census Bureau batch geocoder (up to 10,000 addresses per request), retry non-matches on the Census one-line endpoint with and without the unit number, then optionally fall back to OpenStreetMap Nominatim. Coordinate inputs skip this step.
- Query FEMA's National Flood Hazard Layer (NFHL MapServer, layer 28 Flood Hazard Zones) with each point, 5 requests in flight. If the point sits on a boundary between two zones, the SFHA one is reported so a mandatory-purchase zone is never missed.
- Optionally query the FIRM Panels (layer 3) and LOMRs (layer 1) layers, matched to the same FEMA study as the zone polygon, because neighbouring counties' panel grids overlap.
Throughput is roughly 5–10 lookups per second for geocodable addresses; the Nominatim fallback runs at 1 address per second.
Sources
- FEMA National Flood Hazard Layer,
hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer(the same data behind the FEMA Flood Map Service Center). Zones, BFEs, panels and LOMRs are the currently effective data at run time. - US Census Bureau Geocoder,
Public_AR_Currentbenchmark. - OpenStreetMap Nominatim (optional fallback).
Limits and caveats
- This is a point-in-polygon lookup at the geocoded address point. It is not a legal flood zone determination (Standard Flood Hazard Determination Form) and does not replace an elevation certificate. Large parcels can straddle zones; the row reports the zone at the rooftop point the geocoder returned.
staticBFEis only populated where FEMA stores a static elevation on the zone polygon. Many AE zones carry BFEs on separate BFE lines or cross-sections instead, so anullBFE does not mean there is none.- Geocoding accuracy follows the Census geocoder (street-segment interpolation).
geocodeConfidencebelow 1 means the point may be a few tens of metres off; treat boundary cases with care. - Not-yet-effective preliminary maps are not included.
- FEMA's service occasionally returns errors under load; each query is retried four times and the row is marked
lookup_failedif it still fails, so you can re-run just those.
Pricing
- $0.005 per run start
- $0.01 per input item (one output row each, charged whether or not the address could be located)
1,000 addresses cost $10.05.