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.
- 2020–2024
- annual
- 1.0.0
- 44031e6060a3
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.
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.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | ACS 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_fips | string | — | — | yes | 5-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. |
district_code | string | — | — | yes | 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.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. |
tract_geoid | string | — | — | yes | 11-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. |
age_bracket | string | — | — | no | 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'.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▾
|
population_count | integer | — | yes | Estimated 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_moe | number | — | yes | 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.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.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | countiesdistrictsstatestracts | enum-enforced, default: counties |
district_code | foreign_key | any value | multi-value |
county_fips | foreign_key | any value | multi-value |
tract_geoid | foreign_key | any value | multi-value |
age_bracket | categorical | 7 allowed values▾
| multi-value, enum-enforced |
district_type | dimension_attribute | 7 allowed values▾
| 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.