# US Flood Zone Lookup by Address (FEMA NFHL) (`japan-open-data/us-flood-zone-lookup`) Actor

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.

- **URL**: https://apify.com/japan-open-data/us-flood-zone-lookup.md
- **Developed by:** [Japan Open Data](https://apify.com/japan-open-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 flood zone checks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## US Flood Zone Lookup by Address (FEMA NFHL)

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).

| Input | Type | Default | What it does |
|---|---|---|---|
| `locations` | list | `["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

```json
{
  "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):

```json
{
  "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):

| Input | Zone | Subtype | SFHA | BFE | FIRM panel (effective) |
|---|---|---|---|---|---|
| White House (address) | X | area of minimal flood hazard | no | — | 1100010018C (2010-09-27) |
| New Orleans | X | reduced flood risk due to levee | no | — | 22071C0229F (2016-09-30) |
| 39.9430,-74.0710 (Seaside Heights, NJ) | AE | — | **yes** | 8 ft NAVD88 | 34029C0329F (2006-09-29) |
| 21.2767,-157.8270 (Waikiki, HI) | X | 0.2% annual chance flood hazard | no | — | 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:

```json
{"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

| Field | Meaning |
|---|---|
| `status` | `ok`; 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) |
| `reason` | On `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`, `label` | What you passed, and your label |
| `matchedAddress`, `latitude`, `longitude` | The Census-matched address (address input only) and the point that was checked |
| `floodZone`, `zoneSubtype`, `zoneDescription` | FEMA zone (`A`, `AE`, `AH`, `AO`, `AR`, `A99`, `V`, `VE`, `X`, `D`, `OPEN WATER`), FEMA's subtype text and its plain-English meaning |
| `inSpecialFloodHazardArea` | `true` in the 1% annual chance floodplain (A and V zones) |
| `floodRiskLevel` | `high` (SFHA), `moderate` (0.2% annual chance or levee-protected X), `minimal` (other X), `undetermined` (D) or `open water` |
| `coastalHighHazard` | `true` in V / VE zones (wave action) |
| `baseFloodElevation`, `floodDepth`, `elevationUnit`, `verticalDatum` | Static 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) |
| `otherZonesAtPoint` | Other zones touching the point (the point lies on a zone boundary) |
| `dfirmId`, `firmPanel`, `firmPanelEffectiveDate`, `firmPanelType` | Flood map study ID, FIRM panel number and suffix, panel effective date and panel type |
| `hasLomr`, `lomrCount`, `latestLomrCaseNumber`, `latestLomrEffectiveDate` | Letters of Map Revision that cover the point |
| `floodZoneSummary` | One English sentence summarising the row (handy for AI agents and reports) |
| `locationSource`, `source`, `attribution`, `sourceUrl` | How the point was obtained, the FEMA layers used, the disclaimer, and the exact FEMA request |
| `error` | On `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**.

| Event | Price | When it is charged |
|---|---|---|
| Flood zone check (`result-row`) | **$0.005** | Once per `ok` row. `not_found` and `error` rows are **free** |
| Actor start | **$0.001** | Once per run |

| Example | Locations | Cost |
|---|---|---|
| "Is this address in a flood zone?" | 1 | $0.006 |
| Default input (Miami Beach point) | 1 | $0.006 |
| 50 listings from a property scraper | 50 | $0.251 |
| One full run | 1,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:

```bash
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):**

