FEMA NFIP Repetitive Loss & Flood Insurance Market Screener avatar

FEMA NFIP Repetitive Loss & Flood Insurance Market Screener

Pricing

from $5.50 / 1,000 results

Go to Apify Store
FEMA NFIP Repetitive Loss & Flood Insurance Market Screener

FEMA NFIP Repetitive Loss & Flood Insurance Market Screener

Resolve any US coordinate to its NFIP community, then return that community's repetitive-loss and severe-repetitive-loss property rollup, CRS class and premium discounts, NFIP participation status, and county flood-insurance market penetration. Four FEMA OpenFEMA datasets joined in one call.

Pricing

from $5.50 / 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

Give it a US coordinate. It resolves that point to the NFIP community whose published FEMA boundary contains it, then returns that community's repetitive-loss property profile, its Community Rating System class and premium discounts, its NFIP participation status, and the county's flood-insurance market penetration - four FEMA OpenFEMA datasets joined in one call.

Nobody publishes these four together. FEMA's repetitive-loss list was historically FOIA-restricted; it went public as an API in February 2024, the community boundary layer in February 2024, and the county penetration rates in November 2024.

Why there is no radius search, and why that is the honest answer

The obvious build is "repetitive-loss properties within N miles". That product cannot be built from this data, and anyone selling it is selling a fabricated number.

FEMA redacts the coordinates. Its own data dictionary says so:

"Approximate latitude of the structure redacted to 1 decimal place. The precision has been lessened to ensure individual privacy. This redaction as well as the inherent error in geocoding addresses may result in a point location that exists in an incorrect community, county or state."

Measured on the live file 2026-08-19: of Colorado's 113 records, 84 carry one decimal place, 23 carry zero decimal places, and 6 have no coordinate at all. On a 4,000-row Louisiana page it is 2,909 / 1,068 / 23. Zero decimals of latitude is roughly +/- 55 km.

So this actor answers at the scope the data actually supports: point -> NFIP community -> community and county rollup. Every row carries multiple_loss_coordinates_redacted, radius_screening_supported: false, and the decimal precision measured on that run.

Who it is for

  • Phase I ESA and environmental due-diligence firms adding a flood-loss and flood-insurance-market section to a site report.
  • Commercial real-estate acquisition and underwriting teams screening a portfolio for communities with concentrated repetitive-loss exposure and thin insurance take-up.
  • P&C and flood underwriters / MGAs pricing against the CRS discount schedule and the county SFHA penetration rate.
  • Floodplain managers and mitigation consultants benchmarking their community's repetitive-loss count, mitigation rate and CRS class against the county.

Example input

{
"assets": [
{ "lat": 39.7392, "lon": -104.9903, "label": "Denver City Hall, CO" },
{ "lat": 39.7047, "lon": -105.0814, "label": "Lakewood, CO (city inside Jefferson County)" },
{ "lat": 29.9511, "lon": -90.0715, "label": "New Orleans, LA" }
],
"includeCountyCommunity": true,
"includeTribalEtjLayer": true,
"includeLossProperties": false
}

What comes back

Three row types, distinguished by record_type:

record_typeOne perWhat it carries
asset_summarysite you suppliedThe governing NFIP community, how many communities contain the point, boundary-read diagnostics, and the worst screen level across them.
community_profileNFIP community containing the siteThe full profile: Status Book, CRS, repetitive-loss rollup, county penetration, screen verdict.
loss_propertyrepetitive-loss property (opt-in)Designation, flood zone, occupancy, loss count, insured and mitigated status, and the redacted coordinate with its measured precision.

A site inside an incorporated place usually returns two communities: the municipality (which governs, because FEMA defines a community as "the lowest level of government with land use authority") and the county community covering unincorporated areas. Both are emitted, with is_governing_community and governing_community_basis saying which is which and why. Measured example: Lakewood CO resolves to CID 085075 (Lakewood, City of) as the governing community and CID 080087 (Jefferson County *) as the broader one - two different CRS classes and two different loss rollups.

