Disaster declarations
fema:disaster-declarations uses the
OpenFEMA v2 API at
https://www.fema.gov/api/open/v2/DisasterDeclarationsSummaries, checked on
2026-09-18, when it held 70,405 rows.
One row is one declaration in one designated area: a county or county
equivalent, a tribal area, or a whole state. The rows carry no coordinates.
They are keyed by fipsStateCode and fipsCountyCode, which is what joins them
to Storm Events (STATE_FIPS, CZ_FIPS) and to any other county-level source.
- Both dates are required. A window selects declarations whose incident period overlaps it, inclusive at both ends, not declarations made inside it. DR-4776 was declared on 2024-04-30 for an incident running 2024-04-25 to 2024-05-09, so a query for 6 May finds it and a filter on the declaration date would not.
- A place is a named state or county:
--location Oklahoma,--location "Osage County, OK", or a quoted FIPS code.-p state=OKand-p fips=40113say the same thing explicitly; give a location or one of them, not both. Abboxorlat/lonis refused, since a rectangle names no place and cannot be turned back into counties (ADR 0034). With no place the query covers every state. - A county also returns its state's
Statewidedesignations, which cover it. See county code 000. -p incident_type=Tornadoand-p declaration_type=DRnarrow the rows; each takes one value or several, comma-separated. Incident types are written as FEMA writes them, such asSevere Storm. Declaration types areDR(major disaster),EM(emergency), andFM(fire management).-p include_open=truealso returns incidents with no end date. See incidents with no end date.variablesis rejected: the CSV columns are fixed, and rows are filtered locally. Free text is rejected as everywhere.- Listing asks for the count first, then makes one asset per page of 10,000
rows ordered by
declarationDate,id. Zero matching rows is an empty listing; a manifest source then needsallow_empty: true. - The pandas reader keeps
fipsStateCode,fipsCountyCode, andplaceCodeas text, so019stays019. The program columns (paProgramDeclaredand the rest) arrive as0and1. - Joining to Storm Events needs
CZ_FIPS.str.zfill(3): both sources keep the county code as text, and Storm Events writes1where FEMA writes001, so an unpadded join silently drops every county below 100. - Sizes are not known before download;
--dry-runreports them as unknown. - Access was verified without credentials.
usdata fetch fema:disaster-declarations --start 2024-05-06 --end 2024-05-06 --location "Osage County, OK"
usdata fetch fema:disaster-declarations --start 2024-05-06 --end 2024-05-06 -p state=OK -p incident_type=Tornado
What the service does not say
Three behaviours were found by getting them wrong, and the adapter is built around them (ADR 0035).
A timestamp in a filter must be a date alone.
declarationDate ge '2024-05-01T00:00:00.000Z' matches nothing, however the
colons are sent: the server compares against the still-percent-encoded literal,
and echoes it back as T00%3A00%3A00 in the response metadata.
declarationDate ge '2024-05-01' works. The adapter sends dates alone, so a
window given to the minute selects by its calendar dates.
Incidents with no end date
incidentEndDate eq null is valid here, and treating such rows as still open
is the obvious rule. It is the wrong default. 619 rows have no end date, and
for Oklahoma on 2024-05-06 that rule returns 75 rows of which 25 are DR-4776;
the other 50 are fire management declarations going back to 2005 whose
incidents were never closed, so they overlap every later window forever. They
are left out unless include_open asks for them. The cost is that a genuinely
open incident is left out too: pass include_open=true when asking about a
disaster still under way, and expect the old fire declarations with it.
County code 000
1,610 rows carry fipsCountyCode 000, which is not a county. FEMA's field
notes say a statewide declaration is entered that way "as multiple (all)
counties cannot be entered", and that tribal areas, which have no FIPS county
code, are identified through placeCode instead. Of those rows, 464 have
designatedArea Statewide and the rest name a reservation or other tribal
area.
A county query returns that county's rows and its state's Statewide rows,
since a statewide designation does cover the county. It returns no tribal
area, which is not a county even where it lies inside one. A state query
returns all of them.
The dataset is rebuilt every twenty minutes, but a row's lastRefresh and
hash move only when that record changes, so a pinned page is stable between
real revisions. Rows are revised as incidents close and programs are added,
which a locked restore reports as drift.
Upstream revisions
Agencies revise files in place. A locked restore downloads each pinned URL
and fails with a checksum mismatch when the bytes have changed; accept the
new bytes for chosen entries with pull --update, or re-resolve the whole
manifest with pull --force. A lockfile detects changed data; it does not
archive it. Keep the cache with the manifest and lockfile. See
provenance and drift.
Probes used to verify the endpoint and these behaviours:
B='https://www.fema.gov/api/open/v2/DisasterDeclarationsSummaries'
curl "$B?\$filter=declarationDate%20ge%20'2024-05-01'%20and%20declarationDate%20lt%20'2024-06-01'&\$top=1&\$inlinecount=allpages" # count 202
curl "$B?\$filter=declarationDate%20ge%20'2024-05-01T00:00:00.000Z'&\$top=1&\$inlinecount=allpages" # count 0: timestamp not decoded
curl "$B?\$filter=state%20eq%20'OK'%20and%20incidentBeginDate%20le%20'2024-05-06'%20and%20incidentEndDate%20ge%20'2024-05-06'&\$top=1&\$inlinecount=allpages" # count 25, all DR-4776
curl "$B?\$filter=incidentEndDate%20eq%20null&\$top=1&\$inlinecount=allpages" # count 619
curl "$B?\$filter=fipsCountyCode%20eq%20'000'&\$top=1&\$inlinecount=allpages" # count 1610
curl "$B?\$filter=disasterNumber%20eq%204776&\$top=2&\$format=csv"
Metadata sources
Every value in the catalog entry's resolution, cadence, citation, terms, variables, and limits comes from one of these pages. A field the agency does not publish is left empty rather than estimated.
- The dataset description, the twenty-minute cadence (
R/PT20M), and the meaning of county code000andplaceCode: the Disaster Declarations Summaries v2 page. - Variable descriptions: FEMA's own field metadata, from
https://www.fema.gov/api/open/v1/OpenFemaDataSetFieldsfiltered to this dataset and version. - Citation and terms: the OpenFEMA terms and conditions, which ask for the endpoint with its version, the date and time of access, and the disclaimer the catalog entry's citation ends with.
- License: the terms page states conditions of use and names no license. The entry records the data as a work of the U.S. Government.
- Latency is empty: FEMA states how often the dataset is rebuilt, not how soon a new declaration appears in it.
- No window limit is declared, because the adapter enforces none.
Reference
fema:disaster-declarations · Released · Included since usdata 0.21. FEMA Disaster Declarations Summaries.
At a glance
- Files: CSV
- Selection: Declarations whose incident period overlaps an inclusive UTC window, for a named state or county; a county also returns its state's statewide designations
- Required inputs: Both dates; optionally a state or county location, or state or fips, and type filters
- Open locally:
usdata[pandas]· Reader guide - On usdata.dev: Federal disaster declarations by county, with a walkthrough
- Studies: Which Oklahoma counties hit by a tornado on 6 May 2024 were under a federal disaster declaration?
Parameters
Pass these as --param name=value to the CLI, as params: entries in a manifest, or as keyword arguments to build_query.
| Parameter | Meaning |
|---|---|
declaration_type |
Declaration type(s): DR (major disaster), EM (emergency), FM (fire). |
fips |
Five-digit FIPS code of one county, such as 40113; also returns its state's Statewide designations. |
incident_type |
Incident type(s) as FEMA writes them, such as Tornado or Severe Storm. |
include_open |
Also return incidents with no end date, most of them old fire declarations that were never closed; false by default. |
state |
Two-letter postal code of one state or territory, such as OK. |
Variables
| Variable | Units | Meaning |
|---|---|---|
femaDeclarationString |
— | Declaration type, disaster number, and state code joined, such as DR-4393-NC |
disasterNumber |
— | Sequentially assigned number designating the declared event |
state |
— | Two-letter code of the state, district, or territory |
declarationType |
— | DR major disaster, EM emergency, or FM fire management |
declarationDate |
ISO 8601 UTC | Date the disaster was declared |
fyDeclared |
— | Fiscal year in which the disaster was declared |
incidentType |
— | Primary type of incident, such as Fire or Flood |
declarationTitle |
— | Title for the disaster |
ihProgramDeclared |
— | Whether the Individuals and Households program was declared |
iaProgramDeclared |
— | Whether the Individual Assistance program was declared |
paProgramDeclared |
— | Whether the Public Assistance program was declared |
hmProgramDeclared |
— | Whether the Hazard Mitigation program was declared |
incidentBeginDate |
ISO 8601 UTC | Date the incident itself began |
incidentEndDate |
ISO 8601 UTC | Date the incident itself ended; empty while open |
disasterCloseoutDate |
ISO 8601 UTC | Date all financial transactions for all programs are completed |
tribalRequest |
— | Whether a Tribal Nation submitted the request directly to the President |
fipsStateCode |
— | Two-digit FIPS code of the state, district, or territory |
fipsCountyCode |
— | Three-digit FIPS code of the county; 000 for a statewide or tribal designation |
placeCode |
— | FEMA's own location code, 99 plus the county code, covering areas with no FIPS county code |
designatedArea |
— | Name of the geographic area included in the declaration |
declarationRequestNumber |
— | Number assigned to the declaration request |
declarationRequestDate |
ISO 8601 UTC | Date the declaration request was made |
lastIAFilingDate |
ISO 8601 UTC | Last date Individual Assistance requests can be filed; after 1998 only |
incidentId |
— | Identifier of the incident, which may or may not become a declared disaster |
region |
— | FEMA region, 1 to 10, where the disaster occurred |
designatedIncidentTypes |
— | Comma-separated codes of every incident type designated for the disaster |
lastRefresh |
ISO 8601 UTC | When the record was last updated in the API data store |
hash |
— | MD5 hash of the record's fields and values |
id |
— | Unique id assigned to the record |
Catalog facts
- Availability: since 0.21
- Domain: Natural hazards
- Spatial resolution: One row per designated area: a county or county equivalent, a tribal area, or a whole state
- Temporal resolution: Calendar dates for the declaration and for the start and end of the incident
- Updates: Every twenty minutes (R/PT20M); a record's lastRefresh moves only when it changes
- Terms of use: https://www.fema.gov/about/openfema/terms-conditions
- Citation: Federal Emergency Management Agency (FEMA), OpenFEMA Dataset: Disaster Declarations Summaries - v2. Retrieved from https://www.fema.gov/api/open/v2/DisasterDeclarationsSummaries on [date, time]. This product uses the Federal Emergency Management Agency's OpenFEMA API, but is not endorsed by FEMA. The Federal Government or FEMA cannot vouch for the data or analyses derived from these data after the data have been retrieved from the Agency's website(s).
- Catalog date range: 1953-01-01 to open-ended
- Coverage varies by station, product, and date; the range above does not guarantee observations.
- Upstream documentation
- License: US Government Work (public domain)
- Transport:
http - Adapter:
usdata.providers.fema.declarations:DisasterDeclarations