Coming Soon — Request Early Access

Census data, without the pain.

A Census API that returns metrics and trends—not tables and variable codes. Get answers, not ingredients.

ACS 1 and 5-Year Data
100+ Derived Metrics
Year-over-Year Trends
The Problem

What's broken today

Working with Census data means wrestling with cryptic variable codes, multi-table joins, and manual calculations. Every team rebuilds the same logic—and most get it wrong.

Example: "What percent of workers in ZIP 60004 work from home?"

With the Census API, you need to know the exact table (B08301), variable codes, pull multiple years, map ZIP to ZCTA, compute ratios, and handle margins of error. With our API? One request.

Census API (today)

GET /data/2023/acs/acs5?get=B08301_001E,B08301_021E&for=zip%20code%20tabulation%20area:60004
// Step 1: Know the exact variables
// B08301_001E = total workers
// B08301_021E = worked from home

// Step 2: Get current year data
{
  "B08301_001E": 31500,
  "B08301_021E": 4200
}

// Step 3: Get data from 5 years ago...
// Step 4: Get data from 10 years ago...
// Step 5: Compute percentage manually
// Step 6: Calculate change over time
// Step 7: Handle margins of error
// Step 8: Document your assumptions

// 🔴 This is not an answer. It's an ingredient list.

Requires table knowledge, multiple API calls, manual calculations, and MOE handling.

Our API

GET /v1/geo/zcta/60004/metrics/pct_worked_from_home?trend=10y
{
  "metric": "pct_worked_from_home",
  "geo": "zcta:60004",
  "year": 2023,
  "value": 0.133,
  "change_5y_pp": 0.041,
  "change_10y_pp": 0.077,
  "prior_5y": 0.092,
  "prior_10y": 0.056,
  "confidence": "high",
  "moe": 0.012,
  "source": "ACS 5-Year Estimates",
  "notes": "ZCTA boundary stable across period"
}

One call. Semantic metric name. Trends computed. Confidence assessed. Done.

Example: "Top 3 growing industries in Cook County"

Industry data requires decoding 50+ occupation categories (B24030 table), computing growth rates, and ranking. We do this automatically.

Census API (today)

GET /data/2023/acs/acs5?get=B24030_001E,B24030_002E,...,B24030_050E&for=county:031&in=state:17
// You must pull 50+ industry variables
{
  "B24030_001E": 2645000,  // Total
  "B24030_003E": 89200,    // Agriculture
  "B24030_007E": 142300,   // Construction
  "B24030_010E": 278500,   // Manufacturing
  "B24030_027E": 412800,   // Healthcare
  "B24030_034E": 198400,   // Finance
  // ... 45 more variables
}

// Then repeat for prior years
// Then map codes to industry names
// Then compute growth rates
// Then sort and rank
// 🔴 Hours of work for one question

50+ variables, multiple year pulls, manual mapping to industry names, growth calculation, and ranking.

Our API

GET /v1/geo/county/17031/metrics/industry_growth?limit=3
{
  "geo": "county:17031",
  "metric": "industry_growth_5y",
  "year": 2023,
  "results": [
    {
      "industry": "Transportation & Warehousing",
      "growth_5y_pct": 28.4,
      "current_share": 0.067
    },
    {
      "industry": "Healthcare & Social Assistance", 
      "growth_5y_pct": 18.2,
      "current_share": 0.156
    },
    {
      "industry": "Professional & Technical Services",
      "growth_5y_pct": 14.7,
      "current_share": 0.132
    }
  ],
  "source": "ACS 5-Year, B24030 series"
}

Ranked results, human-readable labels, growth rates pre-computed.

1

Table hunting

Which of 1,400+ tables has your variable?

2

Variable decoding

B08301_021E is not self-documenting

3

Time alignment

Pooled estimates require careful handling

4

Formula errors

Most teams miscalculate derived metrics

How it works

We do the hard work once—so you never have to. Our pipeline transforms raw Census data into reliable, documented, ready-to-use metrics.

1

Ingest ACS

We pull raw data from the Census Bureau API—every ACS 5-year release, plus 5 and 10 years prior.

2

Normalize Schema

Variable codes mapped to semantic names. Geographies standardized. Edge cases handled.

3

Metric Registry

Curated definitions for 50+ derived metrics with documented formulas and guardrails.

4

Compute Trends

5-year and 10-year changes pre-computed with proper pooled estimate handling.

5

Serve with Confidence

Every response includes confidence levels, MOE, source, and provenance metadata.

Census Bureau
Raw Tables
Normalized Schema
Metric Registry
Plated Metrics
Your API Call

Metric Packs

Pre-built collections of related metrics, ready to query. Each metric includes documented formulas, source tables, and confidence assessments.

Demographics

  • Population by age
  • Race & ethnicity
  • Household composition
  • Education attainment

Housing

  • Median home value
  • Owner vs renter
  • Vacancy rates
  • Housing vintage

Affordability

  • Median income
  • Rent burden
  • Cost of living index
  • Poverty rate

