Microproduct Data Guidebeginner

Census Building Permits Survey

County counts of new privately owned housing units authorized by building permits for building local housing-supply and market-sizing tools.

Report a Problem

At a Glance

Difficulty
Beginner — comfortable for a first prototype
Size
Tiny · ≤0.01 GB
Formats
CSV, XLSX
Access
Download
API Key
Not Required
Provider
U.S. Census Bureau
Updates
Monthly
Last Verified
Aug 20, 2026
Source Type
Government source
  • Python syntax checked
  • Runnable notebook

From Source to Product Signal

Test a Product Idea in Four Steps

The Building Permits Survey publishes comma-delimited county files for new privately owned residential construction. Start with the latest annual county file and a few rows. Annual files impute nonresponse, and monthly files cover only a sample of permit offices.

1

Check the Setup

  • Python 3.10 or newer
  • A notebook environment such as Jupyter or Google Colab
  • An internet connection
2

Access the Data

  1. 1.Open the Building Permits Survey page and confirm you want county authorized-unit counts, not housing starts.
  2. 2.Download the documented annual county ASCII file from the Census BPS file directory.
  3. 3.Keep FIPS state and county codes, unit counts, and the survey year.
Open Official Source
3

Run the Python Example

Install the packages, then run the notebook cell.

python -m pip install pandas

import pandas as pd

permits = pd.read_csv(
    "https://www2.census.gov/econ/bps/County/co2025a.txt",
    skiprows=3,
    header=None,
    names=[
        "year",
        "state_fips",
        "county_fips",
        "region",
        "division",
        "county_name",
        "bldgs_1",
        "units_1",
        "value_1",
        "bldgs_2",
        "units_2",
        "value_2",
        "bldgs_34",
        "units_34",
        "value_34",
        "bldgs_5plus",
        "units_5plus",
        "value_5plus",
    ],
    usecols=range(18),
    nrows=30,
    skipinitialspace=True,
)
permits["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
print(
    permits[
        [
            "year",
            "state_fips",
            "county_fips",
            "county_name",
            "units_1",
            "units_5plus",
        ]
    ].head(20)
)
4

Test a Useful Signal

Rank counties by 2025 authorized housing units

Test whether annual permit counts can power a bounded housing-supply comparison.

  1. 01Keep state FIPS, county FIPS, name, and the imputed 1-unit and 5-or-more-unit counts.
  2. 02Sum units for one state and list the top counties.
  3. 03Explain that authorized permits are not completed housing and that monthly files omit many permit offices.

Dataset Details

U.S. Census Bureau is a government source. Last verified 2026-08-20. Temporal coverage: monthly and annual county files from 1990-present.

Geography

Formats

Provider

U.S. Census Bureau

Data Terms

U.S. Government public data / federal copyright guidance

Send Feedback