US Flood Zone Lookup by Address (FEMA NFHL) avatar

US Flood Zone Lookup by Address (FEMA NFHL)

Pricing

from $5.00 / 1,000 flood zone checks

Go to Apify Store
US Flood Zone Lookup by Address (FEMA NFHL)

US Flood Zone Lookup by Address (FEMA NFHL)

Check the official FEMA flood zone (A, AE, VE, X...) for US addresses or lat/long in bulk: SFHA yes/no, base flood elevation, FIRM panel, LOMR, one flat JSON row per location. No API key, via API or MCP. $5 per 1,000 checks. Screening only, not an SFHDF.

Pricing

from $5.00 / 1,000 flood zone checks

Rating

0.0

(0)

Developer

Japan Open Data

Japan Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Look up the official FEMA flood zone (A, AE, AH, AO, VE, X, D...) for U.S. addresses or latitude/longitude, in bulk. Each location returns one flat JSON row: whether it is in a Special Flood Hazard Area (SFHA), the base flood elevation, the DFIRM ID, the FIRM panel and its effective date, and whether a Letter of Map Revision (LOMR) changed the map there.

Screening only — not a certified flood determination (SFHDF). This Actor reads FEMA's public National Flood Hazard Layer. It does not replace a Standard Flood Hazard Determination Form, an elevation certificate or a lender's flood determination. Zone X does not mean zero flood risk.

  • FEMA flood zone by address or coordinates: zone, zone subtype (e.g. "0.2 PCT ANNUAL CHANCE FLOOD HAZARD", "AREA WITH REDUCED FLOOD RISK DUE TO LEVEE") and a plain-English meaning.
  • SFHA yes/no: inSpecialFloodHazardArea is true for A and V zones — the areas where flood insurance is mandatory for federally backed mortgages.
  • Base flood elevation and depth: static BFE with its vertical datum (NAVD88 / NGVD29) and AO-zone depths, when FEMA publishes them.
  • FIRM panel and LOMR: DFIRM ID, FIRM panel number (e.g. 12086C0317L), panel effective date, and the latest LOMR case number and date at the point.
  • Bulk checks: up to 1,000 addresses or coordinates per run, each with your own label, one row per location in input order.
  • Pay only for answers: $5 per 1,000 locations checked ($0.006 for a single address). Unmatched addresses, points without a FEMA map and errors are free.
  • Fast: one FEMA request per point; 14 points in about 5 seconds.
  • No API key: FEMA and U.S. Census Bureau public data; ready for the Apify API and MCP (AI agents).

What can it be used for?

  1. Mortgage, insurance and lending pre-screening. Flag which applications are likely in an SFHA before you order a certified flood determination, and see the BFE and FIRM panel up front.
  2. Real estate investors and property sites. Add a flood zone column to listings or to the output of property scrapers (Zillow, Redfin, Realtor.com) by passing their coordinates.
  3. Insurance underwriting and portfolio reviews. Screen hundreds of insured locations for A/V zones, coastal high hazard (V) areas and recent map revisions (LOMRs).
  4. AI agents and chatbots. Answer "Is this address in a flood zone?" with one call and a ready-made one-sentence floodZoneSummary.

How to use it

  1. Click Start to try the default input (one point in Miami Beach, FL, in Zone AE).
  2. Paste your coordinates ("latitude,longitude") or full street addresses (up to 1,000), optionally with a label each.
  3. Download the rows as JSON, CSV or Excel, or call the Actor via the API or MCP (see below).
InputTypeDefaultWhat it does
locationslist["25.7900,-80.1300"]"latitude,longitude" strings in decimal degrees, and/or full U.S. street addresses ("1600 Pennsylvania Ave NW, Washington, DC 20500"). Via the API also objects {"latitude": 25.79, "longitude": -80.13, "label": "Listing 42"} or {"address": "...", "label": "Site A"}. Up to 1,000 per run.