What this actor refuses to do

  • It will not publish a distance to a repetitive-loss property. See above.
  • It will not report "not participating in the NFIP" for a community whose Status Book record it never read. Unchecked is null; checked-and-negative is false.
  • It will not derive a CRS premium discount from the class rating. FEMA's own file contradicts the textbook rule: Colorado carries class-10 communities published with a 10% and a 15% SFHA discount alongside class-10 communities with none. Discounts are transcribed verbatim, with the raw FEMA text beside the parsed number.
  • It will not recompute or clamp a penetration rate. FEMA publishes 593 counties with zero SFHA residential structures alongside a non-zero SFHA policy count, and 27 counties with an SFHA penetration rate above 100%. Those figures ship as published, with penetration_data_quality_flags naming the inconsistency.
  • It will not coerce a corrupted census block group. On a live Louisiana page 96.1% of block groups arrive as Excel scientific notation ("2.2055E+11") and have irrecoverably lost seven of twelve GEOID digits. Those are emitted as null with an explicit reason.
  • It will not produce a screen level while any contributing FEMA dataset was unavailable. It reads INCONCLUSIVE instead.
  • If it cannot answer at all, it fails the run and bills nothing.

Live drift gate

Nine probes run before a single billable row is produced, each with its own error boundary and a three-valued outcome (pass / fail / unavailable):

ProbeRoleWhat it proves
catalogload-bearingAll four datasets are still listed and API-enabled in FEMA's own catalog - and FEMA's own depDate field is read, so an announced end-of-life is surfaced on every row before it becomes a 404.
schemaload-bearingEvery column this actor reads is still published, so a rename fails loudly instead of becoming a column of nulls.
community_layer_canaryload-bearingDenver City Hall still resolves to NFIP Community 080046. Point-to-community resolution is the whole product.
multiple_loss_canaryload-bearingThe national row count is in band, a community filter strictly narrows it, and every returned row really is that community.
status_book_canaryload-bearingDenver still reads participating, CRS class 6.
penetration_canaryload-bearingDenver County still reports residential contracts in force in band.
coordinate_redactioncorroboratingThe redaction that makes radius screening impossible is re-measured every run rather than assumed.
negative_controlcorroboratingA state code that does not exist returns zero rows.
filter_rejects_unknown_columncorroboratingOpenFEMA still rejects a filter on a non-existent column instead of silently returning the national table.

A load-bearing probe that cannot complete fails the run. A corroborating probe that cannot complete lets the run proceed and says so (

drift_gate_status: verified_degraded
). A probe that completes and measures wrong always fails the run.

Use as an MCP tool

This actor is callable by AI agents over Apify's MCP server.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--actors", "malonestar/fema-repetitive-loss-flood-market-screener"],
"env": { "APIFY_TOKEN": "<your Apify token>" }
}
}
}

Worked agent prompt:

For 1600 Broadway, Denver CO and 900 Camp St, New Orleans LA, tell me which NFIP community each sits in, how many repetitive-loss properties that community has, what its CRS class and SFHA premium discount are, and what share of the county's SFHA homes carry flood insurance.

Billing is unchanged when called as a tool, and a run that cannot answer fails without billing.

Sources

DatasetEndpointRecords
NFIP Multiple Loss Propertiesfema.gov/api/open/v1/NfipMultipleLossProperties240,651
NFIP Community Layer (Comprehensive)fema.gov/api/open/v1/NfipCommunityLayerComprehensive51,943 polygons
NFIP Community Status Bookfema.gov/api/open/v1/NfipCommunityStatusBook32,436
NFIP Residential Penetration Ratesfema.gov/api/open/v1/NfipResidentialPenetrationRates3,159 counties
County resolutionFCC Census Block API, with Census TIGERweb as fallback-

All keyless. Counts measured 2026-08-19.

Output fields (196 declared)

Every row: site, sources and provenance

