NFIP Flood Loss Risk Screener — Property Loss History Score avatar

NFIP Flood Loss Risk Screener — Property Loss History Score

Pricing

from $4.40 / 1,000 results

Go to Apify Store
NFIP Flood Loss Risk Screener — Property Loss History Score

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 queries v3/NfipClaims and keeps v2 only as a fallback. Every row now carries dataset_version and data_as_of.
  • A live drift probe runs before any billable row. The endpoint must resolve, FEMA must echo the bounding-box $filter back 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 0 claims and $0 paid. In 1.0 an upstream outage produced a billable row reading claim_count: 0, total_paid_usd: 0, repetitive_loss_flag: false — a confident "$0 in flood claims" answer that was never measured. Those fields are now null, and nfip_claims_status says why.
  • Silent truncation is now visible. A dense grid point can hold tens of thousands of claims; maxClaimsPerAsset stops the scan. 1.0 logged that and emitted the aggregate anyway. 1.1 publishes claims_scanned, claims_in_bbox_total, scan_truncated and data_completeness, and verified_negative can only be true on 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

FieldMeaning
asset_labelCaller-supplied label for the property
asset_latLatitude of the screened property
asset_lonLongitude of the screened property
stateOptional 2-letter state supplied with the asset (metadata only)
radius_milesRadius used for the aggregation
since_yearThe sinceYear filter actually applied

Did anyone actually check? (read these before the numbers)

FieldMeaning
nfip_claims_statusok, unavailable, or invalid_input. Anything but ok means the loss figures were not measured
nfip_claims_errorNull on success; the upstream failure message otherwise
data_completenesscomplete / truncated_by_cap / unverified / not_checked
verified_negativetrue 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_scannedClaim records actually fetched and distance-tested
claims_in_bbox_totalFEMA's own $inlinecount total for the padded bounding box
scan_truncatedTrue when the bounding-box total exceeded the scan cap
dataset_versionv3 (current) or v2 (deprecated, frozen)
dataset_entityThe OpenFEMA entity queried
dataset_deprecatedTrue when FEMA flags the answering dataset as deprecated
dataset_deprecation_dateFEMA-published removal date, else null
data_as_ofThe asOfDate vintage of the NFIP extract behind this answer

Loss history

FieldMeaning
claim_countNFIP paid claims within the radius (on/after sinceYear)
total_paid_usdSum of building + contents + ICC payments
avg_payout_usdTotal paid divided by claim count
median_payout_usdMedian single-claim payout (mean-skew resistant)
max_single_payout_usdLargest single-claim total payout
total_icc_paid_usdIncreased Cost of Compliance dollars — only paid on substantial-damage / repetitive-loss determinations
total_building_damage_usdReported gross building damage (not the payout)
total_contents_damage_usdReported gross contents damage
claims_with_unknown_payoutClaims where FEMA published no payment figure at all
repetitive_loss_flagTrue when ≥2 claims fall within the radius
severe_repetitive_loss_signalTrue when ≥4 claims fall within the radius (editorial, not FEMA's formal SRL designation)
most_recent_loss_yearYear of the most recent nearby loss
most_recent_loss_dateExact date of the most recent nearby loss
oldest_loss_yearYear of the oldest in-scope nearby loss
distinct_loss_yearsHow many separate years produced a claim
claims_last_10_yearsClaims with a loss year in the last 10 calendar years
flood_loss_scoreEditorial 0–100 composite (count + total paid + recency)

Hazard character

FieldMeaning
dominant_causeMost frequent NFIP cause of damage (human-readable)
dominant_rated_flood_zoneMost common rated flood zone (AE, VE, X, A07 …)
dominant_flood_zone_classPlain-English regulatory class of that zone
sfha_claim_share_pctShare of claims rated inside a Special Flood Hazard Area
dominant_flood_eventMost frequent named FEMA flood event
distinct_flood_eventsHow many separate named events produced claims
max_water_depth_ftDeepest reported flood water depth
median_water_depth_ftMedian reported flood water depth

Building stock

FieldMeaning
dominant_occupancyMost common occupancy type, decoded
claims_primary_residenceClaims flagged as a primary residence
claims_elevated_buildingClaims on elevated buildings
claims_pre_firmClaims on pre-FIRM construction (highest-risk segment)
claims_post_firmClaims on post-FIRM construction
nfip_community_nameMost common NFIP participating community

Nearest claim & diagnostics

FieldMeaning
nearest_claim_distance_milesDistance to the closest in-radius claim centroid
nearest_claim_yearLoss year of that closest claim
nearest_claim_paid_usdPayout on that closest claim
nearest_claim_rated_flood_zoneRated flood zone of that closest claim
unknown_cause_codesCause codes FEMA published that this actor cannot label
unknown_occupancy_codesOccupancy codes FEMA published that this actor cannot label
errorNull on success; a message when the asset could not be screened
disclaimerUsage disclaimer
source_urlThe OpenFEMA endpoint that answered
checked_atISO 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_score is 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} with radiusMiles: 5.
  • scan_truncated: true, claims_in_bbox_total: set maxClaimsPerAsset: 100 on 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_negativetrue means genuinely clear.

  • 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.