NFIP Flood Loss Risk Screener — Property Loss History Score
Pricing
from $4.40 / 1,000 results
NFIP Flood Loss Risk Screener — Property Loss History Score
Flood loss history by property from FEMA NFIP paid claims: count, total paid, repetitive-loss flag, recency and a 0-100 flood-loss score within a radius of each lat/lon.
Pricing
from $4.40 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Turn a list of property coordinates into a flood loss history score built from FEMA National Flood Insurance Program (NFIP) paid claims. For each property (lat/lon) the actor summarizes past NFIP flood-insurance losses within a radius: claim count, total dollars paid, median and largest payout, repetitive-loss and severe-repetitive-loss signals, the most recent loss year and date, the dominant cause of damage, the dominant rated flood zone, the dominant named flood event, water depths, pre-FIRM exposure, Increased Cost of Compliance dollars, and a composite 0–100 flood-loss score.
Most tools republish the raw FEMA NFIP claims dump by state and year. This actor does the transform buyers actually want: asset-level loss history — "how much flood-insurance money has been paid out near THIS address, how often, how badly, how recently, and in what flood zone."
What changed in 1.1 (2026-08)
- Moved to the current dataset. 1.0 queried OpenFEMA
v2/FimaNfipClaims, which FEMA has deprecated (removal 2026-10-15) and whose data has been frozen since 2026-06-01. 1.1 queriesv3/NfipClaimsand keeps v2 only as a fallback. Every row now carriesdataset_versionanddata_as_of. - A live drift probe runs before any billable row. The endpoint must resolve,
FEMA must echo the bounding-box
$filterback intact, a positive canary must return claims, a negative control must return exactly zero, required fields must be present, and the extract must not be stale. Any failure fails the run and bills nothing. - An asset that could not be screened no longer publishes
0claims and$0paid. In 1.0 an upstream outage produced a billable row readingclaim_count: 0, total_paid_usd: 0, repetitive_loss_flag: false— a confident "$0 in flood claims" answer that was never measured. Those fields are nownull, andnfip_claims_statussays why. - Silent truncation is now visible. A dense grid point can hold tens of
thousands of claims;
maxClaimsPerAssetstops the scan. 1.0 logged that and emitted the aggregate anyway. 1.1 publishesclaims_scanned,claims_in_bbox_total,scan_truncatedanddata_completeness, andverified_negativecan only betrueon a complete scan. - 41 new fields from data the actor was already entitled to fetch.
Who it's for
- P&C insurers & reinsurers — pre-bind flood exposure, repetitive-loss and severe-repetitive-loss screening, SFHA-vs-non-SFHA loss mix.
- Mortgage lenders & CRE due diligence — flood-loss history alongside Phase I and property condition.
- Real estate & appraisal — quantify neighborhood flood-loss burden and pre-FIRM exposure.
- Risk / cat modeling teams — a keyless historical-loss density signal by point.
Example input
{"assets": [{ "lat": 30.0, "lon": -90.0, "label": "New Orleans metro, LA", "state": "LA" },{ "lat": 29.7, "lon": -95.4, "label": "Houston Ship Channel, TX", "state": "TX" }],"radiusMiles": 5,"sinceYear": 2000,"maxClaimsPerAsset": 5000,"maxResults": 500}
Output fields (one row per asset)
Identity & scope
| Field | Meaning |
|---|---|
asset_label | Caller-supplied label for the property |
asset_lat | Latitude of the screened property |
asset_lon | Longitude of the screened property |
state | Optional 2-letter state supplied with the asset (metadata only) |
radius_miles | Radius used for the aggregation |
since_year | The sinceYear filter actually applied |
Did anyone actually check? (read these before the numbers)
| Field | Meaning |
|---|---|
nfip_claims_status | ok, unavailable, or invalid_input. Anything but ok means the loss figures were not measured |
nfip_claims_error | Null on success; the upstream failure message otherwise |
data_completeness | complete / truncated_by_cap / unverified / not_checked |
verified_negative | true only when the source answered, the scan was complete, and zero claims fall in the radius. null means nobody checked — it is not a clean property |
claims_scanned | Claim records actually fetched and distance-tested |
claims_in_bbox_total | FEMA's own $inlinecount total for the padded bounding box |
scan_truncated | True when the bounding-box total exceeded the scan cap |
dataset_version | v3 (current) or v2 (deprecated, frozen) |
dataset_entity | The OpenFEMA entity queried |
dataset_deprecated | True when FEMA flags the answering dataset as deprecated |
dataset_deprecation_date | FEMA-published removal date, else null |
data_as_of | The asOfDate vintage of the NFIP extract behind this answer |
Loss history
| Field | Meaning |
|---|---|
claim_count | NFIP paid claims within the radius (on/after sinceYear) |
total_paid_usd | Sum of building + contents + ICC payments |
avg_payout_usd | Total paid divided by claim count |
median_payout_usd | Median single-claim payout (mean-skew resistant) |
max_single_payout_usd | Largest single-claim total payout |
total_icc_paid_usd | Increased Cost of Compliance dollars — only paid on substantial-damage / repetitive-loss determinations |
total_building_damage_usd | Reported gross building damage (not the payout) |
total_contents_damage_usd | Reported gross contents damage |
claims_with_unknown_payout | Claims where FEMA published no payment figure at all |
repetitive_loss_flag | True when ≥2 claims fall within the radius |
severe_repetitive_loss_signal | True when ≥4 claims fall within the radius (editorial, not FEMA's formal SRL designation) |
most_recent_loss_year | Year of the most recent nearby loss |
most_recent_loss_date | Exact date of the most recent nearby loss |
oldest_loss_year | Year of the oldest in-scope nearby loss |
distinct_loss_years | How many separate years produced a claim |
claims_last_10_years | Claims with a loss year in the last 10 calendar years |
flood_loss_score | Editorial 0–100 composite (count + total paid + recency) |
Hazard character
| Field | Meaning |
|---|---|
dominant_cause | Most frequent NFIP cause of damage (human-readable) |
dominant_rated_flood_zone | Most common rated flood zone (AE, VE, X, A07 …) |
dominant_flood_zone_class | Plain-English regulatory class of that zone |
sfha_claim_share_pct | Share of claims rated inside a Special Flood Hazard Area |
dominant_flood_event | Most frequent named FEMA flood event |
distinct_flood_events | How many separate named events produced claims |
max_water_depth_ft | Deepest reported flood water depth |
median_water_depth_ft | Median reported flood water depth |
Building stock
| Field | Meaning |
|---|---|
dominant_occupancy | Most common occupancy type, decoded |
claims_primary_residence | Claims flagged as a primary residence |
claims_elevated_building | Claims on elevated buildings |
claims_pre_firm | Claims on pre-FIRM construction (highest-risk segment) |
claims_post_firm | Claims on post-FIRM construction |
nfip_community_name | Most common NFIP participating community |
Nearest claim & diagnostics
| Field | Meaning |
|---|---|
nearest_claim_distance_miles | Distance to the closest in-radius claim centroid |
nearest_claim_year | Loss year of that closest claim |
nearest_claim_paid_usd | Payout on that closest claim |
nearest_claim_rated_flood_zone | Rated flood zone of that closest claim |
unknown_cause_codes | Cause codes FEMA published that this actor cannot label |
unknown_occupancy_codes | Occupancy codes FEMA published that this actor cannot label |
error | Null on success; a message when the asset could not be screened |
disclaimer | Usage disclaimer |
source_url | The OpenFEMA endpoint that answered |
checked_at | ISO timestamp of the run |
Important: how FEMA locates claims (read this)
FEMA censors each loss to its census-tract centroid and rounds latitude/
longitude to about 0.1° (~7 miles). Claims therefore snap onto a coarse grid.
Consequences:
- A small radius (e.g. 1 mile) only matches when a property sits on a
populated grid point. For arbitrary real properties, use
radiusMiles≥ ~5. - Metrics describe a tract-level neighborhood, not one parcel.
flood_loss_scoreis an editorial 0–100 composite (log-scaled claim count up to 40, log-scaled total paid up to 40, recency up to 20) — not a FEMA rating, flood-zone determination, or actuarial premium.
Inputs that populate the optional columns
total_icc_paid_usd,max_water_depth_ft,claims_pre_firm,dominant_flood_event: populated on any coastal/riverine grid point with post-2000 losses — e.g.{"lat": 30.0, "lon": -90.0}withradiusMiles: 5.scan_truncated: true,claims_in_bbox_total: setmaxClaimsPerAsset: 100on a dense grid point such as(30.0, -90.0).verified_negative: true: an inland point with no NFIP exposure, e.g.{"lat": 39.0, "lon": -101.0}(rural Kansas).dataset_deprecated: true: only when v3 is unavailable and the run falls back to the deprecated v2 endpoint.
Use as an MCP tool
This actor is a clean, chainable tool for AI agents via mcp.apify.com: pass one or
more {lat, lon, label} assets and get back a structured, field-described flood-loss
history row per property — ideal for underwriting copilots and property-risk agents.
Agents should read nfip_claims_status and data_completeness before trusting any
figure, and must treat verified_negative: null as "unknown", never as "clean".
Pricing
Pay-per-result: one billable Result per asset row. Rows are buffered and the billing gate runs before anything is pushed — if every asset failed to screen, the run fails and nothing is billed.
FAQ
Where does the data come from? FEMA OpenFEMA v3/NfipClaims (the NFIP
Redacted Claims v3 release). Keyless, public, historical. The older
v2/FimaNfipClaims is kept only as a fallback until FEMA removes it on
2026-10-15.
Is this a FEMA flood zone / FIRM lookup? No. It measures historical paid losses near a point, and reports the flood zones those historical claims were rated in — not the current regulatory flood zone of your parcel. Pair it with a FIRM/flood-zone determination.
Why did my run fail instead of returning zero rows? Because a zero that was never measured is worse than a failure. If FEMA is unreachable, or its response fails the live drift check, or every asset errored, the run fails loudly and bills nothing.
Why is claim_count capped? Dense flood metros can hold tens of thousands of
claims at one grid point; maxClaimsPerAsset bounds the scan (most-recent-first).
When that happens data_completeness is truncated_by_cap and the dollar totals
are a lower bound — raise maxClaimsPerAsset for a complete aggregate.
Nothing came back for my address. Increase radiusMiles (the coordinates are
tract-centroid rounded), widen sinceYear, or confirm the point is in a
flood-claim region. Check verified_negative — true means genuinely clear.
Related actors
- FEMA NRI County Risk Profile — forward-looking modeled risk to pair with this backward-looking loss history.
- EPA Contaminated Site Screener and Site Due Diligence Bundle — the rest of a Phase I / CRE diligence stack on the same coordinates.
Each is a screening tool, not a determination.