thanna94/us-building-permits
PermitBase — U.S. Residential Building Permits 1980–2024 The most comprehensive historical residential building permit dataset available at the place level. Place-level | Annual | 1980–2024 | SF/MF differentiated | 51 jurisdictions | 683,986 records Dataset Description This dataset contains annual residential building permit data for permit-issuing places (cities, towns, and unincorporated county areas) across the United States, covering 1980 through 2024. It is… See the full description on the dataset page: https://huggingface.co/datasets/thanna94/us-building-permits.
PermitBase — U.S. Residential Building Permits 1980–2024
The most comprehensive historical residential building permit dataset available at the place level.
Place-level | Annual | 1980–2024 | SF/MF differentiated | 51 jurisdictions | 683,986 records
Dataset Description
This dataset contains annual residential building permit data for permit-issuing places (cities, towns, and unincorporated county areas) across the United States, covering 1980 through 2024. It is derived from the U.S. Census Bureau's Building Permits Survey (BPS) and has been cleaned, normalized, and enriched with Census region labels, housing cycle annotations, and multifamily share calculations.
Source: U.S. Census Bureau, Building Permits Survey (BPS) License: CC0 1.0 (source data is U.S. federal government, public domain) API access: permitbase.org — query the live dataset via REST API or MCP
What Makes This Dataset Unique
Most existing permit datasets start around 2000. This dataset begins in 1980 — capturing:
- The S&L crisis (1989–1991)
- The 1990s long expansion
- The housing bubble and crash (2001–2009)
- The post-crisis recovery
- The COVID-era surge
- The current rate correction
It also provides clean SF/MF differentiation at the place level:
- 1-unit (single family)
- 2-unit (duplex)
- 3–4 unit
- 5+ unit (multifamily)
- Pre-computed MF total and MF% per record
Schema
Housing Cycle Labels
Coverage Notes
For live, fully updated national data, use the PermitBase API.
Usage Examples
import pandas as pd
df = pd.read_csv("national_permits_master.csv")
# National annual totals
nat = df.groupby('Year')[['SF_Units','MF_Total','Total_Units']].sum()
print(nat.loc[2005]) # Peak: 2.16M units
# Top 10 most active cities all-time
top = df.groupby(['State','Place'])['Total_Units'].sum().nlargest(10)
print(top)
# MF-heavy markets (min 5,000 units, ranked by MF share)
by_place = df.groupby(['State','Place']).agg(
MF=('MF_Total','sum'), Tot=('Total_Units','sum')).reset_index()
by_place = by_place[by_place['Tot'] >= 5000]
by_place['MF_Pct'] = by_place['MF'] / by_place['Tot']
print(by_place.nlargest(10,'MF_Pct'))
# Texas post-GFC recovery
tx = df[(df['State']=='Texas') & (df['Year'].between(2009,2015))]
tx_yr = tx.groupby('Year')['Total_Units'].sum()
print(tx_yr.pct_change())API Access
The live, continuously updated dataset is available via the PermitBase REST API and MCP server:
# Annual trends for any state
curl https://api.permitbase.org/v1/permits/annual \
-H "X-API-Key: your_key" \
-d "state=California&year_from=2000"
# Top multifamily markets
curl https://api.permitbase.org/v1/permits/rankings \
-H "X-API-Key: your_key" \
-d "ranked_by=mf&limit=25"Free tier: 50 calls/month, no credit card. Get your key at permitbase.org.
Citation
If you use this dataset in research, please cite:
@dataset{permitbase2024,
title = {PermitBase: U.S. Residential Building Permits 1980--2024},
author = {PermitBase},
year = {2024},
url = {https://huggingface.co/datasets/thanna94/us-building-permits},
note = {Derived from U.S. Census Bureau Building Permits Survey (BPS)}
}Related Research
- LaPoint & Cortes (2024): "Housing Is the Financial Cycle: Evidence from 100 Years of Local Building Permits"
- U.S. Census Bureau Building Permits Survey: https://www.census.gov/construction/bps/
