Skip to content
← All datasets

Population by Age Group (ACS)

How many people live in each Georgia community, broken down into six age groups - American Community Survey 5-year estimates down to the census-tract level.

Year coverage
2020–2024
Updated
annual
Version
1.0.0
Schema hash
44031e6060a3

Detail levels available

StateCounty · defaultDistrict

Overview

Population counts by age group from the American Community Survey 5-year estimates (detailed table B01001, Sex by Age), for Georgia at state, county, school district, and census tract geography, vintages 2020-2024. The 46 sex-by-age cells are collapsed into six school-age-aware brackets (summed over sex - no sex split is served) that are mutually exclusive and sum exactly to the total.

Row grain: One row per year, county_fips, district_code, tract_geoid, age_bracket.

Key metric

population_count — Population Count (count)

The single headline value most answers want.

Variables

Every column in the fact table. The code is the exact field name the API returns.

ColumnTypeUnitRangeNull?Description
yearYearinteger——noACS 5-year vintage END year: 2024 covers the pooled 2020-2024 survey period. Consecutive vintages overlap.
Full description
ACS 5-year vintage END year: 2024 covers the pooled 2020-2024 survey period. Consecutive vintages overlap.
county_fipsCounty FIPSstring——yes5-digit county FIPS code (state 13 + county). Populated only on county-level rows.
Full description
5-digit county FIPS code (state 13 + county). Populated only on county-level rows.

Joins counties; adds its label columns.

district_codeDistrict Codestring——yesGCD school district code (FK to the education districts dimension). Populated only on district-level rows - Census unified-school-district estimates mapped onto the ~180 standard districts via the dimension's district_census_id.
Full description
GCD school district code (FK to the education districts dimension). Populated only on district-level rows - Census unified-school-district estimates mapped onto the ~180 standard districts via the dimension's district_census_id.

Joins districts; adds its label columns.

tract_geoidTract GEOIDstring——yes11-digit census tract GEOID (2020 boundaries). Populated only on tract-level rows.
Full description
11-digit census tract GEOID (2020 boundaries). Populated only on tract-level rows.

Joins tracts; adds its label columns.

age_bracketAge Bracketstring——noAge group, collapsed from the B01001 sex-by-age cells (summed over sex): under_5, 5_17 (school age), 18_24, 25_44, 45_64, 65_plus; 'all' is the total population. The six brackets are mutually exclusive and sum exactly to 'all'.
Full description
Age group, collapsed from the B01001 sex-by-age cells (summed over sex): under_5, 5_17 (school age), 18_24, 25_44, 45_64, 65_plus; 'all' is the total population. The six brackets are mutually exclusive and sum exactly to 'all'.
7 allowed values
  • 18_24
  • 25_44
  • 45_64
  • 5_17
  • 65_plus
  • all — total / aggregate
  • under_5
population_countPopulation Countintegercount—yesEstimated residents in the age group.
Full description
ACS 5-year estimate of the number of residents in the age bracket: the sum of the bracket's male + female B01001 cells ('all' is the published total). Survey estimate, not a full count - see population_count_moe.
population_count_moePopulation Count Moenumbercount—yes90 percent margin of error for population_count. under_5, 18_24 and 65_plus carry the Census's published margin from subject table S0101; the 'all' row carries B01001's published MOE; 5_17, 25_44 and 45_64 carry the Census sqrt-sum-of-squares approximation over member-cell MOEs (non-integer float, not rounded; conservative at county level). Never the headline metric.
Full description
90 percent margin of error for population_count. under_5, 18_24 and 65_plus carry the Census's published margin from subject table S0101; the 'all' row carries B01001's published MOE; 5_17, 25_44 and 45_64 carry the Census sqrt-sum-of-squares approximation over member-cell MOEs (non-integer float, not rounded; conservative at county level). Never the headline metric.

Filters

Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.

ParameterKindAllowed valuesNotes
yearyear_exactany value—
year_minyear_rangeany value—
year_maxyear_rangeany value—
detaildetailcountiesdistrictsstatestractsenum-enforced, default: counties
district_codeforeign_keyany valuemulti-value
county_fipsforeign_keyany valuemulti-value
tract_geoidforeign_keyany valuemulti-value
age_bracketcategorical
7 allowed values
  • 18_24
  • 25_44
  • 45_64
  • 5_17
  • 65_plus
  • all
  • under_5
multi-value, enum-enforced
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced

Example requests

Run these against the base URL — they return live data.

All rows (first page), counties level

curl "https://georgiacivicdata.org/api/v1/census/population_by_age"

counties data for 2024

curl "https://georgiacivicdata.org/api/v1/census/population_by_age?year=2024"

Filtered to age_bracket = 18_24 for 2024

curl "https://georgiacivicdata.org/api/v1/census/population_by_age?year=2024&age_bracket=18_24"

One district (code 660), 2024

curl "https://georgiacivicdata.org/api/v1/census/population_by_age?district_code=660&year=2024&detail=districts"

One county (FIPS 13121), 2024

curl "https://georgiacivicdata.org/api/v1/census/population_by_age?county_fips=13121&year=2024&detail=counties"

Download 2024 as CSV

curl "https://georgiacivicdata.org/api/v1/census/population_by_age?year=2024&format=csv"

Notes & limitations

NULL handling

  • Suppressed cells (values the source withholds, usually for a group too small to report) are NULL, never zero.
  • Zero is a real, reported value.

Limitations

Age brackets are collapsed from the B01001 sex-by-age cells summed over sex - no sex split is served. The six non-'all' brackets are mutually exclusive and sum exactly to the 'all' row. Bracket margins of error: under_5, 18_24 and 65_plus carry the Census's own published margin from subject table S0101 (Age and Sex), whose estimate equals the bracket count; the 'all' row carries B01001's published MOE; 5_17, 25_44 and 45_64, which S0101 does not publish, carry the Census sqrt-sum-of-squares approximation over member-cell MOEs, counting only the largest margin among cells estimated at zero (a non-integer float). That approximation ignores the correlation the Census's population controls create between the detailed cells, so at county level those three brackets' margins can be several times wider than the true margin (they are close at tract level); treat them as conservative. A NULL population_count_moe next to a present estimate means a controlled estimate (fixed to official population totals, no sampling error published; annotation -555555555 in the source) - either the 'all' row's own MOE or a bracket with at least one controlled member cell. ACS 5-year period estimates: the year column is the vintage END year and each estimate pools five years of survey responses (2024 = 2020-2024). Consecutive vintages share about 80% of their sample, so the series is heavily smoothed - never difference overlapping vintages as if they were annual change. Estimates are survey-based and carry 90% margins of error (the *_moe columns); tract-level margins can be large relative to the estimate. All levels serve vintages 2020-2024 only, on 2020-vintage tract boundaries. State rows have NULL county_fips, district_code, and tract_geoid; county rows carry only county_fips, district rows only district_code, tract rows only tract_geoid. District rows cover the ~180 standard (city/county) districts only: the Census publishes school-district estimates at unified school district geography, which has no codes for charter schools, RESAs, or state agencies, and its few Census-only districts (e.g. the Fort Stewart military district) have no GCD district code and are dropped.