Technical writing

FEMA Disaster Declarations: The Federal Database Behind 70 Years of US Natural Disasters

· 14 min read· AI Analytics
FEMADisastersEmergency ManagementNatural DisastersFederal Data

The FEMA disaster declaration database records every major disaster, emergency, and fire management assistance declaration since 1953 — over 4,600 major disaster declarations covering hurricanes, floods, tornadoes, wildfires, blizzards, and pandemics, each unlocking billions in federal assistance.

The Stafford Act and the declaration framework

Federal disaster assistance in the United States flows through a single statutory mechanism: the Robert T. Stafford Disaster Relief and Emergency Assistance Act, enacted in 1988 and codified at 42 U.S.C. §§ 5121–5207. The Stafford Act replaced a patchwork of ad hoc federal relief statutes that had accumulated since the Federal Disaster Relief Act of 1950 and established the modern presidential disaster declaration system. Everything downstream — the Individual Assistance payments to displaced households, the Public Assistance grants to state and local governments, the Hazard Mitigation Grant Program funding — derives from a single presidential signature on a Stafford Act declaration.

The Act defines three distinct declaration types, each calibrated to a different severity threshold and carrying different programmatic authorities:

  • Major Disaster Declaration (DR) — the most significant and most common type. Issued when a disaster is of sufficient severity and magnitude that state and local resources are overwhelmed. A Major Disaster Declaration can activate Individual Assistance (IA) for affected residents, Public Assistance (PA) for state and local government infrastructure, and the Hazard Mitigation Grant Program (HMGP). Not every declaration activates all three programs; the presidential declaration specifies which counties and which program types are designated. DR declarations since 1953 now number over 4,600.
  • Emergency Declaration (EM) — a more limited federal response intended for situations that do not meet the Major Disaster threshold or where federal action is needed immediately before conditions worsen. Emergency declarations do not trigger Individual Assistance. They authorize coordinating federal activities, directing federal agencies to utilize their resources, and in some cases providing direct federal assistance to state and local governments. The 1979 Three Mile Island nuclear incident and many pre-landfall hurricane preparations have been declared as Emergencies.
  • Fire Management Assistance Grant (FMAG) — a specialized declaration for wildfires that threaten to become major disasters. FMAGs are available when a fire is burning uncontrolled on federal, state, or local land and threatens to cause major disaster-level destruction. They unlock federal cost-sharing for firefighting resources. The FEMA Administrator, not the President, approves FMAGs. California, Texas, Idaho, Oregon, and Washington generate the largest share of FMAG declarations each year.

Scale: four decades of accelerating declarations

The declaration database reflects the full history of federal disaster policy since the Eisenhower administration. The early decades were sparse: the 1950s and 1960s averaged fewer than 20 major disaster declarations per year. Through the 1970s and 1980s, annual totals crept upward as Congress expanded the Stafford Act's programmatic reach and as more states learned to navigate the declaration process.

The 1990s saw the first significant acceleration, driven partly by a series of major events — Hurricane Andrew in 1992, the Great Flood of 1993, the Northridge earthquake in 1994, Hurricane Floyd in 1999 — and partly by deliberate policy choices. The Federal Emergency Management Agency under James Lee Witt during the Clinton administration explicitly expanded FEMA's mission toward proactive disaster mitigation and expanded eligibility criteria for declarations. Annual declaration counts in the 1990s averaged approximately 45 per year, roughly double the 1970s baseline.

Recent years have consistently produced 50 to 60 major disaster declarations annually. The most extreme single-year data point in the database is the COVID-19 pandemic: in March 2020, President Trump issued DR-4480, a single major disaster declaration covering all 50 states, the District of Columbia, five territories, and three tribal nations simultaneously — an unprecedented use of the Stafford Act that had no prior parallel. Prior to COVID-19, major disaster declarations had never been issued for a public health emergency on a nationwide basis; the Stafford Act had been interpreted as limited to geographically defined natural disasters. The COVID declaration resolved that interpretive question and established a precedent for future public health emergencies.

All 50 states, the District of Columbia, Puerto Rico, the U.S. Virgin Islands, Guam, American Samoa, and the Commonwealth of the Northern Mariana Islands are eligible for Stafford Act declarations. Texas, California, Florida, and Louisiana are consistently the highest-frequency recipients, reflecting their geographic exposure to the principal US disaster types: Gulf Coast and Atlantic hurricanes, California wildfires and earthquakes, Texas floods and severe storms, Louisiana storm surge and river flooding.