```python
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 Actor | Certified determination (SFHDF) |
|---|---|---|
| Data | FEMA NFHL, read live on every run | FEMA maps reviewed by a determination company |
| Output | Flat JSON: zone, SFHA, BFE, panel, LOMR, one-sentence summary | Signed form for a lender |
| Bulk | Up to 1,000 locations per run | One property per order |
| Price | $5 per 1,000 locations | About $15–30 per property |
| Legal standing | Screening only | Accepted 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 Actor** | FEMA flood zone scraper (per-row) | Flood zone check (per-report) |
|---|---|---|---|
| Last updated | September 2026 | June 2026 | August 2026 |
| Price for 1 address | $0.006 | about $0.032 (start fee $0.03) | $0.20 |
| Price for 1,000 addresses | about $5 | about $2 | $200 |
| Input | Addresses **and/or coordinates**, up to 1,000 per run, each with your own `label` | Addresses or coordinates | One US address per check |
| Output | **Flat** JSON, the same 30 fields on every `ok` row, plus a one-sentence summary | Zone, risk, nearby zones, FIRM panel | Zone, SFHA and plain-English risk |
| SFHA yes/no | **Yes** | Not listed | Yes |
| Base flood elevation with datum, AO depth | **Yes** | Not listed | Not listed |
| FIRM panel and effective date | **Yes** | FIRM panel | Not listed |
| LOMR (map revision) at the point | **Yes** | Not listed | Not listed |
| Weak or ambiguous address matches | **Free `not_found`** with a fix-it sentence, never charged as a guess | Not listed | Not 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

| Symptom | Cause | What 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 number | Add 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 sea | Check msc.fema.gov for paper maps. Row is free |
| `error`, `reason: "source_unavailable"` | FEMA or the Census Geocoder did not answer | Run again later. Row is free, the run still succeeds |
| `error`, `reason: "outside_us"` or `invalid_input` | Coordinates outside the U.S., swapped latitude/longitude, or text that is neither | Use `"latitude,longitude"` in decimal degrees (latitude first, e.g. `"25.79,-80.13"`) |
| Zone differs from a map you saw | Address points are placed along the street, not on the rooftop; or a LOMR / new map took effect | Pass rooftop coordinates; check `hasLomr` and `firmPanelEffectiveDate` |
| `baseFloodElevation` is `null` in an AE zone | FEMA publishes a varying (profile) BFE there, not a single value | Read the flood profile in the FIRM / Flood Insurance Study |
| Run stopped early | Your **maximum cost per run** was reached | Raise the limit; unchecked locations were not charged |

### More from Japan Open Data

- [UK Visa Sponsor Register Tracker (Daily Changes)](https://apify.com/japan-open-data/uk-visa-sponsor-register) — new, removed and downgraded UK visa sponsor licences from the official Home Office register, or check whether a company can sponsor workers.
- [UK Flood Risk Lookup by Postcode (England)](https://apify.com/japan-open-data/uk-flood-zone-lookup) — the English sister: Environment Agency flood zone, recorded flood extents and flood defences for any postcode or coordinates in England.
- [France Property Risk Lookup by Address (Georisques)](https://apify.com/japan-open-data/france-property-risk-lookup) — the French sister: official Géorisques risks for any French address or coordinates: flood, clay shrink-swell, seismic zone, radon, past natural-disaster declarations and nearby industrial sites.
- [US Hail History by Location (NOAA NEXRAD Radar)](https://apify.com/japan-open-data/us-hail-history) — every hail day near any U.S. latitude/longitude with max estimated hail size.
- [US Storm Reports API: Hail, Wind & Tornado (NWS)](https://apify.com/japan-open-data/us-storm-reports-live) — U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports.
- [England Listed Building & Conservation Area Check](https://apify.com/japan-open-data/england-heritage-constraint-lookup) — official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- [UK NHS Organisation Lookup (Official ODS Codes)](https://apify.com/japan-open-data/uk-nhs-organisation-lookup) — the official NHS ODS register by postcode, type or code: GP practices, pharmacies, dentists, NHS trusts and care homes.
- [UK Waste Carrier Licence Check (Environment Agency)](https://apify.com/japan-open-data/uk-waste-carrier-register) — check whether an English business is a registered waste carrier, broker or dealer.
- [UK HGV Operator Licence Lookup (Official DVSA)](https://apify.com/japan-open-data/uk-hgv-operator-licence) — Great Britain's official HGV and bus / coach operator licences by company, postcode and fleet size.
- [Mexico Gas Prices API by Station (Official CNE)](https://apify.com/japan-open-data/mexico-fuel-station-prices) — today's gas and diesel prices at every Mexican gas station, from the official CNE feed.
- [Argentina Fuel Prices API by Station (Official)](https://apify.com/japan-open-data/argentina-fuel-station-prices) — last reported gasoline (nafta), diesel and CNG prices at every Argentine gas station.
- [TSA Checkpoint Travel Numbers (Daily, Weekly & YoY)](https://apify.com/japan-open-data/tsa-checkpoint-throughput) — daily U.S. TSA airport checkpoint traveler counts.
- [Japan Postal Code & Address in English](https://apify.com/japan-open-data/japan-postal-code-english) — Japanese postal codes and addresses in English/romaji, kanji and kana.

### 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.

# Actor input Schema

## `locations` (type: `array`):

Places in the United States to check, one per line: "latitude,longitude" in decimal degrees (e.g. "25.7900,-80.1300") or a full street address with city, state and ZIP code (e.g. "1600 Pennsylvania Ave NW, Washington, DC 20500"). Via the API you can also pass objects like {"latitude": 25.79, "longitude": -80.13, "label": "Listing 42"} or {"address": "1600 Pennsylvania Ave NW, Washington, DC 20500", "label": "Site A"}. Up to 1,000 locations per run; each gets one output row. Coordinates are more precise than addresses (addresses are placed along the street by the U.S. Census Bureau Geocoder).

## Actor input object example

```json
{
  "locations": [
    "25.7900,-80.1300"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

FEMA NFHL flood zone, SFHA yes/no, BFE, DFIRM ID, FIRM panel and effective date, LOMR for each address or coordinate. Table view: overview.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "25.7900,-80.1300"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("japan-open-data/us-flood-zone-lookup").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "locations": ["25.7900,-80.1300"] }

# Run the Actor and wait for it to finish
run = client.actor("japan-open-data/us-flood-zone-lookup").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "25.7900,-80.1300"
  ]
}' |
apify call japan-open-data/us-flood-zone-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,japan-open-data/us-flood-zone-lookup"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/wpfYNGaTsAZypSe0u/builds/5lHY2ZvokEddZyDj0/openapi.json
