Skip to content
← All datasets

School Enrollment of Children (ACS)

Where each Georgia community's school-age children (3-17) go to school - public, private, or not enrolled - American Community Survey 5-year shares down to the census-tract level.

Year coverage
20202024
Updated
annual
Version
1.0.0
Schema hash
f3fe93a3fe97

Detail levels available

StateCounty · defaultDistrict

Overview

School enrollment of school-age children (ages 3-17) from the American Community Survey 5-year estimates (detailed table B14003), for Georgia at state, county, school district, and census tract geography, vintages 2020-2024: the share of children enrolled in public school, private school, or not enrolled, with the underlying counts and margins of error.

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

Key metric

pct_of_school_age_populationPercent of School Age Population (proportion)

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
yearYearintegernoACS 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 FIPSstringyes5-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 CodestringyesGCD 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.
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.

Joins districts; adds its label columns.

tract_geoidTract GEOIDstringyes11-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.

school_typeSchool TypestringnoEnrollment status of school-age children (3-17): enrolled in public school, enrolled in private school, or not enrolled. The Census type split covers nursery school through college, not K-12 specifically. The three types partition the school-age population.
Full description
Enrollment status of school-age children (3-17): enrolled in public school, enrolled in private school, or not enrolled. The Census type split covers nursery school through college, not K-12 specifically. The three types partition the school-age population.
3 allowed values
  • not_enrolled
  • private
  • public
pct_of_school_age_populationPercent of School Age PopulationnumberproportionyesShare of school-age children in this enrollment type.
Full description
Children aged 3-17 in this school_type as a share of the school-age population (0-1), derived as num_in_school_type / num_school_age_population. NULL when the geography has no school-age children.
pct_of_school_age_population_moePercent of School Age Population Moenumberproportionyes90 percent margin of error for pct_of_school_age_population, derived from the two aggregated count margins (each built under the Census zero-estimate rule) with the Census proportion-MOE formula, falling back to the ratio-form (addition) formula whenever the radicand is not positive; a margin above 1.0 is NULLed. When a geography's entire school-age population sits in one school_type (share exactly 1.0; 418 tract rows in 2020-2024), the numerator and denominator margins coincide, the proportion formula degenerates, and the served margin is the ratio-form fallback sqrt(2) * MOE / N (246 rows, median 0.61) or NULL where that exceeds 1.0 (172 rows). The same geography's sibling rows (0 of N children) serve the complement's margin - the largest zero-cell margin over N, typically 14 / N (median 0.054) - which bounds the same quantity more tightly because MOE(p) = MOE(1 - p); prefer the sibling rows' margins for those geographies. Never the headline metric.
Full description
90 percent margin of error for pct_of_school_age_population, derived from the two aggregated count margins (each built under the Census zero-estimate rule) with the Census proportion-MOE formula, falling back to the ratio-form (addition) formula whenever the radicand is not positive; a margin above 1.0 is NULLed. When a geography's entire school-age population sits in one school_type (share exactly 1.0; 418 tract rows in 2020-2024), the numerator and denominator margins coincide, the proportion formula degenerates, and the served margin is the ratio-form fallback sqrt(2) * MOE / N (246 rows, median 0.61) or NULL where that exceeds 1.0 (172 rows). The same geography's sibling rows (0 of N children) serve the complement's margin - the largest zero-cell margin over N, typically 14 / N (median 0.054) - which bounds the same quantity more tightly because MOE(p) = MOE(1 - p); prefer the sibling rows' margins for those geographies. Never the headline metric.
num_in_school_typeNumber in School TypeintegercountyesChildren aged 3-17 in this school_type (sum of the pinned B14003 sex x age cells) - the share's numerator.
Full description
Children aged 3-17 in this school_type (sum of the pinned B14003 sex x age cells) - the share's numerator.
num_in_school_type_moeNumber in School Type Moenumbercountyes90 percent margin of error for num_in_school_type: sqrt-sum-of-squares over the member cells' published margins under the Census zero-estimate rule (of the member cells whose estimate is zero, only the largest margin enters the sum).
Full description
90 percent margin of error for num_in_school_type: sqrt-sum-of-squares over the member cells' published margins under the Census zero-estimate rule (of the member cells whose estimate is zero, only the largest margin enters the sum).
num_school_age_populationNumber School Age PopulationintegercountyesChildren aged 3-17 (sum of all 24 pinned B14003 cells; the table publishes no 3-17 total) - the share's denominator, repeated on each school_type row.
Full description
Children aged 3-17 (sum of all 24 pinned B14003 cells; the table publishes no 3-17 total) - the share's denominator, repeated on each school_type row.
num_school_age_population_moeNumber School Age Population Moenumbercountyes90 percent margin of error for num_school_age_population: sqrt-sum-of-squares approximation over all 24 member cells under the Census zero-estimate rule (of the member cells whose estimate is zero, only the largest margin enters the sum).
Full description
90 percent margin of error for num_school_age_population: sqrt-sum-of-squares approximation over all 24 member cells under the Census zero-estimate rule (of the member cells whose estimate is zero, only the largest margin enters the sum).

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
school_typecategoricalnot_enrolledprivatepublicmulti-value, enum-enforced, pick one
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/school_enrollment"

counties data for 2024

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

Filtered to school_type = not_enrolled for 2024

curl "https://georgiacivicdata.org/api/v1/census/school_enrollment?year=2024&school_type=not_enrolled"

One district (code 660), 2024

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

One county (FIPS 13121), 2024

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

Download 2024 as CSV

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

Notes & limitations

NULL handling

  • Suppressed cells (too few students to report) are NULL, never zero.
  • Zero is a real, reported value.

Limitations

Universe: SCHOOL-AGE children (ages 3-17) by deliberate scoping - the source table covers population 3+, where adult non-enrollment would dominate the not_enrolled share. The public/private split is the Census school-type split (nursery through college), not K-12 enrollment specifically: a 16-year-old enrolled in college counts in public or private per their institution. not_enrolled is concentrated among 3-4-year-olds (pre-K non-attendance). The school-age denominator and its margin are derived by aggregating the 24 source cells (the table publishes no 3-17 total), so the count margins are sqrt-sum-of-squares approximations applying the Census zero-estimate rule (of the member cells whose estimate is zero, only the largest margin enters the sum); share margins use the Census proportion-MOE formula (ratio-form fallback when the radicand is not positive), and a margin above 1.0 is NULLed. 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.