FieldTypeDescription
record_typestringRow type: asset_summary (one per site), community_profile (one per NFIP community containing the site), or loss_property (one per repetitive-loss property, only when that option is on).
asset_labelstringThe label you supplied for this site.
asset_latitudenumberThe latitude you supplied for this site.
asset_longitudenumberThe longitude you supplied for this site.
asset_state_fipsstringTwo-digit state FIPS code resolved from the site coordinate.
asset_state_abbreviationstringTwo-letter state abbreviation resolved from the site coordinate. Null when the fallback resolver answered, because it does not publish one.
asset_county_fipsstringFive-digit county FIPS code resolved from the site coordinate. This is the join key to the county residential penetration rates.
asset_county_namestringCounty, parish or borough name resolved from the site coordinate.
geo_resolverstringWhich resolver answered: fcc_census_block_api or census_tigerweb.
geo_statusstringok when the site was resolved to a county, unavailable when both resolvers failed.
community_layer_statusstringPer-source outcome for FEMA NfipCommunityLayerComprehensive: ok or unavailable.
community_status_book_statusstringPer-source outcome for the FEMA NFIP Community Status Book: ok, unavailable or not_applicable.
penetration_statusstringPer-source outcome for FEMA NfipResidentialPenetrationRates: ok, unavailable or not_applicable.
multiple_loss_statusstringPer-source outcome for FEMA NfipMultipleLossProperties: ok, partial, unavailable or not_applicable.
tribal_etj_layer_statusstringPer-source outcome for the tribal / extraterritorial-jurisdiction boundary pass: ok, unavailable or not_requested.
sources_unavailablestringJSON array of the source status fields that were not ok on this row. Null when every source answered.
all_sources_okbooleanTrue only when every contributing FEMA dataset answered for this row. When false, no clean screen level is asserted.
data_as_of_multiple_lossstringFEMA asOfDate for the multiple-loss property file, when published on the rows read.
data_as_of_penetrationstringFEMA asOfDate for the residential penetration rates.
community_status_book_last_refreshstringFEMA lastRefresh timestamp on the Community Status Book record.
community_layer_last_refreshstringFEMA lastRefresh timestamp for the community boundary layer, when published.
multiple_loss_record_count_publishednumberNational record count FEMA publishes for NfipMultipleLossProperties in its own dataset catalog.
openfema_deprecation_noticestringJSON array of deprecation notices FEMA publishes for the datasets this actor reads, taken from the depDate and depNewURL fields on its own catalog endpoint. Null when none is announced.
drift_gate_statusstringverified when every drift probe passed, verified_degraded when a corroborating probe could not complete and the run proceeded and disclosed it. A run whose gate failed emits no rows at all.
drift_gate_probes_passednumberHow many drift probes passed before any billable row was produced.
drift_gate_probes_unavailablestringJSON array of drift probes that could not complete. Null when all completed.
drift_gate_notestringPlain-language summary of the drift gate outcome.
multiple_loss_coordinates_redactedbooleanAlways true. FEMA redacts repetitive-loss property coordinates to one decimal place for privacy.
radius_screening_supportedbooleanAlways false. The redacted coordinates cannot support a radius or nearest-property distance, so none is published.
loss_property_coordinate_precision_notestringWhy this product answers at community scope rather than by radius, with the measured coordinate precision behind that decision.
retrieved_atstringUTC timestamp at which this run read FEMA.

NFIP community identity and boundary