The declaration process

A presidential disaster declaration does not begin with the President. It begins with a governor — or, for tribal disasters, a tribal leader — who concludes that the event has overwhelmed state and local response capacity. The Stafford Act process follows a defined sequence:

After an incident, FEMA coordinates with the state emergency management agency to conduct a Preliminary Damage Assessment (PDA). The PDA is a joint field survey in which FEMA personnel and state officials visit affected areas, document damage to individual households and public infrastructure, estimate total losses, and assess whether the damage threshold for a declaration has been met. FEMA uses damage per-capita thresholds by state (varying from approximately $1.49 to $3.86 per capita depending on state tax base and fiscal capacity) as one factor in evaluating declaration requests, though the threshold is not a strict legal requirement.

If the PDA supports a declaration, the governor submits a formal request to the President through the FEMA regional administrator, typically within 30 days of the incident date. The request specifies which counties are affected, which program types are sought (IA, PA, HMGP), and what state and local matching resources are being committed. FEMA's regional administrator reviews the request and forwards a recommendation to the FEMA Administrator. The Administrator then transmits a recommendation to the President.

The President approves or denies the declaration. There is no set deadline for presidential action, but the administrative process from PDA initiation to declaration averages approximately 18 days for major disasters. Time-sensitive events — hurricanes with landfall forecasts, for example — can trigger emergency declarations in hours, before an incident occurs, to pre-position federal resources. Post-landfall major disaster declarations for the same event follow within days of the PDA.

Presidential denials are uncommon but occur. Governors whose requests are denied can appeal within 30 days, and Congress can also direct declarations through legislation, as it did for the September 11 attacks (which received an emergency declaration within hours and a major disaster declaration three days later, with Congress subsequently appropriating over $40 billion outside the Stafford Act framework for the recovery).

Public Assistance: the infrastructure reimbursement program

Public Assistance is the largest programmatic component of most major disaster declarations by dollar value. PA reimburses state and local governments, certain state agencies, and eligible private nonprofit organizations for the costs of emergency response and permanent infrastructure repair. The program is structured around seven work categories:

  • Category A: debris removal — clearing trees, mud, and wreckage from public rights-of-way and public property.
  • Category B: emergency protective measures — evacuation costs, search and rescue, temporary generators, emergency sheltering, sandbagging, and other immediate life-safety actions.
  • Categories C–G: permanent work to restore disaster-damaged public infrastructure. Category C covers roads and bridges; Category D, water control facilities (levees, drainage systems); Category E, public buildings and equipment; Category F, public utilities (water systems, wastewater, power); Category G, parks, recreational facilities, and other public property.

The standard federal cost share for PA is 75% federal and 25% state and local. For catastrophic events, the President can raise the federal share. After Hurricane Katrina in 2005, the federal cost share for Louisiana PA was raised to 100% for the most severely affected parishes — an unprecedented step reflecting the scale of infrastructure destruction relative to Louisiana's fiscal capacity. Similarly, after Hurricanes Irma and Maria struck Puerto Rico and the Virgin Islands in 2017, the federal cost share was raised to reflect the territories' limited tax base and pre-existing fiscal distress (Puerto Rico was in bankruptcy proceedings at the time of the storms).

The dollar scale of PA in major disasters is substantial. Hurricane Katrina generated more than $100 billion in total federal recovery expenditures, with PA accounting for the largest share. Hurricane Sandy in 2012 produced more than $50 billion in federal spending, again dominated by PA for New Jersey, New York, and Connecticut infrastructure. The combined 2017 hurricane season — Harvey, Irma, and Maria — produced more than $40 billion in PA obligations. FEMA's PA program is, by volume of federal expenditure, one of the largest grant programs in the federal government outside of Medicaid and Medicare.

Individual Assistance: direct support for displaced households

The Individual Assistance program provides direct financial support to households affected by a presidentially declared disaster. It operates through two primary components of the Individuals and Households Program (IHP):

Housing Assistance covers temporary housing costs for displaced residents — rental assistance for temporary housing while a primary residence is repaired or replaced, and in some cases direct housing in FEMA-provided temporary units (trailers, manufactured housing) when rental housing is unavailable in sufficient quantity. The IHP housing assistance maximum is adjusted annually for inflation; as of 2024 it is $43,900 per household per disaster. The limit is applied per disaster number, meaning households affected by multiple successive declared disasters in different years are eligible for multiple grants.

