FEMA Disasters
Federally declared disasters with type, location and dates, from FEMA.
fema_disasters — the dataset name to pass to the Obscura API.
What one row means
One designated area (typically a county, parish, or municipality-equivalent) covered by a single FEMA disaster declaration, from the OpenFEMA `DisasterDeclarationsSummaries` feed — e.g. one row for "Lake (County), CO" under fire-management declaration FM-5644-CO. A single disaster (one `disaster_number`) fans out to one row per designated area, so the same disaster appears many times, once per county/area it covers.
One row per (id) — OpenFEMA-supplied row hash, unique per (disaster_number, designated_area)..
Point-in-time availability
Every Obscura dataset carries available_date: the calendar day the publisher made the row
available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the
same thing on every dataset in the catalog.
For fema_disasters: published: available_date = declarationDate, the day the President/FEMA Administrator signed the declaration and FEMA made it public (no distinct event_date — the declaration date IS the availability date).
Refresh cadence
Obscura refreshes fema_disasters daily — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.
Schema — 22 columns
The full public column list for fema_disasters, with the meaning of every field. The same
schema is served unauthenticated at https://api.obscura.trade/v1/catalog/fema_disasters.
| Column | Type | Description |
|---|---|---|
| id | text · not null | OpenFEMA-supplied row hash for this declaration-summary record; unique per (disaster_number, designated_area) pair. Primary key; not auto-generated by this pipeline — it is the source system's own dedup key, used verbatim as the upsert conflict target. |
| disaster_number | bigint | FEMA's numeric disaster identifier (e.g. 5644), shared by every designated-area row belonging to the same declared disaster. Source: OpenFEMA `disasterNumber`. |
| fema_declaration_string | text | Human-readable declaration code combining type, number, and state, e.g. "FM-5644-CO" or "DR-4721-TX". Source: OpenFEMA `femaDeclarationString`. |
| state | text | Two-letter USPS state/territory abbreviation of the declaration (e.g. "CO", "MP"). Source: OpenFEMA `state`. |
| declaration_type | text | FEMA declaration category code: "DR" (major disaster declaration), "EM" (emergency declaration), or "FM" (fire management assistance declaration). Source: OpenFEMA `declarationType`. |
| available_date | date | The disaster declaration date — day the President or FEMA Administrator signed the declaration and FEMA made it public. Sourced directly from OpenFEMA `declarationDate` (only the date part is kept). This table has no distinct event_date column since the declaration date IS the availability date; amendments that add new designated areas to an existing disaster can reuse the original declarationDate, understating lag on those rows. |
| incident_type | text | Free-text hazard category driving the declaration, e.g. "Fire", "Tropical Storm", "Flood", "Biological". Source: OpenFEMA `incidentType`. |
| declaration_title | text | FEMA's short human-readable name for the specific incident, e.g. "WILLOW FIRE". Source: OpenFEMA `declarationTitle`; updatable on conflict so late title corrections propagate. |
| designated_area | text | The specific county/parish/municipality-equivalent covered by this row, with FEMA's type suffix, e.g. "Lake (County)". Source: OpenFEMA `designatedArea`; this is the field that fans a single disaster out into many rows. |
| fips_state_code | text | Two-digit zero-padded FIPS state code (e.g. "08" for Colorado), text to preserve the leading zero. Source: OpenFEMA `fipsStateCode`. |
| fips_county_code | text | Three-digit zero-padded FIPS county/area code within the state. Source: OpenFEMA `fipsCountyCode`. Concatenated with fips_state_code gives the standard 5-digit county FIPS. |
| fy_declared | integer | U.S. federal fiscal year (Oct 1–Sep 30) in which the disaster was declared, e.g. 2026. Source: OpenFEMA `fyDeclared`. |
| incident_begin_date | date | The day the underlying hazard actually began (e.g. flood onset, fire ignition) — the true natural event date, distinct from the public declaration date. Source: OpenFEMA `incidentBeginDate` (date part only). |
| incident_end_date | date | The day the incident ended; null while the incident is ongoing. Pairs with `incident_begin_date` to give incident duration. Source: OpenFEMA `incidentEndDate` (date part only). |
| ih_program_declared | boolean | Whether the declaration authorizes the Individuals & Households Program (direct assistance to disaster survivors). Source: OpenFEMA `ihProgramDeclared`. |
| ia_program_declared | boolean | Whether the declaration authorizes Individual Assistance (aid to individuals and households). Source: OpenFEMA `iaProgramDeclared`. |
| pa_program_declared | boolean | Whether the declaration authorizes Public Assistance (aid to state, tribal, and local governments and certain nonprofits). Source: OpenFEMA `paProgramDeclared`. |
| hm_program_declared | boolean | Whether the declaration authorizes the Hazard Mitigation Grant Program (funding to reduce future disaster risk). Source: OpenFEMA `hmProgramDeclared`. |
| disaster_closeout_date | date | The day the disaster was administratively closed out; null while the disaster remains open. Lifecycle/status date. Source: OpenFEMA `disasterCloseoutDate` (date part only). |
| last_ia_filing_date | date | Deadline date for filing Individual Assistance applications; distinct from any kept date. Source: OpenFEMA `lastIAFilingDate` (date part only). |
| designated_incident_types | text | Coded multi-hazard flags (e.g. "2,F,T,W") giving finer detail than the single free-text `incident_type`. Source: OpenFEMA `designatedIncidentTypes`. |
| tribal_request | boolean | Whether the declaration was requested by a tribal government. Source: OpenFEMA `tribalRequest`. |
Access fema_disasters
Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.
import obscura
client = obscura.Client("obs_live_…")
df = client.query(
dataset="fema_disasters",
start="2024-01-01",
)
Create a free account Browse all 95 datasets
Frequently asked questions
What is in the fema_disasters dataset?
Federally declared disasters with type, location and dates, from FEMA. One designated area (typically a county, parish, or municipality-equivalent) covered by a single FEMA disaster declaration, from the OpenFEMA `DisasterDeclarationsSummaries` feed — e.g. one row for "Lake (County), CO" under fire-management declaration FM-5644-CO. A single disaster (one `disaster_number`) fans out to one row per designated area, so the same disaster appears many times, once per county/area it covers.
How do I avoid look-ahead bias with fema_disasters?
Filter on fema_disasters.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = declarationDate, the day the President/FEMA Administrator signed the declaration and FEMA made it public (no distinct event_date — the declaration date IS the availability date). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.
In what formats can I get fema_disasters?
As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="fema_disasters". The column schema is public at https://api.obscura.trade/v1/catalog/fema_disasters.
How often is fema_disasters updated?
Obscura refreshes fema_disasters on a daily schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.