OpenFEMA NFIP API

National Flood Insurance Program redacted policy and claims data.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fema-nfip-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fema-nfip-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: OpenFEMA Catalog NFIP API
  description: OpenFEMA is FEMA's open data platform. It exposes a read-only RESTful API over individually versioned dataset endpoints (Entities) using OData-style query string parameters. No API key, subscription, or authentication is required. Responses default to JSON; CSV and Parquet are also available via $format. This document models the confirmed public dataset endpoints covering disaster declarations, public assistance, hazard mitigation, NFIP, IPAWS alerts, web disaster summaries, and the self-describing dataset/field catalog. Field lists shown here are representative, not exhaustive - the full data dictionary for any dataset/version is available live from the OpenFemaDataSetFields endpoint modeled below.
  termsOfService: https://www.fema.gov/about/website-information/privacy-policy
  contact:
    name: OpenFEMA
    email: OpenFEMA@fema.dhs.gov
    url: https://www.fema.gov/about/openfema
  license:
    name: Public Domain (U.S. Government Work)
    url: https://www.usa.gov/government-works
  version: '2.1'
servers:
- url: https://www.fema.gov/api/open
  description: OpenFEMA production API (dataset version is part of each path)
tags:
- name: NFIP
  description: National Flood Insurance Program redacted policy and claims data.
paths:
  /v2/FimaNfipPolicies:
    get:
      operationId: listFimaNfipPolicies
      tags:
      - NFIP
      summary: List NFIP redacted policies
      description: Returns policy-level NFIP transactions redacted to protect policyholder personally identifiable information.
      parameters:
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Select'
      - $ref: '#/components/parameters/Top'
      - $ref: '#/components/parameters/Skip'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/Format'
      - $ref: '#/components/parameters/Metadata'
      - $ref: '#/components/parameters/Count'
      - $ref: '#/components/parameters/AllRecords'
      responses:
        '200':
          description: A page of redacted NFIP policy records.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/OpenFemaEnvelope'
                - type: object
                  properties:
                    FimaNfipPolicies:
                      type: array
                      items:
                        $ref: '#/components/schemas/FimaNfipPolicy'
            text/csv:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadFilter'
  /v2/FimaNfipClaims:
    get:
      operationId: listFimaNfipClaims
      tags:
      - NFIP
      summary: List NFIP redacted claims
      description: Returns NFIP claims transactions redacted to protect policyholder personally identifiable information.
      parameters:
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Select'
      - $ref: '#/components/parameters/Top'
      - $ref: '#/components/parameters/Skip'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/Format'
      - $ref: '#/components/parameters/Metadata'
      - $ref: '#/components/parameters/Count'
      - $ref: '#/components/parameters/AllRecords'
      responses:
        '200':
          description: A page of redacted NFIP claim records.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/OpenFemaEnvelope'
                - type: object
                  properties:
                    FimaNfipClaims:
                      type: array
                      items:
                        $ref: '#/components/schemas/FimaNfipClaim'
            text/csv:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadFilter'
components:
  parameters:
    Top:
      name: $top
      in: query
      description: Number of records to return. Defaults to 1000 when omitted; maximum of 10000 per call.
      schema:
        type: integer
        default: 1000
        maximum: 10000
        minimum: 1
    Format:
      name: $format
      in: query
      description: Response format. Defaults to json when omitted.
      schema:
        type: string
        enum:
        - json
        - csv
        - parquet
        - jsona
        - xlsx
        default: json
    Filter:
      name: $filter
      in: query
      description: OData-style filter expression, e.g. state eq 'FL' and fyDeclared eq 2024. The parser is strict about spacing, quoting, and capitalization; string literals must be single-quoted.
      schema:
        type: string
    Metadata:
      name: $metadata
      in: query
      description: When false, suppresses the metadata envelope object and returns only the data array. Accepts true/false (the legacy on/off values are deprecated).
      schema:
        type: boolean
        default: true
    Select:
      name: $select
      in: query
      description: Comma-separated list of fields to include in the response.
      schema:
        type: string
    AllRecords:
      name: $allrecords
      in: query
      description: BETA. When true, forces the full result set to be returned in one download, overriding the 10000-record $top ceiling. Intended for bulk export, not interactive paging.
      schema:
        type: boolean
        default: false
    OrderBy:
      name: $orderby
      in: query
      description: Field name to sort results by.
      schema:
        type: string
    Count:
      name: $count
      in: query
      description: When true, includes the total matching record count in the metadata envelope. Replacement for the deprecated $inlinecount parameter.
      schema:
        type: boolean
        default: false
    Skip:
      name: $skip
      in: query
      description: Number of records to skip, used to page through results beyond $top.
      schema:
        type: integer
        default: 0
        minimum: 0
  schemas:
    FimaNfipClaim:
      type: object
      description: One redacted NFIP claim transaction. The live dataset carries 73 fields; representative fields shown.
      properties:
        id:
          type: string
        dateOfLoss:
          type: string
          format: date
        state:
          type: string
        countyCode:
          type: string
        causeOfDamage:
          type: string
        floodZone:
          type: string
        amountPaidOnBuildingClaim:
          type: number
          format: double
        amountPaidOnContentsClaim:
          type: number
          format: double
        netTotalPayments:
          type: number
          format: double
        lowestFloorElevation:
          type: number
          format: double
        occupancyType:
          type: integer
        yearOfLoss:
          type: integer
        hash:
          type: string
        lastRefresh:
          type: string
          format: date-time
    OpenFemaEnvelope:
      type: object
      description: Every OpenFEMA response wraps the requested dataset array in a metadata object (unless $metadata=false is passed).
      properties:
        metadata:
          type: object
          properties:
            skip:
              type: integer
            filter:
              type: string
            orderby:
              type: string
            select:
              type: string
            rundate:
              type: string
              format: date-time
            count:
              type: integer
              description: Total matching records, present only when $count=true.
            entityname:
              type: string
            version:
              type: integer
            url:
              type: string
    FimaNfipPolicy:
      type: object
      description: One redacted NFIP policy transaction. The live dataset carries 81 fields; representative fields shown.
      properties:
        id:
          type: string
        policyEffectiveDate:
          type: string
          format: date
        policyTerminationDate:
          type: string
          format: date
        totalBuildingInsuranceCoverage:
          type: number
          format: double
        totalContentsInsuranceCoverage:
          type: number
          format: double
        totalInsurancePremiumOfThePolicy:
          type: number
          format: double
        propertyState:
          type: string
        countyCode:
          type: string
        censusTract:
          type: string
        floodZone:
          type: string
        occupancyType:
          type: integer
        constructionDate:
          type: string
          format: date
        ratedFloodZone:
          type: string
        hash:
          type: string
        lastRefresh:
          type: string
          format: date-time
  responses:
    BadFilter:
      description: Malformed OData query string (commonly a $filter with incorrect quoting, spacing, or an unknown field name).
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string