Category guide

AvailableView as Markdown

Real Estate

US housing and real-estate indicators — FHFA house price indices and related series.

Where the data comes from

Every value this category returns is attributable to one of these publishers, and every payload carries the source tag with it.

SourcePublisherWhat we holdLicence
fema-nriFederal Emergency Management AgencyNational Risk Index county and census-tract profiles with composite risk, expected annual loss, social vulnerability, community resilience, and 18 hazard-specific scores and ratingsU.S. Government work, public domain (17 U.S.C. § 105)
absAustralian Bureau of StatisticsABS Data API SDMX series: Building Approvals (BA_GCCSA), Building Activity (BUILDING_ACTIVITY), and Total Value of Dwellings (RES_DWELL_ST), as curated in the real-estate series catalogCreative Commons Attribution 4.0 International (cc-by-4.0)
censusU.S. Census BureauACS curated housing estimates and margins of error at nation, state, county, CBSA, and ZCTA levels; Building Permits Survey authorized units by structure class at county and CBSA levels; economic indicator release calendarU.S. Government work, public domain (us-gov-public-domain); standard Census non-endorsement caveat applies
fdic_sodFederal Deposit Insurance CorporationFDIC Summary of DepositsU.S. Government work, public domain (17 U.S.C. § 105)
fhfaFederal Housing Finance AgencyFHFA House Price IndexU.S. Government work, public domain (us-gov-public-domain)
hudU.S. Department of Housing and Urban DevelopmentHUD USER Fair Market RentsU.S. Government work, public domain (us-gov-public-domain)
noaaNational Oceanic and Atmospheric AdministrationNational Centers for Environmental Information (NCEI) Storm Events DatabaseU.S. Government work, public domain (17 U.S.C. § 105)
census_geoU.S. Census BureauState and county geography reference codes (2020 vintage)U.S. Government work, public domain (us-gov-public-domain); standard Census non-endorsement caveat applies
census_rel2020U.S. Census BureauZCTA-to-county relationship file (2020 vintage)U.S. Government work, public domain (us-gov-public-domain); standard Census non-endorsement caveat applies
omb_delineation_2023Office of Management and Budget (delineation lists distributed via the U.S. Census Bureau)Core-based statistical area (CBSA) delineation lists (2023 vintage)U.S. Government work, public domain (us-gov-public-domain); standard Census non-endorsement caveat applies
realestate_catalogCurated internal catalog (FHFA, HUD, FDIC SOD, NOAA NCEI, Census ACS + BPS)Discovery metadata for real-estate series spanning FHFA House Price Indexes, HUD Fair Market Rents, FDIC Summary of Deposits, NOAA NCEI Storm Events, Census ACS housing, and Census Building Permits Survey permitsAggregates U.S. Government public-domain series metadata from FHFA, HUD, FDIC, NOAA, and Census; the catalog identifier carries no separate license

Required notices

  • This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau.
  • This product uses Census Bureau data but is not endorsed or certified by the Census Bureau.

Full licence text, attribution strings, and every source on the surface are in Attribution.

Three calls, in order

Real-estate data is organised by place and series, and the two are resolved separately. A place — "Austin, TX", a county, a ZIP code — becomes a stable geo_key. A geo_key plus a topic becomes a series_key. A series_key becomes observations. Skipping a step and guessing at a key is the one reliable way to get an unknown_entity back.

Geography is a graph, not a label. A match carries a bottom-up parents chain and outgoing crosswalks with a relation, a weight where one exists, a source, and a vintage — so an agent can move between a ZCTA and its county, or a county and its CBSA, and know how much of that mapping is approximate.

Worked workflows

Resolve a place

[ PYTHON ]
re_search_geographies(query="Austin, TX", limit=10)
[ JSON ]
{
  "data": {
    "query": "Austin, TX",
    "matches": [
      {
        "geo_key": "cbsa_12420",
        "level": "cbsa",
        "code": "12420",
        "name": "<CBSA title>",
        "state_code": "TX",
        "score": 1.0,
        "match_reason": "name_exact",
        "parents": [],
        "crosswalks": []
      }
    ]
  },
  "meta": { "source": "census_geo", "as_of": "2026-08-19T00:00:00Z", "notice": "..." },
  "pagination": null
}

