← All datasets

One-time snapshot

FEMA NFIP Flood Insurance Claims 1978–September 2026

2,725,989 redacted NFIP claims records with all 84 agency fields preserved, exact decimal payments, separate rated/current flood zones and explicit payment-completeness diagnostics.

Snapshot coverage

Records: 2,725,989 redacted claims records

Coverage: Loss dates 1978-01-01 through 2026-09-07; source as of 2026-09-08

Format: CSV + Parquet

Package uploaded: 2026-09-19

Listing reviewed: 2026-09-19

The upload and review dates do not extend the source coverage. This is a dated snapshot; future updates are not included.

Get this snapshot

$99one time

CSV and Parquet files for the coverage described here. Review the limitations and sample before purchasing.

Buy dated snapshot

Commercial license terms

View 1,000-row sample

New annual update subscriptions are unavailable. Existing customers can use their purchase download links or contact support.

Known limitations

  • This product uses the Federal Emergency Management Agency’s OpenFEMA API, but is not endorsed by FEMA. The Federal Government or FEMA cannot vouch for the data or analyses derived from these data after the data have been retrieved from the Agency's website(s).
  • OpenFEMA restricts use to statistical research or reporting. Do not attempt to reidentify individuals or use the data for determinations affecting individual rights or benefit eligibility.
  • Dated NFIP v3 snapshot retrieved September 19, 2026, with source asOfDate September 8. Loss dates end September 7, 2026; the latest year is partial and claims may be revised. Future updates are not included.
  • Rows are redacted claims transactions, not unique policies, insured properties, households or flood events. The id is unique within this release; stability across revisions is not guaranteed. No policy/exposure denominator is provided.
  • Breaking schema repair: 84 native camelCase agency fields plus total_paid_nominal, payment_status and coordinate_status replace the former reduced snake_case table. Source fields, nulls and empty strings are preserved. The former ZIP risk score and simplified flood-zone categories are removed.
  • total_paid_nominal requires all three gross payment components. There are 2,117,326 positive totals, 41,505 zero, 86 negative and 567,072 missing_component totals. Missing components are not zero. Net-payment and recovery fields are separate; amounts are nominal USD and sums of complete totals omit incomplete records.
  • County codes are missing in 62,433 rows. 55,827 ZIPs are empty and 303 nonempty ZIPs have irregular shapes. One state is empty and 16,441 use the source code UN. Every reportedCity is Currently Unavailable. No geography is inferred or padded.
  • 41,493 coordinate pairs are missing. All other pairs pass numeric bounds only. FEMA rounds coordinates to one decimal place for privacy, which may place them in another state/county. These are not property-level geocodes; use supplied state/county fields for aggregation.
  • ratedFloodZone is missing in 139,030 rows and floodZoneCurrent in 1,949,806. The fields describe different concepts. Zone X alone does not identify shaded versus unshaded areas. Counts and payments do not establish flood probability or an exposure-adjusted risk rate.
  • All original fields reconcile to both official bulk formats and the persisted output; annual financial totals pass an independent CSV/Decimal comparison. Agency accuracy and historical completeness are not independently certified. The 1,000-row sample covers all 49 loss years but is not statistically representative.

Files in this snapshot

Row counts are per table and should not be added as independent events. Expand a file to see its delivered Parquet field names and types.

fema_flood_insurance_claims.parquet — 2,725,989 rows · 87 fields
FieldType
agricultureStructureIndicatorbool
asOfDatetimestamp[us, tz=UTC]
basementEnclosureCrawlspaceTypeint16
policyCountint16
crsClassCodeint16
dateOfLossdate32[day]
elevatedBuildingIndicatorbool
elevationCertificateIndicatorstring
elevationDifferenceint32
baseFloodElevationdecimal128(6, 1)
ratedFloodZonestring
houseWorshipbool
locationOfContentsint16
lowestAdjacentGradedecimal128(6, 1)
lowestFloorElevationdecimal128(6, 1)
numberOfFloorsInTheInsuredBuildingint16
nonProfitIndicatorbool
obstructionTypeint16
occupancyTypeint16
originalConstructionDatedate32[day]
originalNBDatedate32[day]
amountPaidOnBuildingClaimdecimal128(12, 2)
amountPaidOnContentsClaimdecimal128(12, 2)
amountPaidOnIncreasedCostOfComplianceClaimdecimal128(12, 2)
postFIRMConstructionIndicatorbool
rateMethodstring
smallBusinessIndicatorBuildingbool
totalBuildingInsuranceCoverageint32
totalContentsInsuranceCoverageint32
yearOfLossint16
primaryResidenceIndicatorbool
buildingDamageAmountint32
buildingDeductibleCodestring
netBuildingPaymentAmountdecimal128(12, 2)
buildingPropertyValueint32
causeOfDamagestring
condominiumCoverageTypeCodestring
contentsDamageAmountint32
contentsDeductibleCodestring
netContentsPaymentAmountdecimal128(12, 2)
contentsPropertyValueint32
disasterAssistanceCoverageRequiredint16
eventDesignationNumberstring
ficoNumberint16
floodCharacteristicsIndicatorint16
floodWaterDurationint16
floodproofedIndicatorbool
floodEventstring
iccCoverageint32
netIccPaymentAmountdecimal128(8, 2)
nfipRatedCommunityNumberstring
nfipCommunityNumberCurrentstring
nfipCommunityNamestring
nonPaymentReasonContentsstring
nonPaymentReasonBuildingstring
numberOfUnitsint32
buildingReplacementCostint64
contentsReplacementCostint32
replacementCostBasisstring
stateOwnedIndicatorbool
waterDepthint16
floodZoneCurrentstring
buildingDescriptionCodeint16
rentalPropertyIndicatorbool
statestring
reportedCitystring
reportedZipCodestring
countyCodestring
censusGeoidstring
latitudedecimal128(9, 1)
longitudedecimal128(9, 1)
foundationTypestring
openDatedate32[day]
mostRecentRecoveryDatedate32[day]
exteriorWaterDepthint32
interiorWaterDepthint32
mostRecentPaymentDatedate32[day]
preFirmIndicatorbool
totalSalvageRecoverydecimal128(12, 2)
totalBldgClaimPmtRecoverydecimal128(12, 2)
totalContentsClaimPmtRecoverydecimal128(12, 2)
totalIccClaimPmtRecoverydecimal128(12, 2)
totalSubrogationRecoverydecimal128(12, 2)
idint64
total_paid_nominaldecimal128(20, 2)
payment_statusstring
coordinate_statusstring

Inspect the public CSV

import pandas as pd

df = pd.read_csv(
    "https://huggingface.co/datasets/claritystorm/fema-nfip-flood-insurance-claims/resolve/main/sample_1000.csv"
)
print(df.shape)
print(df.columns.tolist())
print(df.head())

This CSV is a sample, not the full package. It does not establish complete historical coverage or represent every field’s missingness. License details are on the Hugging Face card.

Source: government source portal · Dataset changelog