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
2020–2024
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_population — Percent 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
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.
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 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.

school_typeSchool Typestring——noEnrollment 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 Populationnumberproportion—yesShare 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's school-age population estimate is 0: no school-age child was sampled there, which is not proof there are none (and not suppression).
pct_of_school_age_population_moePercent of School Age Population Moenumberproportion—yes90 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. A share of exactly 0 or 1 (0 or 100 percent) instead takes the Census's own model margin for such estimates, 1.645 * sqrt(R * (1 - R) * AW / N) with R = min(2.3 * AW / N, 0.5), N the school-age population and AW Georgia's average survey weight for the vintage (18 in 2020, 19 in 2021-2024): the proportion formula would give a 0 percent share only the zero count's margin over N, about half the width the Census publishes, and degenerates at 1.0, where the numerator and denominator margins coincide. So when a geography's entire school-age population sits in one school_type (share exactly 1.0; 418 tract rows in 2020-2024), that row and its sibling rows (0 of N children) serve the same margin, as MOE(p) = MOE(1 - p) requires. 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. A share of exactly 0 or 1 (0 or 100 percent) instead takes the Census's own model margin for such estimates, 1.645 * sqrt(R * (1 - R) * AW / N) with R = min(2.3 * AW / N, 0.5), N the school-age population and AW Georgia's average survey weight for the vintage (18 in 2020, 19 in 2021-2024): the proportion formula would give a 0 percent share only the zero count's margin over N, about half the width the Census publishes, and degenerates at 1.0, where the numerator and denominator margins coincide. So when a geography's entire school-age population sits in one school_type (share exactly 1.0; 418 tract rows in 2020-2024), that row and its sibling rows (0 of N children) serve the same margin, as MOE(p) = MOE(1 - p) requires. Never the headline metric.
num_in_school_typeNumber in School Typeintegercount—yesChildren 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 Moenumbercount—yes90 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 Populationintegercount—yesChildren 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 Moenumbercount—yes90 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 (values the source withholds, usually for a group too small 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; a 0 or 100 percent share takes the Census's own model margin for such estimates), 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.