FEMA API: List disaster declarations
Lists federal disaster declarations in a US state. You can narrow the list by county, declaration date and incident category. Each disaster comes back with all of its designated counties.
Unofficial. Not affiliated with or endorsed by FEMA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Since optional
since Include declarations on or after this date (YYYY-MM-DD), for example 2022-01-01. Defaults to five years ago.
2022-01-01
- State, required
state US state name or two-letter code, for example Florida or FL.
FL
- County optional
county County name, for example Lee County.
Lee County
Default
.- Max Results optional
max_results Maximum number of disasters, for example 20.
2
Whole number from 1 to 100. Default
20.- Disaster Type optional
disaster_type Incident category, for example hurricane; other includes incidents outside the named categories.
any (default)
One of
any,hurricane,flood,fire,severe_storm,tornado,winter_storm,earthquake,other.
Input as JSON
{ "since": "2022-01-01", "state": "FL", "county": "Lee County", "max_results": 2}Output
{ "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" ] } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"fema.gov/list_disaster_declarations","input":{"since":"2022-01-01","state":"FL","county":"Lee County","max_results":2}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "fema.gov/list_disaster_declarations" , "input": { "since": "2022-01-01", "state": "FL", "county": "Lee County", "max_results": 2 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "fema.gov/list_disaster_declarations" , "input": { "since": "2022-01-01", "state": "FL", "county": "Lee County", "max_results": 2 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run fema.gov/list_disaster_declarations# with {"since":"2022-01-01","state":"FL","county":"Lee County","max_results":2}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "state" ], "properties": { "since": { "type": "string", "description": "Include declarations on or after this date (YYYY-MM-DD), for example 2022-01-01. Defaults to five years ago." }, "state": { "type": "string", "description": "US state name or two-letter code, for example Florida or FL." }, "county": { "type": "string", "default": "", "description": "County name, for example Lee County." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum number of disasters, for example 20." }, "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." } }}Output schema
{ "type": "object", "required": [ "disasters" ], "properties": { "disasters": { "type": "array", "items": { "type": "object", "properties": { "link": { "type": "string" }, "title": { "type": "string" }, "declared_date": { "type": "string" }, "incident_type": { "type": "string" }, "disaster_number": { "type": "string" }, "counties_covered": { "type": "array", "items": { "type": "string" } }, "declaration_type": { "type": "string" }, "incident_end_date": { "type": [ "string", "null" ] }, "incident_start_date": { "type": [ "string", "null" ] }, "assistance_available": { "type": "array", "items": { "type": "string" } } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
fema.gov/list_disaster_declarations- Returns
- disaster number, title, incident type, declaration type, dates, counties, assistance, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method fema.gov/list_disaster_declarations with the inputs above.
Ask your agent
- Show me federal disaster declarations in Texas since 2023-01-01, limit to 15 results
- Which hurricane disasters were declared in Florida in the last few years?
- List flood-related federal declarations for Lee County, Florida since 2020-06-01
- Any tornado disaster declarations in Oklahoma since 2022-01-01? Show up to 30
- I need winter storm declarations for Louisiana after 2021-02-01 with their designated counties on the fema.gov listing
See more
All FEMA methodsFinds the FEMA flood zone, risk designation, base flood elevation, flood map panel and community for a US street address, using Census address coordinates and FEMA's National Flood Hazard Layer.
fema.gov/get_flood_zoneLists active InciWeb fire incidents in a US state, newest table updates first, with size, containment, location, cause, dates and any evacuation or closure note. Prescribed fires and other fire-related incidents can appear.
inciweb.wildfire.gov/list_active_wildfiresGets the latest reported status and dated update for a named InciWeb wildfire, including evacuation and closure notices. Past notices may no longer apply; older fires not in InciWeb's index may not be found.
inciweb.wildfire.gov/get_wildfireLists significant worldwide earthquakes for the past day, week, or month, newest first, with USGS PAGER alert levels and impact summaries when USGS provides them.
earthquake.usgs.gov/list_significant_earthquakesSearches USAspending federal awards by keywords, awarding agency, state of performance and date across contracts, grants, loans and direct payments. Searches from October 1, 2007 onward.
usaspending.gov/search_federal_awardsFinds FDA food recall enforcement reports by product, brand, or allergen, newest first. Reports are updated weekly and recall statuses may lag.
open.fda.gov/search_food_recallsList EONET natural events with latest observations in the past number of days, most recent first. A country or region filter matches reported event locations against mapped boundaries; locations and ongoing status are approximate, and not all events have a reported size or strength.
nasa.gov/list_natural_eventsLists active US weather watches, warnings and advisories for a city, address, ZIP code or state, most severe first, then newest.
weather.gov/list_weather_alerts