Skip to main content

CLI for querying Census ACS 5-year data for Michigan counties

Project description

acs-cli

A command-line tool for querying U.S. Census Bureau American Community Survey (ACS) 5-year estimates for Michigan counties. Returns clean CSV output ready for spreadsheets, data pipelines, or further analysis.

Install

# Run directly without installing
uvx acs_cli --help

# Or install with pip/uv
pip install acs_cli

Requires Python 3.14+.

Setup

Get a free Census API key at https://api.census.gov/data/key_signup.html, then save it:

acs-cli login --api-key YOUR_KEY

The key is stored in ~/.config/acs-cli/config. Alternatively, set CENSUS_API_KEY in your environment or a .env file.

Usage

Query topics

# Population demographics for all Michigan counties
acs-cli query population

# Filter to a specific county
acs-cli query income --county Wayne

# Combine multiple topics
acs-cli query population income education --county Washtenaw

# All topics at once
acs-cli query all

Multi-year queries

Query across multiple ACS vintages to see trends over time. Adds a Year column to the output.

acs-cli query population --years 2019,2020,2021,2022,2023,2024
acs-cli query income --years 2019,2024 --county Wayne

Save to file

acs-cli query population income --output data.csv
acs-cli query all --years 2020,2024 --output trend.csv

Sort results

acs-cli query population --sort "Total Population"

County profile

Get all topics for a single county in a vertical layout:

acs-cli info Washtenaw
acs-cli info "Grand Traverse" --year 2022

List available topics

acs-cli topics

Raw Census variables

Bypass the topic system and request specific ACS variable codes:

acs-cli query -v B01003_001E -v B19013_001E

Available Topics

Topic Description
population Total population, male/female, age breakouts (by sex), under 18, nativity/citizenship, households, housing units
income Median household/family income, per capita income, Gini index, earnings by sex, household income distribution (16 brackets), income sources (Social Security, SSI, public assistance, retirement)
age Median age overall, male, female
poverty Poverty universe and count below poverty level
education Full educational attainment for pop 25+ (no schooling through doctorate, including partial levels)
race Total, White, Black, AIAN, Asian
health_insurance Insurance universe, with coverage, without coverage
disability Disability universe, male with disability, female with disability
insurance_income Insurance status by household income brackets

Output Format

All output is CSV written to stdout (or a file with --output). Values are raw numbers without formatting so they can be consumed directly by pandas, Excel, database imports, or other tools. Suppressed Census values appear as empty fields.

Data Source

All data comes from the Census Bureau ACS 5-Year Estimates API. Available vintages: 2009-2024. Data covers all 83 Michigan counties (FIPS state code 26).

Project Structure

src/acs_cli/
├── cli.py              # Typer CLI commands
├── topics.py           # Variable definitions and topic registry
└── census_api/
    ├── __init__.py
    └── client.py       # API client, key management, CSV output

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acs_cli_mi-0.1.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acs_cli_mi-0.1.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file acs_cli_mi-0.1.0.tar.gz.

File metadata

  • Download URL: acs_cli_mi-0.1.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for acs_cli_mi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8c8ba24d09bc3756f15e9d8a6ec0fee0359397e067feb9123b2ccac9a6cffeba
MD5 2f7cf0cbb103bb026ee0c4bc0e108440
BLAKE2b-256 8a07e6fb3da98fc0d1c95c718999d0888af0bcb3ffd025693f46ed87a261ca8f

See more details on using hashes here.

File details

Details for the file acs_cli_mi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: acs_cli_mi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for acs_cli_mi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc447ef0dfacf3f3f3b49b6126a2b199023a402df36a40732b63c19ca33982de
MD5 840ad579b701169ad903eb7e72a789a3
BLAKE2b-256 79ae73bcc1ae8c640c49e7406f4d933ee183812e78b8c7142e6e35c1079dc294

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page