Coordinates are the most precise input. Addresses are geocoded with the U.S. Census Bureau Geocoder, which places the point along the street segment (not on the rooftop), so a building near a zone boundary can come out differently. An address must include its ZIP code, or its city and state; weak or ambiguous matches return a free not_found row instead of a guess.

Coverage: U.S. states, D.C., Puerto Rico and the territories where FEMA publishes a digital flood map (NFHL). Some communities have only paper flood maps or no map at all; points there return a free not_found row with reason: "no_flood_map".

Input example

{
"locations": [
{ "address": "1600 Pennsylvania Ave NW, Washington, DC 20500", "label": "White House" },
{ "latitude": 29.95, "longitude": -90.07, "label": "New Orleans" },
"39.9430,-74.0710",
"21.2767,-157.8270",
"1600 Pennsylvania Ave"
]
}

Output example

Real output from the default input (run on 2026-09-24):

{
"status": "ok",
"input": "25.7900,-80.1300",
"label": null,
"matchedAddress": null,
"latitude": 25.79,
"longitude": -80.13,
"floodZone": "AE",
"zoneSubtype": null,
"inSpecialFloodHazardArea": true,
"floodRiskLevel": "high",
"zoneDescription": "1% annual chance flood area (100-year floodplain) with a base flood elevation",
"coastalHighHazard": false,
"baseFloodElevation": 8,
"floodDepth": null,
"elevationUnit": "Feet",
"verticalDatum": "NGVD29",
"otherZonesAtPoint": null,
"dfirmId": "12086C",
"firmPanel": "12086C0317L",
"firmPanelEffectiveDate": "2009-09-11",
"firmPanelType": "Countywide, Panel Printed",
"hasLomr": false,
"lomrCount": 0,
"latestLomrCaseNumber": null,
"latestLomrEffectiveDate": null,
"floodZoneSummary": "FEMA flood zone AE - 1% annual chance flood area (100-year floodplain) with a base flood elevation; inside a Special Flood Hazard Area (flood insurance is required for federally backed mortgages); base flood elevation 8 feet (NGVD29); FIRM panel 12086C0317L effective 2009-09-11.",
"locationSource": "Coordinates as provided.",
"source": "FEMA National Flood Hazard Layer (NFHL): Flood Hazard Zones, FIRM Panels, LOMRs, NFHL Availability",
"attribution": "Source: FEMA National Flood Hazard Layer (U.S. public domain). Not affiliated with or endorsed by FEMA. Screening only - not a certified flood zone determination (SFHDF).",
"sourceUrl": "https://hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer/identify?..."
}

All rows from the input example above (same day):

InputZoneSubtypeSFHABFEFIRM panel (effective)
White House (address)Xarea of minimal flood hazardno—1100010018C (2010-09-27)
New OrleansXreduced flood risk due to leveeno—22071C0229F (2016-09-30)
39.9430,-74.0710 (Seaside Heights, NJ)AE—yes8 ft NAVD8834029C0329F (2006-09-29)
21.2767,-157.8270 (Waikiki, HI)X0.2% annual chance flood hazardno—15003C0368G (2011-01-19)
1600 Pennsylvania Ave————not_found (no city or ZIP; free)

Rows that could not be assessed say what to change and are not charged. Real output:

{"status": "not_found", "reason": "address_low_confidence", "input": "1600 Pennsylvania Ave", "label": null, "matchedAddress": "1600 W PENNSYLVANIA AVE EXN, SOUTHERN PINES, NC, 28387", "error": "Address \"1600 Pennsylvania Ave\" is a low-confidence match (best guess \"1600 W PENNSYLVANIA AVE EXN, SOUTHERN PINES, NC, 28387\", whose house number, ZIP code or city and state do not match the input); add the city, state and ZIP code, or pass \"latitude,longitude\" instead."}
{"status": "not_found", "reason": "no_flood_map", "input": "43.6500,-79.3800", "label": null, "latitude": 43.65, "longitude": -79.38, "error": "FEMA has no digital flood map (NFHL) for this point: the community may have only paper maps or no map, or the point is outside the United States or at sea. Check msc.fema.gov for paper maps."}

