Time series · house-prices
House prices by county and state
FHFA's annual house price index for every US county and state with enough sales, from 1975: cumulative growth in home values from the prices and appraisals of Fannie Mae and Freddie Mac mortgages, with the yearly change and indexes based to 100 in 1990 and 2000 so places can be compared.
- Updates
- Yearly
- Coverage
- —
- Current version
- —
- Last published
- —
- Validation
- —
- License
- US Government work
- Commercial use
- Allowed
Chart
Use the API
Each series and location is its own small file. The examples follow the series and location picked above. See the docs for versions, caching and errors.
curl
# One series for one place (.json or .csv)
curl -s "https://api.housingdata.dev/v1/house-prices/all-transactions/us-county-06037.json"
# Every series and place in one file
curl -sO "https://api.housingdata.dev/v1/house-prices/download/house-prices.csv" Python (polars)
import polars as pl
# One series for one place
df = pl.read_csv("https://api.housingdata.dev/v1/house-prices/all-transactions/us-county-06037.csv")
# Every series and place, with series and location columns
everything = pl.read_parquet("https://api.housingdata.dev/v1/house-prices/download/house-prices.parquet") JavaScript
const res = await fetch("https://api.housingdata.dev/v1/house-prices/all-transactions/us-county-06037.json");
if (!res.ok) throw new Error((await res.json()).detail); // errors are problem+json
const { meta, data } = await res.json();
console.log(meta.location_name, data.at(-1)); // { date, value, ... } Downloads
The whole dataset in one file, with series and location columns. Parquet keeps the column types and is much smaller.
- house-prices.csv CSV
- house-prices.parquet Parquet
Schema and series
Each series file has these columns. The bulk downloads add series and location columns in
front.
| Column | Type | Unit | Can be empty | Description |
|---|---|---|---|---|
| date | year (YYYY) | — | no | — |
| annual_change | number | % | yes | Change in the index from the year before, in percent; null in an area's first year |
| hpi | number | index | yes | Index, 100 in the first year FHFA recorded the area; null where the sample was too small |
| hpi_1990 | number | index | yes | Index, 100 in 1990; null where the area had no 1990 value |
| hpi_2000 | number | index | yes | Index, 100 in 2000; null where the area had no 2000 value |
Series
| Series id | Name |
|---|---|
| all-transactions | House price index (all transactions) |
Locations
Covers all 3,222 US counties and equivalents (ids: us-county- plus the 5-digit FIPS code); all 57 US states and equivalents (ids: us- plus the USPS code (us-ca, us-dc)).
Place names come from the shared location registry; see Sources.
Source and license
- Source
- FHFA House Price Index, annual all-transactions indexes for counties and states
- Publisher
- Federal Housing Finance Agency (FHFA)
- License
- US Government work (public domain in the United States) (
LicenseRef-US-Government-Work) - Commercial use
- Allowed
Credit the source with this exact text:
Federal Housing Finance Agency, House Price Index (all-transactions, annual, developmental county and state indexes), https://www.fhfa.gov/data/hpi.
Checked every 7 days. If the source hasn't changed in 15 months, the status page flags it as stale.
Endpoints
Every URL for this dataset. To pin the current version, put it after the id:
/v1/house-prices@<version>.
The API reference describes each response.
| What | URL |
|---|---|
| Metadata: version, coverage, downloads, validation | /v1/house-prices |
| Versions and monthly snapshots | /v1/house-prices/versions |
| Series and locations | /v1/house-prices/locations |
| House price index (all transactions) (JSON) | /v1/house-prices/all-transactions/{location}.json |
| House price index (all transactions) (CSV) | /v1/house-prices/all-transactions/{location}.csv |
| Whole dataset (CSV) | /v1/house-prices/download/house-prices.csv |
| Whole dataset (Parquet) | /v1/house-prices/download/house-prices.parquet |