# OpenFEMA NFIP Flood Claims & Risk Data Scraper (`logiover/openfema-nfip-flood-claims-scraper`) Actor

Export 2.7M+ privacy-redacted FEMA flood insurance claims with payments, damage, coverage, flood zone, property characteristics and geolocation. Filter by state, year and flood event for insurance and real-estate risk analysis.

- **URL**: https://apify.com/logiover/openfema-nfip-flood-claims-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## OpenFEMA NFIP Flood Claims & Risk Data Scraper

Export more than 2.7 million privacy-redacted National Flood Insurance Program claim records from the current OpenFEMA API. Results include loss date, flood event, state, county and ZIP geography, payment and damage amounts, coverage, flood zone, property characteristics and approximate coordinates.

The Actor is designed for insurance, mortgage, real-estate, climate-risk, catastrophe modeling and public-policy research. It uses OpenFEMA's current v3 `NfipClaims` source—not the deprecated frozen v2 endpoint—and requires no FEMA API key.

### What can you do with this Actor?

- Analyze historical flood-loss frequency and severity by state, year, county, ZIP or flood event.
- Compare paid amounts, reported damage and insurance coverage.
- Build risk features for property, mortgage, portfolio and catastrophe analytics.
- Study occupancy, residence, rental, basement and building-characteristic patterns.
- Identify communities and flood zones with significant historical claim activity.
- Feed bulk, normalized public records into data warehouses, maps or BI dashboards.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `states` | string\[] | Two-letter state or territory abbreviations. |
| `yearOfLossFrom` | integer | Earliest loss year, inclusive. |
| `yearOfLossTo` | integer | Latest loss year, inclusive. |
| `floodEventContains` | string | Case-insensitive event-name filter. |
| `countyFips` | string\[] | County FIPS codes. |
| `zipCodes` | string\[] | Property ZIP codes. |
| `minTotalPaid` | number | Minimum combined building, contents and ICC payment. |
| `primaryResidenceOnly` | boolean | Keep only primary residences. |
| `rentalPropertiesOnly` | boolean | Keep only rental properties. |
| `maxResults` | integer | Maximum unique claims, up to 500,000. |

Example for material Florida and Texas losses:

```json
{
  "states": ["FL", "TX"],
  "yearOfLossFrom": 2017,
  "yearOfLossTo": 2025,
  "minTotalPaid": 50000,
  "maxResults": 25000
}
```

### Output

Each dataset item represents one redacted NFIP claim.

| Field group | Included fields |
| --- | --- |
| Identity and time | `claimId`, loss date, reported year, flood event and as-of date. |
| Geography | State, county FIPS, ZIP, NFIP community, census tract, flood zone and approximate latitude/longitude. |
| Money | Building and contents payments, ICC payment, combined `totalPaid`, damage amounts and coverage amounts. |
| Property | Occupancy, primary residence, rental, basement, floors, construction date, condominium and building descriptions. |
| Risk | Rated and current flood zone, base flood elevation and elevation differences when available. |
| Lineage | OpenFEMA source URL and export timestamp. |

```json
{
  "claimId": "9876543",
  "dateOfLoss": "2017-08-27",
  "floodEvent": "HURRICANE HARVEY",
  "state": "TX",
  "countyFips": "48201",
  "zipCode": "77084",
  "currentFloodZone": "AE",
  "totalPaid": 86420.55,
  "buildingDamageAmount": 92000,
  "primaryResidence": true,
  "rentalProperty": false,
  "latitude": 29.8,
  "longitude": -95.6
}
```

### Privacy and interpretation

FEMA intentionally anonymizes or generalizes the public records. Coordinates are approximate and are not property-level locations; personally identifying policyholder information is not included. Dollar fields reflect what FEMA publishes and can include nulls, zeroes, caps, adjustments or program-specific rules. Never use a single historical claim as the sole basis for underwriting, lending or an individual property decision.

### Scaling and data quality