Output fields

FieldMeaning
statusok; or, free of charge, not_found (address not matched confidently, or no FEMA digital flood zone at the point) or error (invalid input or FEMA unavailable)
reasonOn not_found / error rows, a machine-readable code: address_not_found, address_ambiguous, address_low_confidence, no_flood_map, area_not_included, no_zone_at_point, invalid_input, outside_us or source_unavailable
input, labelWhat you passed, and your label
matchedAddress, latitude, longitudeThe Census-matched address (address input only) and the point that was checked
floodZone, zoneSubtype, zoneDescriptionFEMA zone (A, AE, AH, AO, AR, A99, V, VE, X, D, OPEN WATER), FEMA's subtype text and its plain-English meaning
inSpecialFloodHazardAreatrue in the 1% annual chance floodplain (A and V zones)
floodRiskLevelhigh (SFHA), moderate (0.2% annual chance or levee-protected X), minimal (other X), undetermined (D) or open water
coastalHighHazardtrue in V / VE zones (wave action)
baseFloodElevation, floodDepth, elevationUnit, verticalDatumStatic BFE or AO depth as published on the map, with unit and datum; null where FEMA publishes none (many A zones use cross-sections instead)
otherZonesAtPointOther zones touching the point (the point lies on a zone boundary)
dfirmId, firmPanel, firmPanelEffectiveDate, firmPanelTypeFlood map study ID, FIRM panel number and suffix, panel effective date and panel type
hasLomr, lomrCount, latestLomrCaseNumber, latestLomrEffectiveDateLetters of Map Revision that cover the point
floodZoneSummaryOne English sentence summarising the row (handy for AI agents and reports)
locationSource, source, attribution, sourceUrlHow the point was obtained, the FEMA layers used, the disclaimer, and the exact FEMA request
errorOn not_found / error rows: one sentence explaining what to change

How much does it cost?

This Actor uses Pay per event pricing — you pay per location assessed, not for compute time. The Store shows it as $5.00 / 1,000 flood zone checks.

EventPriceWhen it is charged
Flood zone check (result-row)$0.005Once per ok row. not_found and error rows are free
Actor start$0.001Once per run
ExampleLocationsCost
"Is this address in a flood zone?"1$0.006
Default input (Miami Beach point)1$0.006
50 listings from a property scraper50$0.251
One full run1,000$5.001

For comparison, a certified flood zone determination (SFHDF) typically costs $15–30 per property. This Actor is the screening step before you decide which properties need one.

Use the maximum cost per run option when you start the Actor to cap spending. If the limit is reached, the Actor stops before checking further locations (they are not looked up or charged) and says so in the status message.

Use via API & MCP (AI agents)

Apify API (HTTP). Run the Actor and get the rows in one call:

curl -X POST "https://api.apify.com/v2/acts/japan-open-data~us-flood-zone-lookup/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"locations": ["25.7900,-80.1300", "1600 Pennsylvania Ave NW, Washington, DC 20500"]}'

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
listings = [{"latitude": 25.79, "longitude": -80.13, "label": "1042"},
{"address": "1600 Pennsylvania Ave NW, Washington, DC 20500", "label": "1043"}]
run = client.actor("japan-open-data/us-flood-zone-lookup").call(run_input={"locations": listings})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["label"], row["status"], row.get("floodZone"), row.get("inSpecialFloodHazardArea"), row.get("error"))