FieldTypeDescription
community_id_numberstringFEMA NFIP Community ID Number (CID) of the community this row describes.
community_namestringFEMA community name, verbatim. A trailing asterisk is FEMA notation for a community covering unincorporated areas only.
community_layer_typestringFEMA layerTypeCode of the matched polygon: Place, Place (multi-county), County, County Subdivision, Consolidated City, Maine Town/Township, SLUA, TRIBE, ETJ or Statistical Area.
community_jurisdiction_tiernumberJurisdiction rank used to choose the governing community: 1 municipal, 2 tribal, 3 extraterritorial, 4 county, 5 statistical, 6 unrecognised.
community_jurisdiction_tier_labelstringHuman-readable label for the jurisdiction tier.
is_governing_communitybooleanTrue on the community with land-use authority over the site. Other matched communities are still emitted so the alternative is visible.
governing_community_basisstringWhy this community was chosen as the governing one, and how many broader communities also contain the site.
governing_community_ambiguousbooleanTrue when two or more communities of equal jurisdictional rank contain the site.
matched_community_countnumberHow many distinct NFIP communities contain this site.
matched_community_idsstringJSON array of every NFIP Community ID containing this site.
community_polygons_testednumberHow many NFIP community polygons were read and tested against this site.
community_polygons_unreadablenumberHow many polygons could not be parsed as GeoJSON. An unreadable boundary is recorded, never counted as a miss.
statistical_area_hitsnumberHow many containing polygons carry no Community ID and are therefore not NFIP communities.
unrecognised_layer_typesstringJSON array of layer types FEMA served that are outside its own documented vocabulary.
tribal_etj_layer_checkedbooleanTrue when the tribal and extraterritorial-jurisdiction boundary pass ran for this site.
tribal_etj_layer_row_countnumberHow many tribal / extraterritorial polygons were read for this state. Null when the pass did not run.
in_nfip_communitybooleanTrue when at least one NFIP community boundary contains the site, false when the boundaries were read and none does, null when they could not be read.
no_community_basisstringWhy no NFIP community was matched, including how many polygons were tested.
community_profile_rows_emittednumberHow many community_profile rows this site produced.
community_name_shortstringFEMA short community name with the suffix stripped.
community_layer_types_matchedstringJSON array of every layer type whose polygon carried this Community ID and contained the site.
community_polygons_matchednumberHow many published polygons carrying this Community ID contain the site.
community_layer_type_recognisedbooleanFalse when FEMA served a layer type outside its own documented vocabulary. The row is still emitted, never dropped.
community_unincorporated_areas_onlybooleanTrue when FEMA marks the community name with a trailing asterisk, meaning it covers unincorporated areas only.
community_state_codestringTwo-digit state FIPS code on the community polygon. Null on tribal and extraterritorial polygons, which FEMA publishes without one.
community_county_fipsstringFive-digit county FIPS code on the community polygon. Null on tribal and extraterritorial polygons.
community_county_namestringCounty name on the community polygon.
community_census_geoidstringCensus GEOID FEMA associates with the community polygon.
community_census_yearnumberCensus vintage FEMA used for the population and housing counts.
community_census_populationnumberCensus population of the entire community.
community_census_housing_unitsnumberCensus housing units in the entire community.
community_land_area_sq_kmnumberLand area of the entire community in square kilometres.
community_cis_typestringFEMA Community Information System government-unit type.
community_cis_sourcestringSource of the FEMA Community Information System data, typically PIVOT.
community_geometry_sourcestringWhere FEMA sourced the boundary: a Census layer, the NFHL, or another source.
community_alternate_namestringAlternate non-census community name FEMA publishes.
community_layer_creation_notesstringFEMA notes on how the boundary was constructed.
community_census_class_codestringCensus class code for the place or subdivision.
community_census_functional_status_codestringCensus functional status code.

NFIP Community Status Book: participation, FIRM dates and CRS

FieldTypeDescription
community_status_book_matchedbooleanTrue when a FEMA NFIP Community Status Book record exists for this Community ID.
community_status_book_record_countnumberHow many Community Status Book records matched this Community ID. Anything but 1 means the join is ambiguous.
participating_in_nfipbooleanTrue or false when checked against the Community Status Book, null when no record was read. Null is not a finding of non-participation.
nfip_participation_basisstringWhere the participation answer came from, or why it was not determined.
tribal_communitybooleanFEMA tribal indicator on the Community Status Book record.
initial_flood_hazard_boundary_map_datestringDate of the first Flood Hazard Boundary Map, ISO. Null when the community never received one.
initial_firm_datestringDate of the first Flood Insurance Rate Map, ISO. This is the pre-FIRM / post-FIRM dividing line.
currently_effective_map_date_rawstringVerbatim FEMA value for the current effective map. FEMA declares this a date but serves MM/DD/YY strings, suffixed status tokens, and bare status tokens such as (NSFHA).
currently_effective_map_datestringCurrent effective FIRM date in ISO form, with the two-digit year resolved. Null when FEMA published a status token instead of a date.
currently_effective_map_status_codestringStatus token FEMA appended to, or published instead of, the current effective map date: M, L, >, NSFHA, ALL ZONE D and similar.
currently_effective_map_status_labelstringWhat that status token means.
currently_effective_map_unparsed_reasonstringWhy no ISO date could be produced, when none could.
regular_emergency_program_date_rawstringVerbatim FEMA value for the date the community joined the NFIP, including any (E), (S) or (W) status token.
regular_emergency_program_datestringDate the community joined the NFIP, ISO, with the two-digit year resolved.
regular_emergency_program_status_codestringStatus token on the programme date: E emergency programme, S suspended, W withdrawn.
nfip_program_phasestringregular_program, emergency_program, suspended, withdrawn, or null when not determined.
crs_participatingbooleanTrue when FEMA publishes a Community Rating System class for this community, false when it publishes none, null when the Status Book was not read.
crs_class_ratingnumberFEMA Community Rating System class, 1 (best) to 10.
crs_class_rating_effective_datestringDate the CRS class took effect.
crs_original_entry_datestringDate the community first entered the CRS.
crs_sfha_discount_rawstringVerbatim FEMA text for the Special Flood Hazard Area premium discount, including its zero padding and percent sign.
crs_sfha_discount_pctnumberSFHA premium discount as a number of percent, parsed from the FEMA text. Never derived from the class rating.
crs_nonsfha_discount_rawstringVerbatim FEMA text for the non-SFHA premium discount.
crs_nonsfha_discount_pctnumberNon-SFHA premium discount as a number of percent, parsed from the FEMA text.
crs_discount_basisstringHow the discounts were obtained, and why they are transcribed rather than derived from the class rating.

