# FEMA API

> FEMA returns flood zone details and federal disaster declarations as a workflow and API.

FEMA, also known as the Federal Emergency Management Agency, provides flood zone details for a US street address through Get flood zone. List disaster declarations returns federal disasters for a required US state, with optional date, county, result count, and incident category filters.

- Page: https://fous.com/workflows/fema
- Handle: `@fema`
- Category: [Government](https://fous.com/workflows/category/government)
- Source website: https://fema.gov
- Last verified: Sep 29, 2026
- Fous is not affiliated with FEMA.

## Methods

### Get flood zone

Operation `get_flood_zone`, version 1. 1 credit per call.

Find the FEMA flood zone, risk designation, elevation, map panel, and community for a US street address. Census address coordinates are approximate; confirm property-level requirements with FEMA and your lender.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `address` | string | yes | `"1000 Ocean Dr, Miami Beach, FL 33139"` | Full US street address, e.g. 1000 Ocean Dr, Miami Beach, FL 33139. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Full US street address, e.g. 1000 Ocean Dr, Miami Beach, FL 33139.",
      "examples": [
        "1000 Ocean Dr, Miami Beach, FL 33139",
        "500 Main St, Houston, TX 77002"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "address": "1000 Ocean Dr, Miami Beach, FL 33139"
    },
    {
      "address": "500 Main St, Houston, TX 77002"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `note` | string or null |  | Explanation when no digital flood map or zone is available. |
| `latitude` | number | `25.780437512467` | Census geocoder latitude. |
| `longitude` | number | `-80.130701760056` | Census geocoder longitude. |
| `flood_zone` | string or null | `"AE"` | FEMA flood zone code, or null if no digital flood zone is available. |
| `community_name` | string or null | `"CITY OF MIAMI BEACH"` | FEMA political jurisdiction name. |
| `matched_address` | string | `"1000 OCEAN DR, MIAMI BEACH, FL, 33139"` | Street address matched by the Census geocoder. |
| `flood_zone_meaning` | string or null | `"High-risk flood area; flood insurance is usually required with a federally backed mortgage."` | Plain-language flood hazard designation. |
| `flood_map_panel_number` | string or null | `"12086C0319L"` | FEMA FIRM panel number. |
| `flood_map_effective_date` | string or null | `"2009-09-11"` | Effective date of the mapped FIRM panel. |
| `base_flood_elevation_feet` | number or null | `8` | Mapped static base flood elevation in feet, if available. |
| `fema_map_service_center_link` | string | `"https://msc.fema.gov/portal/search?AddressQuery=1000%20OCEAN%20DR%2C%20MIAMI%20BEACH%2C%20FL%2C%2033139"` | Link to search this address on FEMA Map Service Center. |
| `in_high_risk_special_flood_hazard_area` | boolean or null | `true` | Whether FEMA marks the location as in a high-risk Special Flood Hazard Area; null if unavailable. |

**Example input**

```json
{
  "address": "1000 Ocean Dr, Miami Beach, FL 33139"
}
```

**Example output**

```json
{
  "note": null,
  "latitude": 25.780437512467,
  "longitude": -80.130701760056,
  "flood_zone": "AE",
  "community_name": "CITY OF MIAMI BEACH",
  "matched_address": "1000 OCEAN DR, MIAMI BEACH, FL, 33139",
  "flood_zone_meaning": "High-risk flood area; flood insurance is usually required with a federally backed mortgage.",
  "flood_map_panel_number": "12086C0319L",
  "flood_map_effective_date": "2009-09-11",
  "base_flood_elevation_feet": 8,
  "fema_map_service_center_link": "https://msc.fema.gov/portal/search?AddressQuery=1000%20OCEAN%20DR%2C%20MIAMI%20BEACH%2C%20FL%2C%2033139",
  "in_high_risk_special_flood_hazard_area": true
}
```

### List disaster declarations

Operation `list_disaster_declarations`, version 1. 1 credit per call.

List federal disaster declarations in a US state, optionally narrowed to a county, declaration date and incident category. Returns one entry per disaster with all designated counties; statewide or tribal-only declarations may have no county list.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `since` | string | no | `"2022-01-01"` | Include declarations on or after this date, for example 2022-01-01. Defaults to five years ago. |
| `state` | string | yes | `"Florida"` | US state name or two-letter code, for example Florida or FL. |
| `county` | string | no | `"Lee County"` | County name, for example Lee County. |
| `max_results` | integer | no | `20` | Maximum number of disasters, for example 20. |
| `disaster_type` | string | no | `"hurricane"` | Incident category, for example hurricane; other includes incidents outside the named categories. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "state"
  ],
  "properties": {
    "since": {
      "type": "string",
      "format": "date",
      "description": "Include declarations on or after this date, for example 2022-01-01. Defaults to five years ago.",
      "examples": [
        "2022-01-01",
        "2025-01-01"
      ]
    },
    "state": {
      "type": "string",
      "description": "US state name or two-letter code, for example Florida or FL.",
      "examples": [
        "Florida",
        "California",
        "Alaska"
      ]
    },
    "county": {
      "type": "string",
      "default": "",
      "description": "County name, for example Lee County.",
      "examples": [
        "Lee County",
        "Nonexistent County"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of disasters, for example 20.",
      "x-fous-developer": true,
      "examples": [
        20,
        3,
        2
      ]
    },
    "disaster_type": {
      "enum": [
        "any",
        "hurricane",
        "flood",
        "fire",
        "severe_storm",
        "tornado",
        "winter_storm",
        "earthquake",
        "other"
      ],
      "type": "string",
      "default": "any",
      "description": "Incident category, for example hurricane; other includes incidents outside the named categories.",
      "examples": [
        "hurricane",
        "fire"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "since": "2022-01-01",
      "state": "Florida",
      "county": "Lee County",
      "max_results": 20,
      "disaster_type": "hurricane"
    },
    {
      "since": "2025-01-01",
      "state": "California",
      "max_results": 3,
      "disaster_type": "fire"
    },
    {
      "since": "2025-01-01",
      "state": "Alaska",
      "county": "Nonexistent County",
      "max_results": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `disasters` | array |  | Disasters, newest declaration first. |
| `disasters[].link` | string | `"https://www.fema.gov/disaster/5662"` | FEMA disaster page. |
| `disasters[].title` | string | `"Gann Fire"` | Declaration title, for example Hurricane Ian. |
| `disasters[].declared_date` | string | `"2026-08-04"` |  |
| `disasters[].incident_type` | string | `"Fire"` | FEMA incident type, for example Hurricane. |
| `disasters[].disaster_number` | string | `"FM-5662-CA"` | FEMA disaster number, for example DR-4673-FL. |
| `disasters[].counties_covered` | array |  | Counties and county-equivalents named in the declaration. |
| `disasters[].declaration_type` | string | `"fire management"` | Major disaster, emergency or fire management. |
| `disasters[].incident_end_date` | string or null |  |  |
| `disasters[].incident_start_date` | string or null | `"2026-08-04"` |  |
| `disasters[].assistance_available` | array |  | Individual assistance, public assistance or hazard mitigation. |

**Example input**

```json
{
  "since": "2025-01-01",
  "state": "California",
  "max_results": 3,
  "disaster_type": "fire"
}
```

**Example output**

```json
{
  "disasters": [
    {
      "link": "https://www.fema.gov/disaster/5662",
      "title": "Gann Fire",
      "declared_date": "2026-08-04",
      "incident_type": "Fire",
      "disaster_number": "FM-5662-CA",
      "counties_covered": [
        "Calaveras County"
      ],
      "declaration_type": "fire management",
      "incident_end_date": null,
      "incident_start_date": "2026-08-04",
      "assistance_available": [
        "public assistance"
      ]
    },
    {
      "link": "https://www.fema.gov/disaster/5652",
      "title": "Dove Fire",
      "declared_date": "2026-07-26",
      "incident_type": "Fire",
      "disaster_number": "FM-5652-CA",
      "counties_covered": [
        "Tuolumne County"
      ],
      "declaration_type": "fire management",
      "incident_end_date": null,
      "incident_start_date": "2026-07-26",
      "assistance_available": [
        "public assistance"
      ]
    },
    {
      "link": "https://www.fema.gov/disaster/5636",
      "title": "Bain Fire",
      "declared_date": "2026-05-20",
      "incident_type": "Fire",
      "disaster_number": "FM-5636-CA",
      "counties_covered": [
        "Riverside County"
      ],
      "declaration_type": "fire management",
      "incident_end_date": null,
      "incident_start_date": "2026-05-19",
      "assistance_available": [
        "public assistance"
      ]
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@fema",
  "visibility": "public",
  "operation": "get_flood_zone",
  "version": 1,
  "input": {
    "address": "1000 Ocean Dr, Miami Beach, FL 33139"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@fema\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_flood_zone\",\n  \"version\": 1,\n  \"input\": {\n    \"address\": \"1000 Ocean Dr, Miami Beach, FL 33139\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@fema",
  "visibility": "public",
  "operation": "get_flood_zone",
  "version": 1,
  "input": {
    "address": "1000 Ocean Dr, Miami Beach, FL 33139"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@fema","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Check a property's mapped flood hazard before reviewing insurance needs
- Find disaster declarations affecting a state or county
- Track federal disaster declarations by incident category and date
- Review mapped flood elevations and map panel details for an address

## FAQ

### Is Fous affiliated with FEMA?

No. Fous is not affiliated with FEMA. This workflow reads the public fema.gov website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a FEMA account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from fema.gov when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What FEMA flood zone applies to a US address?

Get flood zone returns the flood zone, risk designation, map panel, community, and other available details for a full US street address.

### Which disasters have been declared in a state?

List disaster declarations returns federal declarations for a required state, optionally narrowed by county, date, and incident category.

## Related

- [US Census Bureau API](https://fous.com/workflows/us-census-bureau.md): US Census Bureau returns statistics from varying Census years, population estimates through July 1, and address geographies using Census vintages that may differ from representation.
- [InciWeb API](https://fous.com/workflows/inciweb.md): InciWeb provides US interagency information on active wildfires and related incidents, with latest dated updates and evacuation or closure notices; past notices may no longer apply.
- [National Weather Service API](https://fous.com/workflows/national-weather-service.md): National Weather Service provides U.S. day-and-night forecasts for seven days, hourly forecasts for up to 156 hours where available, active alerts, and latest nearby station observations.
- [Grants.gov API](https://fous.com/workflows/grants-gov.md): U.S. federal grant opportunities and application information.
- [HUD API](https://fous.com/workflows/hud.md): Official HUD housing research and Fair Market Rent data.
- [Zillow API](https://fous.com/workflows/zillow.md): Zillow provides homes for sale, rental listings, home details, estimates, and housing market figures; rental details, history, schools, estimates, and market figures may be missing or reflect different reporting dates.
- [USGS Earthquakes API](https://fous.com/workflows/usgs-earthquakes.md): USGS Earthquakes provides recent event details, nearby earthquake distances and local times, and significant worldwide events from the past day, week, or month; some impact, felt, and alert information may be unavailable.
- [USGS Water Data API](https://fous.com/workflows/usgs-water-data.md): Public USGS river gauge readings and monitoring locations.
- [All Government workflows](https://fous.com/workflows/category/government)