Other Needs Assistance covers personal property loss, medical and dental expenses, childcare costs, moving and storage, and other disaster-caused expenses not covered by Housing Assistance or insurance. The ONA maximum is the same as Housing Assistance: $43,900 per household in 2024.

Individual Assistance is separate from the National Flood Insurance Program (NFIP), which pays claims on flood insurance policies regardless of whether a federal disaster declaration exists. IA is a last-resort program; FEMA's implementing regulations require applicants to apply for Small Business Administration (SBA) disaster loans first. SBA disaster loans are available at subsidized interest rates for homeowners, renters, and businesses; applicants who are denied SBA loans or who demonstrate that the loan would not meet their needs become eligible for IHP's Other Needs Assistance. This sequencing — SBA loan first, IHP as backstop — is a persistent source of confusion among disaster survivors.

One significant expansion of Individual Assistance authority during the COVID-19 pandemic was COVID-19 Funeral Assistance, authorized under the Stafford Act through the DR-4480 declaration. FEMA ultimately paid more than $2 billion in funeral assistance to approximately 300,000 eligible families, with a maximum benefit of $9,000 per funeral. The program was the first time the Stafford Act's IA authority had been used for pandemic-related individual losses at national scale.

Hazard mitigation: the prevention programs

Every major disaster declaration that includes Public Assistance automatically triggers the Hazard Mitigation Grant Program (HMGP). HMGP funds pre-disaster mitigation activities to reduce future disaster losses — buyouts of flood-prone properties, elevation of at-risk structures, hardening of critical facilities, warning system installation, and community-wide mitigation planning. The HMGP allocation is calculated as a percentage of the estimated total PA grant for the disaster: 15% of the first $2 billion in estimated PA, 10% of the next $2 billion, and 7.5% of estimated PA above $4 billion.

HMGP is a post-disaster funding mechanism. Pre-disaster mitigation funding flows through two separate programs. The Building Resilient Infrastructure and Communities (BRIC) program, established by the Disaster Recovery Reform Act of 2018 and substantially expanded by the Infrastructure Investment and Jobs Act (IIJA) of 2021, provides over $1 billion annually for pre-disaster mitigation independent of any specific disaster declaration. The Flood Mitigation Assistance (FMA) program funds mitigation specifically for repetitive and severe repetitive flood loss properties under the National Flood Insurance Program.

The policy logic of HMGP is straightforward: every dollar spent on pre-disaster mitigation saves an estimated $6 in post-disaster recovery costs, according to the National Institute of Building Sciences. In practice, HMGP and BRIC funding is unevenly distributed; states with more sophisticated hazard mitigation planning capacity and larger emergency management bureaucracies are better positioned to develop competitive applications and draw down available funding. This creates a structural inequality in mitigation investment that mirrors the pre-existing disparities in state and local emergency management capacity.

The OpenFEMA API: accessing the declaration database

FEMA publishes the complete disaster declaration database through its OpenFEMA data portal at no cost, with no API key required. The primary endpoint for declaration data is:

https://www.fema.gov/api/open/v2/disasterDeclarationsSummaries

The API supports JSON, CSV, and XML response formats via a $formatquery parameter. Pagination is handled through $skip (offset) and $top (page size, maximum 1,000 records per request). The full dataset contains more than 60,000 rows when all declaration types and designated-area-level rows are included; a single Major Disaster Declaration for a large state may generate dozens of rows, one per designated county or tribal nation.

Key fields in the disasterDeclarationsSummaries schema:

  • disasterNumber — the unique DR/EM/FM number assigned by FEMA. DR-4480 is the COVID-19 declaration; DR-1603 is Katrina; DR-4085 is Sandy.
  • declarationType — “DR” (Major Disaster), “EM” (Emergency), or “FM” (Fire Management Assistance).
  • declarationDate — ISO 8601 timestamp of the presidential or administrator signature.
  • state — two-letter USPS abbreviation, including territories (PR, VI, GU, AS, MP).
  • incidentType — one of approximately 20 standard FEMA incident categories: Hurricane, Flood, Tornado, Severe Storm(s), Fire, Earthquake, Winter Storm, Biological, Chemical, Coastal Storm, Dam/Levee Break, Drought, Fishing Losses, Freezing, Landslide, Mud/Landslide, Other, Severe Ice Storm, Snow, Straight-line Winds, Terrorist, Toxic Substances, Tsunami, Typhoon, Volcanic Eruption.
  • incidentBeginDate / incidentEndDate — the incident period for which federal assistance is authorized.
  • fyDeclared — the federal fiscal year of the declaration.
  • designatedArea — the county, parish, borough, or tribal nation designated for assistance under this declaration row.
  • iaProgramDeclared / paProgramDeclared / hmProgramDeclared — boolean flags indicating which assistance programs were authorized for this designated area.