Repetitive-loss rollup for the community

FieldTypeDescription
multiple_loss_properties_totalnumberExact number of repetitive-loss and severe-repetitive-loss properties FEMA publishes for this community, read from the API row count rather than from the page returned.
severe_repetitive_loss_countnumberProperties carrying either severe-repetitive-loss designation.
currently_insured_countnumberProperties FEMA records as currently insured by the NFIP.
mitigated_countnumberProperties FEMA records as mitigated as of the file date.
multiple_loss_properties_analysednumberHow many of those properties this run actually read and rolled up.
multiple_loss_rollup_completebooleanTrue when every published property was read.
multiple_loss_results_truncatedbooleanTrue when the read stopped before every published property was retrieved.
nfip_rl_countnumberProperties carrying the NFIP insurance-related Repetitive Loss designation.
nfip_srl_countnumberProperties carrying the NFIP insurance-related Severe Repetitive Loss designation.
fma_rl_countnumberProperties carrying the Flood Mitigation Assistance grant-related Repetitive Loss designation.
fma_srl_countnumberProperties carrying the Flood Mitigation Assistance grant-related Severe Repetitive Loss designation. These four designations are independent flags, not a hierarchy.
designation_none_countnumberProperties in the file carrying none of the four designations.
total_losses_sumnumberSum of paid NFIP claims over $1,000 since 1978 across the properties analysed. Null when no property published a count.
total_losses_meannumberMean paid-claim count per property.
total_losses_maxnumberHighest paid-claim count on any single property.
properties_with_4_or_more_lossesnumberProperties with four or more paid claims.
currently_uninsured_countnumberProperties FEMA records as not currently insured.
insured_status_unknown_countnumberProperties where FEMA published no insured indicator.
currently_insured_sharenumberCurrently insured properties as a share of those analysed.
unmitigated_countnumberProperties FEMA records as not mitigated.
mitigated_status_unknown_countnumberProperties where FEMA published no mitigation indicator.
mitigated_sharenumberMitigated properties as a share of those analysed.
primary_residence_countnumberProperties recorded as the insured party primary residence.
post_firm_construction_countnumberProperties built after the community first Flood Insurance Rate Map.
pre_firm_construction_countnumberProperties built before the community first Flood Insurance Rate Map.
firm_era_unknown_countnumberProperties where FEMA published no pre/post-FIRM indicator.
residential_property_countnumberProperties whose occupancy code is residential, decoded scheme-aware.
non_residential_property_countnumberProperties whose occupancy code is non-residential.
unclassified_occupancy_countnumberProperties whose occupancy code FEMA did not publish or does not document.
occupancy_legacy_scheme_countnumberProperties coded in the legacy 1-6 occupancy scheme.
occupancy_modern_scheme_countnumberProperties coded in the modern 11-19 occupancy scheme. Both schemes live in one FEMA column and mean different things.
unrecognised_occupancy_codesstringJSON array of occupancy codes outside FEMA published vocabulary, surfaced rather than silently bucketed.
sfha_zone_property_countnumberProperties whose FEMA-rated flood zone is a Special Flood Hazard Area.
non_sfha_zone_property_countnumberProperties in zones B, C or X.
undetermined_zone_property_countnumberProperties in Zone D, an area of possible but undetermined flood hazard. Not a low-risk finding.
unknown_zone_property_countnumberProperties whose flood zone FEMA did not publish or does not document.
unrecognised_flood_zonesstringJSON array of flood zones outside FEMA published vocabulary.
flood_zone_distributionstringJSON object counting the properties analysed by FEMA-rated flood zone.
occupancy_type_distributionstringJSON object counting the properties analysed by FEMA occupancy code.
most_recent_loss_datestringMost recent closed-claim loss date across the properties analysed.
oldest_recorded_loss_datestringOldest most-recent-loss date across the properties analysed.
loss_property_zip_codesstringJSON array of the ten most common ZIP codes among the properties analysed.
census_block_group_usable_countnumberProperties whose census block group arrived as a usable 12-digit GEOID.
census_block_group_scientific_notation_countnumberProperties whose census block group arrived as Excel scientific notation and has irrecoverably lost digits.
census_block_group_absent_countnumberProperties where FEMA published no census block group.
census_block_group_other_unusable_countnumberProperties whose census block group was unusable for another reason.
census_block_group_notestringExplanation when block groups in this community were unusable. Null when none were.
loss_property_lat_decimals_maxnumberHighest number of decimal places seen on the redacted latitudes in this community, measured on this run.
loss_property_lat_decimals_minnumberLowest number of decimal places seen on the redacted latitudes in this community. Zero decimals is roughly plus or minus 55 km.
loss_property_no_coordinate_countnumberProperties for which FEMA published no usable coordinate at all.

