Skip to content
← All datasets

School Zone Population

How many people, and how many 5-17-year-olds, live in each Georgia public school's attendance zone, with density and land area.

Year coverage
2027–2027
Updated
as zones change and each December (new ACS 5-year release)
Version
1.1.0
Schema hash
11aac75726c6

Detail levels available

School · default

Overview

Population of each Georgia public school's attendance zone, all ages and ages 5-17: estimated residents (the key metric) and residents per square mile of land, each with a 90 percent margin of error, and the zone's land area, from the American Community Survey 2020-2024 5-year estimates (table B01001, sex by age). A zone that is its whole school district carries the Census's own figures for that district, and one that is its whole county the county's (estimate_source). Every other zone is built from block-group estimates placed in the zone by the school_attendance_zone_block_groups crosswalk's 2020 population shares. Land area is the zone's 2020 census land, built the same way for every zone. Two rows per school and zone level, one per age_bracket. year is the school year the zones are in effect for (2027 = 2026-27).

Row grain: One row per year, district_code, school_code, zone_level, age_bracket.

Key metric

num_population — Population (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——noSchool year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The population is the ACS 2020-2024 5-year estimate.
Full description
School year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The population is the ACS 2020-2024 5-year estimate.
district_codeDistrict Codestring——noGOSA district code (FK to the districts dimension).
Full description
GOSA district code (FK to the districts dimension).

Joins districts; adds its label columns.

school_codeSchool Codestring——no4-digit GOSA school code (composite FK to the schools dimension with district_code): the zone's school.
Full description
4-digit GOSA school code (composite FK to the schools dimension with district_code): the zone's school.

Joins schools; adds its label columns.

zone_levelZone Levelstring——noElementary, middle or high zone.
Full description
The level of the school's zone: elementary, middle or high, as the crosswalk gives it. Most schools have one; a school with zones at two or three levels (a K-8, a 6-12, a K-12 school) has rows for each, and its zones can differ in area. A school drawing a single grade at two levels is counted at the lower one, as on the crosswalk.
3 allowed values
  • elementary
  • middle
  • high
age_bracketAge Bracketstring——noAll ages, or ages 5 to 17.
Full description
all: every resident (B01001_001, the total row); 5_17: residents aged 5 to 17, the sum of the male and female 5 to 9, 10 to 14 and 15 to 17 cells. The same values as the census population_by_age topic.
2 allowed values
  • all — total / aggregate
  • 5_17
num_populationPopulationintegercount—yesEstimated residents of the zone in the age bracket.
Full description
Estimated residents of the zone in the age bracket (ACS B01001): for a whole-district or whole-county zone, the Census's published estimate for the district or county; otherwise each block group's estimate times the share of its 2020 population living in the zone, added over the zone's block groups and rounded to whole persons.
num_population_moePopulation Moeintegercount—yes90 percent margin of error of num_population: the published margin for a whole district or county (for 5_17, the root sum of squares of the six cells' margins, Census zero-estimate rule); otherwise the root sum of squares of the block groups' weighted margins (Census zero-cell rule). Never the headline metric.
Full description
90 percent margin of error of num_population: the published margin for a whole district or county (for 5_17, the root sum of squares of the six cells' margins, Census zero-estimate rule); otherwise the root sum of squares of the block groups' weighted margins (Census zero-cell rule). Never the headline metric.
population_per_sq_miPopulation per Square Milenumberrate_per_area—yesResidents in the age bracket per square mile of land: num_population / land_area_sq_mi, to 0.1. Never average it across zones: pool as SUM(num_population) / SUM(land_area_sq_mi).
Full description
Residents in the age bracket per square mile of land: num_population / land_area_sq_mi, to 0.1. Never average it across zones: pool as SUM(num_population) / SUM(land_area_sq_mi).
population_per_sq_mi_moePopulation per Square Mile Moenumberrate_per_area—yes90 percent margin of error of population_per_sq_mi: num_population_moe / land_area_sq_mi, to 0.1 (land area treated as exact). A margin under 0.05 shows as 0.0 (a large zone whose published margin is small), not an exact density.
Full description
90 percent margin of error of population_per_sq_mi: num_population_moe / land_area_sq_mi, to 0.1 (land area treated as exact). A margin under 0.05 shows as 0.0 (a large zone whose published margin is small), not an exact density.
land_area_sq_miLand Area (Square Miles)numberarea—noThe zone's land area in square miles, to 0.001: each 2020 block group's census land area times the share of that land in the zone (the crosswalk's pct_of_block_group_area, from 2020 blocks), added over the zone's block groups. Water is excluded. The same on both age_bracket rows of a zone and never withheld.
Full description
The zone's land area in square miles, to 0.001: each 2020 block group's census land area times the share of that land in the zone (the crosswalk's pct_of_block_group_area, from 2020 blocks), added over the zone's block groups. Water is excluded. The same on both age_bracket rows of a zone and never withheld.
pct_level_overcountedShare of the Level's Population Counted Twicenumberproportion—noShare of the district's zones at this level's summed people counted more than once.
Full description
Share of the summed population of all the district's zones at this zone_level that the sum counts more than once, to 0.0001: 0 where the level's zones do not share homes (most levels, and every level with one zone). Where a level's grades are split between schools (a K-2 primary and a 3-5 elementary drawing the same homes), each school's zone counts those homes again: two such zones over the same area give 0.5. From the 2020 weights the roll-up uses: in each block group, the people the level's zones hold together (grade-averaged) beyond the most they hold at any one grade, summed over block groups by their 2020 people; a home in one school's zone for some grades and another's for the rest (a phased rezoning) is held once and adds nothing. One value per district and zone_level, on every zone and age_bracket row of it. A pooled figure over the level's zones (SUM(num_population), SUM(land_area_sq_mi), or the pooled density) double-counts where it is above 0.
estimate_sourceEstimate Sourcestring——noWhere the row's population comes from.
Full description
school_district: the zone is its whole school district (the district's only zone at every grade the school serves at this level), so the row carries the Census's own figures for the district; county: the zone is its whole county but not a whole district (a zone adding an area outside the district's unified outline, as a military base's high school area), so the county's own figures; block_groups: built from the zone's block groups (every other zone). Land area is built from block groups for every zone.
3 allowed values
  • school_district
  • county
  • block_groups
zone_differs_by_gradeZone Differs by Gradeboolean——noTrue when the school's zone at this level is not the same area at every grade it serves (a phased-in rezoning, or a neighbouring school serving only some grades): its block groups or their 2020 population differ between grades, or its land does by at least 0.001 square mile. The row then describes the zone averaged over those grades. False for most zones.
Full description
True when the school's zone at this level is not the same area at every grade it serves (a phased-in rezoning, or a neighbouring school serving only some grades): its block groups or their 2020 population differ between grades, or its land does by at least 0.001 square mile. The row then describes the zone averaged over those grades. False for most zones.

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—
detaildetailschoolsenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
zone_levelcategoricalelementarymiddlehighmulti-value, enum-enforced, pick one
age_bracketcategoricalall5_17multi-value, enum-enforced
estimate_sourcecategoricalschool_districtcountyblock_groupsmulti-value, enum-enforced
zone_differs_by_gradecategoricalany valuemulti-value
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced
school_leveldimension_attributeelementarymiddlehighk12othermulti-value, enum-enforced
localedimension_attributecitysuburbtownruralmulti-value, enum-enforced

Example requests

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

All rows (first page), schools level

curl "https://georgiacivicdata.org/api/v1/education/school_zone_population"

schools data for 2027

curl "https://georgiacivicdata.org/api/v1/education/school_zone_population?year=2027"

Filtered to zone_level = elementary for 2027

curl "https://georgiacivicdata.org/api/v1/education/school_zone_population?year=2027&zone_level=elementary"

Download 2027 as CSV

curl "https://georgiacivicdata.org/api/v1/education/school_zone_population?year=2027&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

Describes the people living in each zone, not the students enrolled at its school: a zone is the default assignment, and students can attend elsewhere by transfer or at charter, magnet and other choice schools. Block-group zones assume the people of each census block group are spread inside it as they were in the 2020 census: each block group's ACS population is placed in the zone in proportion to the share of its 2020 population living there, so a zone holding part of a block group gets that share of its people, whatever has been built since. A zone that is its whole school district, or its whole county, carries the Census's own published figures for it instead (estimate_source); the district figures are for the district's boundary in the ACS release. Population is the ACS 2020-2024 5-year estimate, an average over those five years, not a count at one date, while the zones are those in effect for the 2026-27 school year; a later school year will pair its zones with the newest ACS release, and consecutive releases share most of their sample, so a difference between years is not annual change. Margins of error (90%) of block-group zones use the Census approximation formulas and do not include the error of placing block-group people in zones; the Census publishes no margin for a controlled district or county total, so those all-ages rows have none (295 zones). Density's margin treats land area as exact. Land area is the 2020 census land (no water) of the zone's blocks, the same method for every zone. A population whose margin of error exceeds the estimate is withheld (NULL, with its margin and density: no rows for all ages and no rows for ages 5-17); others remain very uncertain (no rows for all ages and 7 rows for ages 5-17 with a margin over half the estimate): read every figure with its margin. Coverage is the crosswalk's: districts whose zones were collected; a zone's gaps and stale boundaries carry through (see the school_attendance_zones topic). A row averages the zone over its grades where the zone differs by grade (zone_differs_by_grade). Zones are not enrollment: the 5-17 population is the zone's school-age residents, in public, private or home school or none, not the school's students.