Labor

  • Employment rate
  • Labor force participation
  • Work from home
  • Self-employment

Commuting

  • Commute time
  • Mode of transport
  • WFH rate
  • Vehicle availability

Industry

  • Industry mix
  • Top employers
  • Industry growth
  • Occupation distribution

All metrics support time-series queries: ?trend=5y or ?trend=10y

Built for developers

No SDKs to install. No magic to learn. Just clean REST endpoints with semantic URLs and predictable JSON responses.

RESTful & predictable

Consistent URL patterns. JSON responses. No surprises.

Fast & cached

Pre-computed metrics served from edge cache. Sub-100ms responses.

Transparent provenance

Every response includes source tables, formulas, and confidence.

Machine-readable

TypeScript types. OpenAPI spec. Designed for automation.

Standardized URL patterns
// Consistent URL pattern for any metric
GET /v1/geo/{geo_type}/{geo_id}/metrics/{metric}

// Point-in-time query (latest)
GET /v1/geo/zcta/60004/metrics/median_household_income

// Same endpoint, add trend parameter
GET /v1/geo/zcta/60004/metrics/median_household_income?trend=10y

// Works for any geography
GET /v1/geo/county/17031/metrics/median_household_income
GET /v1/geo/tract/17031081700/metrics/median_household_income
GET /v1/geo/state/17/metrics/median_household_income

// Batch multiple metrics
GET /v1/geo/zcta/60004/metrics?include=median_income,pct_worked_from_home,vacancy_rate

Define your own metrics

Need a metric we don't have? Enterprise customers can define custom formulas in the metric registry. Once defined, your custom metrics work exactly like built-in ones—with automatic trend computation across all geographies.

1

Define your metric

Specify a YAML definition with your formula type, numerator/denominator variables, and guardrails. We validate against our variable registry.

2

We materialize it

Your metric is computed across all geographies and time periods. Trends are pre-calculated. Confidence flags are applied.

3

Query like any metric

Use the same endpoints. Add ?trend=10y. Batch with other metrics. Your custom metric is a first-class citizen.

Example: "How remote-friendly is the professional workforce here?"

Want to identify metros where professional workers have embraced remote work? Define a custom ratio metric targeting WFH rates specifically for professional industries.

Your definition

custom_metrics/remote_professional.yaml
metric_id: pct_remote_friendly_professional_workers
label: "Remote-Friendly Professional Workforce"
formula_type: ratio
numerator:
  - worked_from_home_professional_industries
denominator:
  - total_professional_workers
denom_min: 200
unit: percent
description: "Share of professional workers who work from home"

API response

GET /v1/geo/zcta/60004/metrics/pct_remote_friendly_professional_workers?trend=10y
{
  "metric": "pct_remote_friendly_professional_workers",
  "label": "Remote-Friendly Professional Workforce",
  "geo": "zcta:60004",
  "year": 2023,
  "value": 0.312,
  "display_value": "31.2%",
  "change_5y_pp": 0.148,
  "change_10y_pp": 0.224,
  "confidence": "high",
  "moe": 0.024,
  "custom_metric": true,
  "definition_id": "cm_a1b2c3d4"
}

Example: "How risky is this market for rent growth?"

Identify markets where a large share of renters are severely cost-burdened and low-income—a leading indicator for rent collection risk and tenant turnover.

Your definition

custom_metrics/renter_risk.yaml
metric_id: pct_renters_highly_cost_burdened_low_income
label: "High-Risk Renter Population"
formula_type: ratio
numerator:
  - renters_income_below_50k_rent_burden_50plus
denominator:
  - total_renter_households
denom_min: 100
unit: percent
description: "Share of renters with <$50k income paying 50%+ on rent"

API response

GET /v1/geo/county/17031/metrics/pct_renters_highly_cost_burdened_low_income
{
  "metric": "pct_renters_highly_cost_burdened_low_income",
  "label": "High-Risk Renter Population",
  "geo": "county:17031",
  "year": 2023,
  "value": 0.187,
  "display_value": "18.7%",
  "change_5y_pp": 0.032,
  "confidence": "high",
  "notes": "High rent-growth risk indicator",
  "custom_metric": true
}

Why define custom metrics?

  • Proprietary insights — Build metrics that match your unique business logic
  • Automatic trends — 5yr and 10yr changes computed automatically
  • Full coverage — Run across all 33K+ ZCTAs, 85K+ tracts instantly
  • Same guardrails — MOE propagation, confidence flags, provenance

Custom metrics are available on Enterprise plans.

Request Early Access

Frequently asked questions

Everything you need to know about the API and Census data.

We use the official U.S. Census Bureau API, specifically the American Community Survey (ACS) 1 and 5-year estimates. We pull the latest releases plus 5 and 10 years prior to enable trend analysis. All data is sourced directly from Census and transformed using documented formulas.

Still have questions? Reach out

Ready to skip the Census headaches?

Join the early access list. Be the first to build with semantic Census metrics.

Request Early Access

No spam. We'll reach out when your spot is ready.