US Census Bureau
The US Census Bureau is the nation's leading provider of quality demographic data. Beyond the decennial census, it provides vital statistics through various surveys including the American Community Survey (ACS), economic indicators, and population estimates
Current status
100.0% operational in known checks
Checked Jun 16, 7:05 PM
Access
open
Collection level
L2
Confidence
medium
Recommended next action
Use the documented public content probe, then promote to freshness only after a stable value is confirmed.
Exportable data
public_api
Docker fit
docker_ok_with_storage
Estimated size
huge
Download location
https://api.census.gov/data.jsonCost
Free
Access type
open
Signup required
No
Update alerts
Not offered
Coverage
north america
Update frequency
varies
Source Documentation
What You're Getting
US Census Bureau provides the most granular US demographic and economic data: Decennial Census (10-year), American Community Survey (ACS, 1-year and 5-year estimates), Current Population Survey (CPS), Economic Census (5-year), County Business Patterns (annual), International Trade Statistics, Building Permits, and more. Data is organized by geographic unit (nation, state, county, tract, block group) and demographic/economic variables.
Ingestion Strategy
Use the Census API — free, no authentication required for basic use (key improves rate limits). ACS 5-year data is the workhorse for sub-state geography. Queries specify variables (e.g. B01001_001E for total population), geography (e.g. state, county), and dataset (e.g. acs/acs5).
import requests, pandas as pd
# ACS 5-year: median household income by county
url = "https://api.census.gov/data/2022/acs/acs5"
params = {
"get": "NAME,B19013_001E",
"for": "county:*",
"in": "state:*",
"key": "your_key" # optional but recommended
}
r = requests.get(url, params=params)
df = pd.DataFrame(r.json()[1:], columns=r.json()[0])
Rate Limits & API Details
- No key: 500 requests/day; with free key: higher limits
- Key registration: api.census.gov/data/key_signup.html
- API base:
api.census.gov/data/{year}/{dataset} - TIGER/Line shapefiles for geographic boundaries: census.gov/geographies/mapping-files/time-series/geo/tiger-line-file.html
Schema Stability
Variable codes (e.g. B19013_001E) change between ACS releases — the table structure is re-published each year with some changes. Always pull the variable dictionary for the specific year you're loading. Geographic FIPS codes are stable; sub-county geographies can change with Decennial Census redistricting. ACS 5-year estimates are not comparable across overlapping periods — use non-overlapping periods for trend analysis.
Data Quality Gotchas
- Estimates with margins of error: ACS data includes MOE columns (e.g.
B19013_001M) — always store and surface these, especially for small geographies - Geography changes: county and census tract boundaries change with each Decennial Census; use GEOIDs carefully when building time series
- ACS 1-year vs 5-year: 1-year is current but only for areas with 65,000+ population; 5-year covers all geographies but is a rolling average
- Suppression: small cells are suppressed for privacy (shown as
-666666666) — handle these explicitly
Tool Compatibility
- Python:
censusPyPI package;cenpy; direct API calls - R:
tidycensus(excellent, highly recommended) - Airbyte: no official connector
- TIGER shapefiles: use
geopandasfor Python spatial analysis
Benchmarking Approach
US total population (ACS 5-year, B01001_001E): should match Census Bureau published estimate within 1%. County count: 3,143. After each December ACS release, verify new year data is available within 5 business days. Cross-check median household income for a known county against Census press release. Alert if MOE-to-estimate ratio exceeds 30% for more than 20% of county rows.
Data Formats
API Quickstart
— Python — fetch population by stateimport requests
API_KEY = "your_census_key"
url = "https://api.census.gov/data/2022/acs/acs5"
params = {
"get": "NAME,B01001_001E", # Name + total population
"for": "state:*",
"key": API_KEY
}
r = requests.get(url, params=params)
rows = r.json()
for row in sorted(rows[1:], key=lambda x: -int(x[1]))[:5]:
print(row[0], f"{int(row[1]):,}") How to Access
- 🌐 end user
- 📦 bulk export
Notable Datasets
26 total- ▸ Decennial Census — P1TOTAL POPULATION
- ▸ American Community Survey — S0101Age and Sex
- ▸ American Community Survey — DP05ACS Demographic and Housing Estimates
- ▸ American Community Survey — S1901Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)
- ▸ American Community Survey — DP03Selected Economic Characteristics
- ▸ Decennial Census — P2URBAN AND RURAL
- ▸ American Community Survey — DP02Selected Social Characteristics in the United States
- ▸ American Community Survey — DP04Selected Housing Characteristics
- + 18 more at the source
Index entry
Added: Apr 30, 2026
Last indexed: Jun 16, 2026
Unverified entry