Values are illustrative; field names are real. A blank query is a normal empty success rather than an error, and pagination is null because a relevance list is bounded rather than paged.

Find the series available for that place

[ PYTHON ]
re_search_series(geo_key="cbsa_12420", query="house price", limit=10)

Matches sort by series_key and carry dataset and source metadata, units, frequency, seasonal adjustment, licence tag, and the observation coverage window — coverage_start and coverage_end, either of which can be null when nothing is ingested yet. Reading the coverage window before you request observations is how you avoid asking for a decade of a series that starts in 2019.

Either filter works alone, but at least one is required: a call with neither query nor geo_key is a bad_parameter, and an unknown geo_key is an unknown_entity with suggestions.

Read the observations

[ PYTHON ]
re_get_series(series_key="fhfa_hpi_at_quarterly_nsa_cbsa_12420", start="2020-01-01", end="2026-06-30", limit=100)
[ JSON ]
{
  "data": {
    "series_key": "fhfa_hpi_at_quarterly_nsa_cbsa_12420",
    "dataset_key": "fhfa_hpi_at_quarterly_nsa",
    "source": "fhfa",
    "source_series_id": "<publisher series id>",
    "title": "FHFA House Price Index (all-transactions, NSA)",
    "attribution": "Data sourced from the FHFA House Price Index.",
    "units": "index",
    "base_period": "1995Q1=100",
    "currency": null,
    "frequency": "quarterly",
    "seasonal_adjustment": "not_seasonally_adjusted",
    "license_tag": "us-gov-public-domain",
    "geography": {
      "geo_key": "cbsa_12420",
      "level": "cbsa",
      "code": "12420",
      "name": "<CBSA title>",
      "state_code": "TX"
    },
    "start": "2020-01-01",
    "end": "2026-06-30",
    "observations": [
      {
        "period": "2026-04-01",
        "period_type": "quarter",
        "value": "412.250000",
        "as_of": "2026-08-19T00:00:00Z",
        "source_vintage": "2026Q2",
        "effective_date": "2026-08-19",
        "meta": null
      }
    ]
  },
  "meta": { "source": "fhfa", "as_of": "2026-08-19T00:00:00Z" },
  "pagination": { "limit": 100, "has_more": true, "next_cursor": "eyJ2IjoxLCJrIjpbLi4uXX0" }
}

Observations are newest-first and page with a cursor; keep series_key, start, and end constant while you walk backwards. Bounding the window with start and end is almost always better than paging a whole history you will discard.

Coverage and caveats

  • This is market-level data, not property-level. Everything here describes a geography — a CBSA, a county, a ZCTA, a state — over a period. There are no addresses, parcels, listings, or transactions in this category, and no tool that will synthesise them.
  • Latest values only. re_get_series serves the current value for each period. It has no as_known_at parameter, so stored vintages are not queryable here; an observation's source_vintage and effective_date tell you which publication a value came from, but you cannot ask what the series looked like on a past date.
  • Sources differ in kind, and it matters. Index levels, fair market rents, survey estimates, and hazard event counts are all in this category and none of them mean the same thing. Read units, base_period, and seasonal_adjustment off the series before comparing anything to anything.
  • Survey estimates carry uncertainty. Census ACS observations come with 90-percent margins of error in the observation's own meta. An estimate quoted without its margin is a smaller-sounding number than the data supports.
  • Geography vintages are dated. Delineations and relationship files are versioned, and a crosswalk carries the vintage it came from. A county-to-CBSA link has no weight; a ZCTA-to-county link can.

Tools and endpoints

Each tool's full input schema, provenance, and bounds are on its own page; the REST endpoints mirror them one for one.

ToolWhat it doesPage size
re_get_hazard_profileFetch one county's latest FEMA National Risk Index hazard profile.scalar result
re_get_seriesFetch a bounded, newest-first page of one real-estate series.default 100 · min 1 · max 500
re_search_geographiesResolve a U.S. place to geography keys and containment links.default 10 · min 1 · max 50
re_search_seriesDiscover real-estate series for a topic and/or exact geography.default 10 · min 1 · max 50

Over HTTP: Real Estate REST endpoints.