The Actor pushes records in batches, paginates the official API and deduplicates by claim ID. Server-side filters reduce transfer size for state, year, county and ZIP selections. Event-name and calculated total-payment filters run on normalized results. For broad filters with a high payment threshold, the Actor may scan more source records than it ultimately saves.

Large exports can be scheduled to produce repeatable portfolio snapshots. Use `claimId` for downstream deduplication and retain `asOfDate` to understand source currency.

### Integrations and API

Download results as JSON, JSONL, CSV, Excel, XML or RSS. Connect runs to schedules, webhooks, Google Sheets, Make, Zapier, databases or cloud ETL. The Actor is callable through the Apify REST API and official clients.

```bash
curl -X POST "https://api.apify.com/v2/acts/logiover~openfema-nfip-flood-claims-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"states":["LA"],"yearOfLossFrom":2020,"maxResults":10000}'
```

Apify MCP can expose it as a structured flood-risk research tool for AI workflows.

### FAQ

**Does it use the deprecated FEMA API?** No. It uses the current OpenFEMA v3 NFIP claims endpoint.

**How many claims are available?** The source currently contains more than 2.7 million records and changes over time.

**Does it need an API key?** No.

**Are exact property locations included?** No. Public geography is anonymized or generalized.

**What is `totalPaid`?** The Actor-calculated sum of building, contents and increased-cost-of-compliance payments when present.

**Why can damage differ from payment?** Damage, coverage and program payment are separate concepts and may be affected by policy terms.

**Can I filter Hurricane Harvey or another named event?** Yes, use `floodEventContains`; source naming may vary.

**Can I request all 2.7 million in one run?** A run is capped at 500,000 items. Split full-history work by state or year.

**Is this an underwriting decision engine?** No. It is a public-data extraction and normalization tool.

### Responsible use

This Actor is not affiliated with or endorsed by FEMA or the NFIP. Use the data in accordance with OpenFEMA terms and applicable law. Verify critical risk and financial decisions with authoritative, current sources.

### Changelog

#### 2026-08-04

- Initial release on the current OpenFEMA v3 `NfipClaims` dataset.
- Added state, loss-year, event, county, ZIP, payment and property filters.
- Added normalized claim, payment, damage, coverage, risk and property fields.
- Validated high-volume pagination, stable claim-ID deduplication and source lineage.

# Actor input Schema

## `states` (type: `array`):

Two-letter state or territory abbreviations. Leave empty for nationwide claims.

## `yearOfLossFrom` (type: `integer`):

Minimum year of loss, inclusive.

## `yearOfLossTo` (type: `integer`):

Maximum year of loss, inclusive.

## `floodEventContains` (type: `string`):

Case-insensitive flood event text, for example Harvey, Katrina, or Ian.

## `countyFips` (type: `array`):

Five-digit county FIPS codes.

## `zipCodes` (type: `array`):

Five-digit reported ZIP codes.

## `minTotalPaid` (type: `number`):

Minimum sum of building, contents and increased-cost-of-compliance payments.

## `primaryResidenceOnly` (type: `boolean`):

Only include claims marked as a primary residence.

## `rentalPropertiesOnly` (type: `boolean`):

Only include claims marked as rental property.

## `maxResults` (type: `integer`):

Maximum number of NFIP claim records saved.

## Actor input object example

```json
{
  "states": [],
  "floodEventContains": "",
  "countyFips": [],
  "zipCodes": [],
  "primaryResidenceOnly": false,
  "rentalPropertiesOnly": false,
  "maxResults": 200
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/openfema-nfip-flood-claims-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxResults": 200 }

# Run the Actor and wait for it to finish
run = client.actor("logiover/openfema-nfip-flood-claims-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxResults": 200
}' |
apify call logiover/openfema-nfip-flood-claims-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/openfema-nfip-flood-claims-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/jcbmI7bgygrY5YmLY/builds/OcLAr7J0Xnp8Ps8gs/openapi.json