County flood-insurance market penetration

FieldTypeDescription
penetration_matchedbooleanTrue when FEMA publishes a residential penetration record for this county.
penetration_record_countnumberHow many penetration records matched this county FIPS.
penetration_county_fipsstringCounty FIPS used for the penetration join.
penetration_county_namestringCounty name on the FEMA penetration record.
penetration_state_namestringState name on the FEMA penetration record.
res_penetration_ratenumberFEMA countywide residential flood-insurance penetration rate: policy contracts in force divided by residential structures. Published verbatim.
res_penetration_rate_sfhanumberFEMA residential penetration rate inside the Special Flood Hazard Area. Published verbatim and never recomputed, including where FEMA publishes a value above 1.
res_contracts_in_forcenumberNFIP residential policy contracts in force countywide.
res_contracts_in_force_sfhanumberNFIP residential policy contracts in force inside the SFHA.
total_res_structuresnumberTotal residential structures in the county, from the 2022 National Structure Inventory.
total_res_structures_sfhanumberTotal residential structures inside the county SFHA. FEMA publishes zero here for 593 of 3,159 counties, including some with policies in force.
penetration_data_quality_flagsstringJSON array of internal inconsistencies in FEMA published penetration figures for this county.
penetration_notestringHow the penetration figures were obtained and what the flags mean.

Screen verdict

FieldTypeDescription
flood_market_screen_levelstringLOW, MODERATE, ELEVATED, HIGH, INCONCLUSIVE when a contributing source was unavailable, or NO_NFIP_COMMUNITY when the boundaries were read and no community contains the site.
flood_market_screen_flagsstringJSON array of the specific conditions behind the screen level.
flood_market_screen_basisstringHow the screen level was reached, including the thresholds used.

Per-property rows (opt-in)