The API supports OData-style filtering via $filter, ordering via$orderby, and field selection via $select. To retrieve only Major Disaster Declarations, filter on declarationType eq 'DR'. To retrieve declarations for a specific state, filter on state eq 'TX'. Compound filters use standard OData and / or operators.

One important structural note: the disasterDeclarationsSummariesendpoint returns one row per designated area per declaration, not one row per declaration. A major disaster covering 30 counties generates 30 rows in the API response, all sharing the same disasterNumber. For declaration-level analysis, group by disasterNumber and deduplicate before counting.

Notable declarations in the database

The declaration record captures the full arc of US natural disaster history since the mid-twentieth century. Some declarations are notable for their programmatic scale, their precedent-setting nature, or their long-term policy consequences:

DR-1603 (Hurricane Katrina, 2005) — the costliest disaster in FEMA history. Katrina made landfall as a Category 3 hurricane near Buras, Louisiana on August 29, 2005, and the subsequent failure of the New Orleans levee system transformed a major hurricane into a catastrophic urban flood. The declaration covered Louisiana, Mississippi, and Alabama; federal expenditures ultimately exceeded $120 billion, including $75 billion in emergency supplemental appropriations from Congress. The FEMA response failures exposed by Katrina led directly to the Post-Katrina Emergency Management Reform Act of 2006, which substantially restructured FEMA's authorities and resources.

DR-4085 (Hurricane Sandy, 2012) — the most expensive disaster in US history for a non-Gulf-Coast event. Sandy made landfall as a post-tropical cyclone near Brigantine, New Jersey on October 29, 2012, producing record storm surge along the New Jersey shore and in New York Harbor. Federal expenditures exceeded $65 billion, including $50.5 billion in supplemental appropriations in the Disaster Relief Appropriations Act of 2013. Sandy's impact on New York City subway tunnels, electrical infrastructure, and coastal neighborhoods catalyzed major flood resilience investments and a sustained policy debate about coastal development and NFIP reform.

DR-4332 / DR-4336 / DR-4338 (Harvey, Irma, Maria, 2017) — the 2017 Atlantic hurricane season produced three separate declarations within six weeks. Harvey's catastrophic rainfall over the Houston metropolitan area — 50+ inches at some locations over four days — set a US record for rainfall from a tropical cyclone and flooded more than 150,000 homes. Irma crossed Florida as a Category 4 storm. Maria struck Puerto Rico as a Category 4 storm and destroyed the island's electrical grid; the subsequent power outage lasted nearly a year in some areas, and excess mortality estimates ranged from 1,400 to 3,000. The 2017 season drove total NFIP losses above the program's borrowing capacity and prompted Congress to cancel $16 billion of the NFIP's Treasury debt.

DR-4480 (COVID-19, 2020) — the nationwide major disaster declaration, the first of its kind. The declaration's unprecedented geographic scope and its use of the Stafford Act for a public health emergency rather than a geographically bounded natural disaster established a new category of federal emergency response. The declaration authorized FEMA to coordinate federal medical countermeasure distribution, supplemented the CARES Act's economic relief provisions, and ultimately authorized the COVID-19 Funeral Assistance program. The legal and policy questions raised by a nationwide declaration — about which Stafford Act authorities can be exercised when the disaster is the entire country — have not been fully resolved.

Python: analyzing the OpenFEMA declaration database

The following script retrieves all Major Disaster Declarations from the OpenFEMA API, handles pagination automatically, and produces four tabular analyses: declarations by decade (1960s through 2020s), the top ten incident types, the top fifteen states by declaration count with Individual Assistance and Public Assistance percentages, and an annual trend table with a five-year moving average. It also prints a program designation breakdown showing what fraction of declarations activated each Stafford Act program. Requirements: requests andpandas.

