FEMA Disaster Declarations Scraper avatar

FEMA Disaster Declarations Scraper

Pricing

Pay per event

Go to Apify Store
FEMA Disaster Declarations Scraper

FEMA Disaster Declarations Scraper

Export US federal disaster declaration history from OpenFEMA by state, county, incident type, declaration type and date range as clean JSON, CSV or Excel rows — no FEMA.gov hand-paging or OData client required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share


🎯 What this scrapes

OpenFEMA publishes every US federal disaster declaration — hurricanes, floods, fires, severe storms — back to 1953, but reaching a specific slice (one state, one county, one incident type, one date range) means hand-paging FEMA.gov or writing your own OData client against a filter syntax that rejects a malformed clause with a bare 400. This Actor builds that $filter expression from up to five inputs, pages it deterministically with $top/$skip, and hands back clean, typed rows — disaster number, declaration type, incident dates, program flags, county — ready for a spreadsheet or a risk model.

🔥 What we handle for you

  • 🧱 Multi-filter OData query building — combine state, county, incident type, declaration type and date range in one request instead of hand-writing $filter syntax.
  • 📄 Deterministic paging$top/$skip walked against OpenFEMA's own result count, capped by your maxResults, never over- or under-fetching.
  • Honest zero-row handling — a narrow filter that matches nothing finishes as a successful run with a clear status message, not a failed one.
  • 🔁 Retries transient 429/5xx responses with exponential backoff instead of failing the whole run.
  • 🧊 Per-record fault isolation — one malformed record is skipped and logged; it never takes down the rest of the run.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Back a county-level insurance or restoration-contractor lead list with real declaration history.
  • Feed a real-estate risk model with disaster frequency by state or county.
  • Build an emergency-management consulting briefing on a state's declaration record.
  • Track new declarations for a state or incident type on a schedule.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
statestringno'FL'2-letter US postal code (e.g. FL). Leave empty for all states.
countystringno'—'Free-text county / designated-area match (e.g. Pinellas). Leave empty for all counties.
incidentTypestringno'Hurricane'Free text, e.g. Hurricane, Flood, Fire. Leave empty for all incident types.
declarationTypestringno'—'Restrict to one declaration type. Leave unset for all.
dateFromstringno'—'Only declarations on or after this date, as YYYY-MM-DD. Leave empty for no floor.
dateTostringno'—'Only declarations on or before this date, as YYYY-MM-DD. Leave empty for no ceiling.
maxResultsintegerno20Hard cap on total rows fetched across all pages. Each row is one billed result event.
proxyConfigurationobjectno{'useApifyProxy': False}OpenFEMA is a public API and does not need a proxy. Leave this off unless your account requires egress through Apify…

Example input

{
"state": "FL",
"incidentType": "Hurricane",
"maxResults": 5,
"proxyConfiguration": {
"useApifyProxy": false
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
fema_declaration_stringstringCombined declaration identifier, e.g. DR-4734-FL.
disaster_numberintegerFEMA disaster number.
statestring2-letter state postal code.
declaration_typestringDR (major disaster), EM (emergency) or FM (fire management).
declaration_datestringDate the declaration was issued (ISO datetime string).
fy_declaredintegerFederal fiscal year the declaration was made in.
incident_typestringe.g. Hurricane, Flood, Fire, Severe Storm.
declaration_titlestringOfficial title of the declared incident.
incident_begin_datestringStart date of the underlying incident.
incident_end_datestringEnd date of the underlying incident.
disaster_closeout_datestringDate FEMA closed out the disaster, when available.
designated_areastringCounty or other designated jurisdiction covered by the declaration.
place_codestringFEMA place code for the designated area.
ih_program_declaredbooleanWhether the Individuals & Households program was declared.
ia_program_declaredbooleanWhether the Individual Assistance program was declared.
pa_program_declaredbooleanWhether the Public Assistance program was declared.
hm_program_declaredbooleanWhether the Hazard Mitigation program was declared.
regionintegerFEMA region number.
last_refreshstringWhen OpenFEMA last refreshed this record.
source_hashstringOpenFEMA's content hash for this record.
source_idstringOpenFEMA's internal record ID.
fips_state_codestringFIPS state code — join key for other geo/incident datasets.
fips_county_codestringFIPS county code — join key for other geo/incident datasets.
incident_idstringOpenFEMA's incident ID — join key across related disaster records.

Example output

{
"fema_declaration_string": "DR-4734-FL",
"disaster_number": 4734,
"state": "FL",
"declaration_type": "DR",
"declaration_date": "2025-09-28T00:00:00.000Z",
"fy_declared": 2025,
"incident_type": "Hurricane",
"declaration_title": "HURRICANE HELENE",
"incident_begin_date": "2025-09-26T00:00:00.000Z",
"incident_end_date": "2025-10-01T00:00:00.000Z",
"disaster_closeout_date": null,
"designated_area": "Pinellas (County)",
"place_code": "12103",
"ih_program_declared": true,
"ia_program_declared": true,
"pa_program_declared": true,
"hm_program_declared": true,
"region": 4,
"last_refresh": "2026-01-05T10:12:00.000Z",
"source_hash": "a1b2c3d4e5f6",
"source_id": "5f8a1c2e-0000-0000-0000-000000000000",
"fips_state_code": "12",
"fips_county_code": "103",
"incident_id": "5f9a1c2e-0000-0000-0000-000000000001"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.2One-off warm-up charge per run
result$0.002Per dataset item

Example: 1 000 results at the rates above ≈ $2.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Returns the declaration-summary fields OpenFEMA publishes — not the full disaster narrative or FEMA's individual-assistance case data.
  • county matches OpenFEMA's raw designatedArea text, which mixes formats (e.g. "Pinellas (County)"), so it is a substring match rather than a normalized county lookup.

❓ FAQ

Do I need an API key?

No. OpenFEMA is a public, keyless API, so a run needs no credentials from you.

How far back does this go?

OpenFEMA's disaster declarations dataset goes back to 1953; leave the date fields empty to search the full history.

What happens if my filters match nothing?

The run finishes successfully with zero rows and a status message describing exactly what was searched — a narrow filter is not a failure.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.