FieldTypeDescription
loss_property_rows_emittednumberHow many loss_property rows this site produced.
loss_property_idstringFEMA record identifier for this repetitive-loss property.
loss_property_zip_codestringZIP code as reported to FEMA on the property address.
loss_property_reported_citystringCity as reported to FEMA on the property address.
loss_property_countystringCounty name FEMA derives from the county FIPS.
loss_property_county_fipsstringCounty FIPS FEMA derives from the geocoded address.
loss_property_state_abbreviationstringState abbreviation on the FEMA record.
loss_property_flood_zonestringFEMA-rated flood zone for this property, upper-cased.
loss_property_flood_zone_classstringFlood-zone class: sfha_riverine, sfha_coastal_velocity, sfha_protection_system, sfha_decertified_system, moderate_or_minimal, minimal or undetermined.
loss_property_in_sfhabooleanTrue when the rated zone is a Special Flood Hazard Area, false for B, C and X, null for Zone D and for any zone FEMA did not publish.
loss_property_flood_zone_notestringWhy the zone could not be classified as SFHA or non-SFHA, when it could not.
loss_property_occupancy_typenumberFEMA occupancy code.
loss_property_occupancy_labelstringWhat FEMA occupancy code means, decoded scheme-aware.
loss_property_occupancy_schemestringlegacy for codes 1-6, modern for codes 11-19.
loss_property_is_residentialbooleanTrue or false when the occupancy code is documented, null when it is not.
loss_property_total_lossesnumberPaid NFIP claims over $1,000 since 1978 on this property. FEMA notes this can be inflated where structures were incorrectly linked.
loss_property_most_recent_loss_datestringMost recent closed-claim loss date on this property.
loss_property_original_construction_datestringOriginal construction date of the building.
loss_property_original_policy_datestringOriginal flood policy date.
loss_property_post_firm_constructionbooleanTrue when construction started after the community first FIRM.
loss_property_primary_residencebooleanTrue when the insured building is the insured party primary residence.
loss_property_currently_insuredbooleanTrue when FEMA records the property as currently insured by the NFIP.
loss_property_mitigatedbooleanTrue when FEMA records the property as mitigated as of the file date.
loss_property_nfip_rlbooleanNFIP insurance-related Repetitive Loss designation.
loss_property_nfip_srlbooleanNFIP insurance-related Severe Repetitive Loss designation.
loss_property_fma_rlbooleanFlood Mitigation Assistance grant-related Repetitive Loss designation.
loss_property_fma_srlbooleanFlood Mitigation Assistance grant-related Severe Repetitive Loss designation.
loss_property_designationsstringJSON array of every designation carried by this property.
loss_property_latitude_redactednumberLatitude FEMA publishes, redacted for privacy. Not usable for distance.
loss_property_longitude_redactednumberLongitude FEMA publishes, redacted for privacy. Not usable for distance.
loss_property_latitude_decimalsnumberDecimal places actually present on the redacted latitude. Zero means roughly plus or minus 55 km.
loss_property_longitude_decimalsnumberDecimal places actually present on the redacted longitude.
loss_property_census_block_groupstringTwelve-digit 2020 Census block group, or null where FEMA published a value that has lost digits.
loss_property_census_block_group_statusstringok, absent, unusable_scientific_notation, unusable_wrong_length or unusable_unrecognised.
loss_property_census_block_group_reasonstringWhy the block group is unusable, when it is.

FAQ

Can it tell me how many repetitive-loss properties are within a mile of my site? No, and neither can anything else built on this file. FEMA redacts the coordinates to one decimal place, and 20-27% of records carry zero decimals. See the section above.

What is the difference between NFIP RL and FMA RL? They are four independent flags, not a hierarchy. nfipRl / nfipSrl are insurance-side designations driven by claim history; fmaRl / fmaSrl are grant-side designations that drive Flood Mitigation Assistance eligibility. A property can carry any combination, and the live file contains FMA-only severe designations - so counting the NFIP flag alone understates severity. All four are counted separately.

Why do I get two rows for one address? Because the address is inside a municipality that is an NFIP community AND inside a county that is a separate NFIP community. Both have their own CRS class and their own repetitive-loss rollup. Set includeCountyCommunity: false to receive only the governing one.

Why is res_penetration_rate_sfha null for my county? Because FEMA published it as null, usually alongside a totalResStructuresSfha of zero. It is not recomputed from the underlying counts, because dividing by FEMA's zero would invent a rate. The counts are on the row so you can see exactly what FEMA published.

Does a CRS class of 10 mean no discount? Usually, but not always in FEMA's own file. Colorado carries class-10 communities published with a 10% and a 15% SFHA discount. The discount is read from the file, never derived from the class.

What happens if FEMA takes one of these datasets offline? The run fails with a message naming the dataset, and nothing is billed. FEMA publishes machine-readable deprecation dates on its catalog endpoint and this actor reads them, so an announced end-of-life shows up in openfema_deprecation_notice on every row before anything breaks.

  • nfip-flood-loss-risk-screener - paid NFIP claim history by location.
  • fema-nri-county-risk-profile - FEMA National Risk Index perils by county and tract.
  • epa-contaminated-site-screener - Phase I ESA contamination screen for the same site.
  • site-due-diligence-bundle - 20-layer site screen in one call.

Pricing

Pay per result. One row = one billable result. A run that fails the drift gate, or that cannot resolve any site, emits nothing and bills nothing.