import requests
import pandas as pd
from collections import defaultdict

# ---------------------------------------------------------------------------
# FEMA Disaster Declarations Analysis via OpenFEMA API
# Endpoint: https://www.fema.gov/api/open/v2/disasterDeclarationsSummaries
# No API key required. Supports JSON, CSV, XML.
# Pagination: $skip / $top (max 1,000 per page).
# ---------------------------------------------------------------------------

BASE_URL = "https://www.fema.gov/api/open/v2/disasterDeclarationsSummaries"

def fetch_all_major_disasters():
    """Fetch every Major Disaster Declaration (declarationType == \'DR\') from OpenFEMA."""
    records = []
    skip = 0
    page_size = 1000

    params = {
        "$filter": "declarationType eq \'DR\'",
        "$orderby": "declarationDate asc",
        "$top": page_size,
        "$format": "json",
        "$select": (
            "disasterNumber,declarationDate,declarationType,state,"
            "incidentType,incidentBeginDate,incidentEndDate,fyDeclared,"
            "designatedArea,iaProgramDeclared,paProgramDeclared,hmProgramDeclared"
        ),
    }

    print("Fetching Major Disaster Declarations from OpenFEMA...")
    while True:
        params["$skip"] = skip
        resp = requests.get(BASE_URL, params=params, timeout=60)
        resp.raise_for_status()
        data = resp.json()
        batch = data.get("DisasterDeclarationsSummaries", [])
        if not batch:
            break
        records.extend(batch)
        total_returned = data.get("metadata", {}).get("count", len(batch))
        print(f"  Fetched {len(records):,} records (batch size {len(batch)})...")
        if len(batch) < page_size:
            break
        skip += page_size

    print(f"Total Major Disaster Declarations retrieved: {len(records):,}\n")
    return records

records = fetch_all_major_disasters()
df = pd.DataFrame(records)