MCP (Claude, ChatGPT, Cursor and other AI agents). Add this Actor as a tool through the Apify MCP server (https://mcp.apify.com), for example with ?tools=japan-open-data/us-flood-zone-lookup. Only locations is required, so an agent can call it with {"locations": ["<lat>,<lon>"]} or {"locations": ["<full street address>"]}.

Recommended agent settings:

  • "Is this address in a flood zone?" → {"locations": ["<address with city, state and ZIP>"]} and read floodZoneSummary and inSpecialFloodHazardArea.
  • Prefer coordinates when you have them (more precise than address geocoding).
  • Many properties → pass them all in one run (up to 1,000), each with a label, and match rows back by label.
  • Always check status; on not_found / error show the error sentence and branch on reason (e.g. source_unavailable = try again later). Remind users that this is screening data, not a certified determination, and that Zone X still has flood risk.
  • Cost for an agent: $0.006 for a one-address question; failed lookups are free.

Summary for AI agents: input {"locations": ["lat,lon" or "full US address"]} (max 1,000). Output: one flat row per location with status (ok / not_found / error), floodZone, inSpecialFloodHazardArea, floodRiskLevel, baseFloodElevation, firmPanel, hasLomr and a one-sentence floodZoneSummary. Screening only — not a certified flood determination.

Why this Actor

This ActorCertified determination (SFHDF)
DataFEMA NFHL, read live on every runFEMA maps reviewed by a determination company
OutputFlat JSON: zone, SFHA, BFE, panel, LOMR, one-sentence summarySigned form for a lender
BulkUp to 1,000 locations per runOne property per order
Price$5 per 1,000 locationsAbout $15–30 per property
Legal standingScreening onlyAccepted for federally backed mortgages

How it compares with other FEMA flood zone Actors

Facts as listed on the Apify Store on 2026-09-24 (prices and fields can change; check each Actor's page).

This ActorFEMA flood zone scraper (per-row)Flood zone check (per-report)
Last updatedSeptember 2026June 2026August 2026
Price for 1 address$0.006about $0.032 (start fee $0.03)$0.20
Price for 1,000 addressesabout $5about $2$200
InputAddresses and/or coordinates, up to 1,000 per run, each with your own labelAddresses or coordinatesOne US address per check
OutputFlat JSON, the same 30 fields on every ok row, plus a one-sentence summaryZone, risk, nearby zones, FIRM panelZone, SFHA and plain-English risk
SFHA yes/noYesNot listedYes
Base flood elevation with datum, AO depthYesNot listedNot listed
FIRM panel and effective dateYesFIRM panelNot listed
LOMR (map revision) at the pointYesNot listedNot listed
Weak or ambiguous address matchesFree not_found with a fix-it sentence, never charged as a guessNot listedNot listed

FAQ

Can I use this instead of a flood zone determination for a mortgage? No. Lenders need a Standard Flood Hazard Determination Form (SFHDF) from a determination provider. Use this Actor to screen and prioritise.

Does Zone X mean the property will not flood? No. FEMA notes that a large share of flood insurance claims come from outside high-risk zones. Zone X covers moderate (shaded X, 0.2% annual chance or levee-protected) and minimal (unshaded X) hazard areas, and FEMA maps do not include every source of flooding (heavy rainfall, small streams, future conditions).

Why is the base flood elevation empty in an A or AE zone? FEMA publishes a single "static" BFE only where it is constant over the zone polygon. Many AE zones along rivers have BFEs that vary along the stream (read from the flood profile); this Actor returns null there rather than guessing.

Why did my address come back not_found? The address had no match in the Census Geocoder (reason: "address_not_found"), matched several different places (address_ambiguous), or the best match had a different house number or a ZIP code / city and state that your input does not contain (address_low_confidence). The Census Geocoder gives no match score, so the Actor refuses weak matches instead of charging you for the wrong property. Add the city, state and ZIP code, or pass coordinates.

What does reason: "no_flood_map" mean? FEMA has no digital flood map at that point: the community may have only paper maps (check msc.fema.gov) or none, or the point is outside the U.S. or at sea. These rows are free.

Can I use FEMA flood data commercially? Yes. NFHL and Census Geocoder data are U.S. federal government works in the public domain. Keep the screening disclaimer when you show the results to others, and do not present them as FEMA's own determination.

How fresh is the data? Each run queries FEMA's live National Flood Hazard Layer, which FEMA updates as new maps and LOMRs become effective. Preliminary (not yet effective) maps are not included.

Data source, attribution and caveats

  • Flood zones, FIRM panels, LOMRs: FEMA National Flood Hazard Layer (NFHL) web service, layers Flood Hazard Zones, FIRM Panels, LOMRs and NFHL Availability. https://www.fema.gov/flood-maps/national-flood-hazard-layer — U.S. federal government data, public domain.
  • Address geocoding: U.S. Census Bureau Geocoder (Public_AR_Current benchmark). https://geocoding.geo.census.gov — public domain.
  • Screening only — not a certified flood determination (SFHDF). Results are public map data for screening. They are not a flood zone determination, an elevation certificate, an insurance rating or a lending decision, and they do not show whether an individual building will flood. Zone X is not "no risk."
  • Not affiliated: this Actor is an independent project and is not affiliated with, endorsed by or sponsored by FEMA, the NFIP or the U.S. Census Bureau. It does not use their logos.
  • Light use of FEMA's service: one request per distinct point (four layers in one call), at most two requests in flight, a pause between requests, one retry, and repeated points in a run are answered from a cache.
  • No personal data: the Actor returns map attributes (zones, panel and case numbers, dates) and the address or point you provide. It does not read FEMA's Letters of Map Amendment (issued for individual properties) or any owner information.

Known limitations

  • Point checks. A zone is read at one point; a parcel or building can straddle zones. otherZonesAtPoint flags points exactly on a boundary.
  • Address precision. Census geocoding interpolates along the street; use coordinates for boundary cases.
  • Effective maps only. Preliminary and pending FIRMs are not included; paper-only communities return a free not_found row (reason: "no_flood_map").
  • Static BFE only. Profile-based BFEs (varying along a river) are not computed.
  • FEMA availability. FEMA's service is occasionally slow or down; affected rows return a free error row with reason: "source_unavailable" (the run itself still finishes) — run again later.
  • Screening only. Not a Standard Flood Hazard Determination Form, elevation certificate or insurance rating. Zone X is not "no risk."
  • 1,000 locations per run. Split larger lists into several runs (or several API calls in parallel).

Troubleshooting

SymptomCauseWhat to do
not_found, reason: "address_low_confidence"The address has no ZIP code, or no city and state, or the best match has a different house numberAdd city, state and ZIP code, or pass "latitude,longitude"
not_found, reason: "address_ambiguous"The address matches several places far apart (e.g. "100 Main St, Springfield")Add the ZIP code, or pass coordinates
not_found, reason: "no_flood_map"The community has only paper maps or none, or the point is outside the U.S. / at seaCheck msc.fema.gov for paper maps. Row is free
error, reason: "source_unavailable"FEMA or the Census Geocoder did not answerRun again later. Row is free, the run still succeeds
error, reason: "outside_us" or invalid_inputCoordinates outside the U.S., swapped latitude/longitude, or text that is neitherUse "latitude,longitude" in decimal degrees (latitude first, e.g. "25.79,-80.13")
Zone differs from a map you sawAddress points are placed along the street, not on the rooftop; or a LOMR / new map took effectPass rooftop coordinates; check hasLomr and firmPanelEffectiveDate
baseFloodElevation is null in an AE zoneFEMA publishes a varying (profile) BFE there, not a single valueRead the flood profile in the FIRM / Flood Insurance Study
Run stopped earlyYour maximum cost per run was reachedRaise the limit; unchecked locations were not charged

More from Japan Open Data

Feedback

Found a wrong value or need another field (e.g. preliminary maps, coastal barrier areas, parcel polygons)? Open an issue on the Actor's Issues tab with your input and what you expected.