# Parse declaration date
df["declarationDate"] = pd.to_datetime(df["declarationDate"], errors="coerce")
df["year"] = df["declarationDate"].dt.year
df["decade"] = (df["year"] // 10 * 10).astype("Int64")

# ---------------------------------------------------------------------------
# 1. Declarations by decade
# ---------------------------------------------------------------------------
decade_counts = (
    df.groupby("decade")["disasterNumber"]
    .count()
    .reset_index()
    .rename(columns={"disasterNumber": "declarations"})
    .sort_values("decade")
)

print("=== Major Disaster Declarations by Decade ===")
print(f"  {'Decade':<10}  {'Declarations':>14}")
print("  " + "-" * 28)
for _, row in decade_counts.iterrows():
    decade_label = f"{int(row['decade'])}s"
    bar = "#" * (row["declarations"] // 20)
    print(f"  {decade_label:<10}  {row['declarations']:>14,}  {bar}")

# ---------------------------------------------------------------------------
# 2. Declarations by incident type (top 10)
# ---------------------------------------------------------------------------
incident_counts = (
    df.groupby("incidentType")["disasterNumber"]
    .count()
    .reset_index()
    .rename(columns={"disasterNumber": "declarations"})
    .sort_values("declarations", ascending=False)
    .head(10)
)

print("\n=== Top 10 Incident Types ===")
print(f"  {'Incident Type':<35}  {'Declarations':>14}")
print("  " + "-" * 53)
for _, row in incident_counts.iterrows():
    print(f"  {row['incidentType']:<35}  {row['declarations']:>14,}")

# ---------------------------------------------------------------------------
# 3. Top 15 states by declaration count
# ---------------------------------------------------------------------------
state_counts = (
    df.groupby("state")["disasterNumber"]
    .count()
    .reset_index()
    .rename(columns={"disasterNumber": "declarations"})
    .sort_values("declarations", ascending=False)
    .head(15)
)

print("\n=== Top 15 States by Major Disaster Declaration Count ===")
print(f"  {'State':<8}  {'Declarations':>14}  {'IA Pct':>8}  {'PA Pct':>8}")
print("  " + "-" * 44)

for _, row in state_counts.iterrows():
    state_df = df[df["state"] == row["state"]]
    ia_pct = 100.0 * state_df["iaProgramDeclared"].sum() / len(state_df)
    pa_pct = 100.0 * state_df["paProgramDeclared"].sum() / len(state_df)
    print(
        f"  {row['state']:<8}  {row['declarations']:>14,}"
        f"  {ia_pct:>7.1f}%  {pa_pct:>7.1f}%"
    )

# ---------------------------------------------------------------------------
# 4. Annual trend with 5-year moving average
# ---------------------------------------------------------------------------
annual = (
    df.groupby("year")["disasterNumber"]
    .count()
    .reset_index()
    .rename(columns={"disasterNumber": "declarations"})
    .sort_values("year")
)
annual["ma5"] = annual["declarations"].rolling(5, min_periods=3).mean()

print("\n=== Annual Major Disaster Declarations (5-year moving average) ===")
print(f"  {'Year':<6}  {'Declarations':>14}  {'5-yr MA':>10}")
print("  " + "-" * 36)
for _, row in annual.iterrows():
    if pd.notna(row["year"]) and row["year"] >= 1960:
        ma_str = f"{row['ma5']:>10.1f}" if pd.notna(row["ma5"]) else f"{'—':>10}"
        print(f"  {int(row['year']):<6}  {row['declarations']:>14,}  {ma_str}")

# ---------------------------------------------------------------------------
# 5. Program designation breakdown
# ---------------------------------------------------------------------------
ia_count = int(df["iaProgramDeclared"].sum())
pa_count = int(df["paProgramDeclared"].sum())
hm_count = int(df["hmProgramDeclared"].sum())
total = len(df)

print("\n=== Program Designation Breakdown ===")
print(f"  Individual Assistance (IA) declared:    {ia_count:>6,}  ({100*ia_count/total:.1f}%)")
print(f"  Public Assistance (PA) declared:        {pa_count:>6,}  ({100*pa_count/total:.1f}%)")
print(f"  Hazard Mitigation (HM) declared:        {hm_count:>6,}  ({100*hm_count/total:.1f}%)")
print(f"  Total Major Disaster Declarations:      {total:>6,}")

The script paginates through the full dataset at 1,000 records per request. Because the API returns one row per designated area, the total row count will exceed the number of distinct disaster declarations; the script deduplicates on disasterNumber for declaration-level counts. The iaProgramDeclared, paProgramDeclared, and hmProgramDeclared boolean fields are returned as strings (“true”/ “false”) from the JSON endpoint; pandas will parse them correctly as booleans if you cast to bool after loading. For the full dataset including Emergency and Fire Management declarations, remove the $filter parameter or change it to filter on declarationType eq 'EM'.

Data limitations and analytical notes

The disaster declaration database is a record of federal policy decisions, not a comprehensive inventory of US natural disasters. Disasters that did not reach the threshold for a presidential declaration — because state and local resources were sufficient, because the governor did not request a declaration, or because the FEMA Administrator recommended denial — do not appear in the database. The threshold for a declaration has shifted over time as the program has expanded and as political dynamics have changed; academic research has documented that declaration rates increase in presidential election years and in swing states, suggesting that political considerations influence declaration decisions at the margin.

The incidentType field reflects FEMA's categorization at the time of declaration and has not been retroactively standardized across decades. Early declarations used different category names than current practice, and some events are categorized inconsistently. “Severe Storm(s)” and “Severe Storm” appear as separate categories in some queries; “Coastal Storm” overlaps with “Hurricane” in some coastal events. Cleaning the incident type field requires grouping related categories before performing incident-type analysis.

PA obligation amounts are not available in the disaster declarations summary dataset. To analyze dollar amounts by disaster, FEMA publishes separate datasets through OpenFEMA: the Public Assistance Funded Projects Detail dataset (publicAssistanceApplicants and publicAssistanceFundedProjectsDetails) provides project-level PA obligation data. Individual Assistance aggregate statistics are available through the registrationIntakeIndividualsHouseholdProgramsdataset. These supplementary datasets can be joined to the declarations summary ondisasterNumber for integrated analysis of declaration counts, affected geographies, and program expenditures.

The declaration database is updated continuously as new declarations are issued and existing declarations are amended. FEMA publishes dataset refresh timestamps through the OpenFEMA metadata endpoint. For production data pipelines, thelastRefresh field in the API metadata response should be used to trigger incremental updates rather than full re-downloads.


Related: FEMA NFIP flood insurance claims · NOAA Storm Events database

Part of the Federal Regulatory Data Hub.