Skip to content
← All datasets

School Attendance Zone Block Groups

Which 2020 census block groups each Georgia school attendance zone covers at each grade, with population, household and land-area shares.

Year coverage
2027–2027
Updated
as zones change
Version
1.0.0
Schema hash
58174ac48ecb

Detail levels available

School · default

Overview

A crosswalk between Georgia public school attendance zones (the school_attendance_zones geometry topic) and 2020 census block groups. One row per school, grade and block group its zone covers at that grade. Weights are 2020 Census P.L. 94-171 block populations and households (occupied housing units), assigned to zones block by block exactly as in the tract crosswalk (school_attendance_zone_tracts): a block goes to the zone holding its interior point, or is split by area where a zone line or an unzoned gap crosses it. Use pct_of_block_group_households to roll block-group household data (ACS household tables) up to a zone, pct_of_block_group_population for person data. year is the school year the zones are in effect for (2027 = 2026-27). Zones are not official enrollment determinations; each zone's source and accuracy are on the zones topic.

Row grain: One row per year, district_code, school_code, grade_level, block_group_geoid.

Key metric

pct_of_block_group_population — Percent of Block Group 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——noSchool year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The weights are 2020 census counts.
Full description
School year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The weights are 2020 census counts.
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 at this grade on the zones topic: elementary, middle or high. It follows from the grade and the school, so pin grade_level first.
3 allowed values
  • elementary
  • middle
  • high
grade_levelGrade Levelstring——noGrade (k, 01-12).
Full description
The grade the row's shares hold for (k, 01-12; pre-K is not zoned).
13 allowed values
  • k
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
block_group_geoidBlock Group GEOIDstring——no12-digit 2020 census block group GEOID (FK to the block_groups dimension), as ACS 5-year tables publish.
Full description
12-digit 2020 census block group GEOID (FK to the block_groups dimension), as ACS 5-year tables publish.

Joins block_groups; adds its label columns.

num_populationNumber Populationintegercount—yes2020 census population of the block group living in the zone (whole persons).
Full description
2020 census population of the block group living in the zone (whole persons).
num_block_group_populationNumber Block Group Populationintegercount—yesThe block group's 2020 census population (all of its blocks), repeated on each of its rows: never add it across rows.
Full description
The block group's 2020 census population (all of its blocks), repeated on each of its rows: never add it across rows.
pct_of_block_group_populationPercent of Block Group Populationnumberproportion—yesShare of the block group's 2020 population living in this zone.
Full description
Share of the block group's 2020 population living in this zone at this grade (num_population / num_block_group_population).
pct_of_block_group_areaPercent of Block Group Areanumberproportion—yesShare of the block group's 2020 land area in this zone.
Full description
Share of the block group's 2020 land area in this zone.
pct_of_zone_populationPercent of Zone Populationnumberproportion—yesShare of the zone's 2020 population at this grade living in this block group (adds to 1 over the zone's block groups).
Full description
Share of the zone's 2020 population at this grade living in this block group (adds to 1 over the zone's block groups).
num_householdsNumber Householdsintegercount—yes2020 census households (occupied housing units, P.L. 94-171 H1_002N) of the block group in the zone, apportioned with the same block weights as the population (whole households).
Full description
2020 census households (occupied housing units, P.L. 94-171 H1_002N) of the block group in the zone, apportioned with the same block weights as the population (whole households).
num_block_group_householdsNumber Block Group Householdsintegercount—yesThe block group's 2020 households (all of its blocks; equals the block_groups dimension's households_2020), repeated on each of its rows: never add it across rows.
Full description
The block group's 2020 households (all of its blocks; equals the block_groups dimension's households_2020), repeated on each of its rows: never add it across rows.
pct_of_block_group_householdsPercent of Block Group Householdsnumberproportion—yesShare of the block group's 2020 households in this zone at this grade (num_households / num_block_group_households): the weight for household data.
Full description
Share of the block group's 2020 households in this zone at this grade (num_households / num_block_group_households): the weight for household data.
is_largest_zone_for_block_groupIs Largest Zone for Block Groupboolean——yesTrue for the zone holding the most of the block group's 2020 population at this grade (ties: more land, then the lower district and school code): one row per block group and grade.
Full description
True for the zone holding the most of the block group's 2020 population at this grade (ties: more land, then the lower district and school code): one row per block group and grade.

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
block_group_geoidforeign_keyany valuemulti-value
zone_levelcategoricalelementarymiddlehighmulti-value, enum-enforced
grade_levelcategorical
13 allowed values
  • k
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
multi-value, enum-enforced, pick one
is_largest_zone_for_block_groupcategoricalany 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_attendance_zone_block_groups"

schools data for 2027

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

Filtered to zone_level = elementary for 2027

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

Download 2027 as CSV

curl "https://georgiacivicdata.org/api/v1/education/school_attendance_zone_block_groups?year=2027&format=csv"

Notes & limitations

NULL handling

  • Zero is a real, reported value.

Limitations

Covers the districts whose zones were collected: a block group in a district without zones at a grade, or in a gap, has no rows there or rows whose shares add to less than 1 (gaps include withheld new schools' areas, placement areas and closed schools' former areas; see the zones topic's coverage table). Some zones predate an adopted boundary change (currency_status stale_known_changes on the zones topic) and carry that error here. Weights are the 2020 census: the share of a block group in each zone is frozen at April 2020, so it misses growth and new housing since. A block that a zone line or a gap's edge crosses is split by area, assuming its people and households are spread evenly over its land. Household counts carry the Census's disclosure-avoidance noise (a block can show households and no people), which shrinks as blocks are summed. A block counts toward the district whose current TIGER/Line outline holds its interior point. The same blocks and rules as the tract crosswalk (school_attendance_zone_tracts): summed to tracts, the people match it exactly. Rows are school rows.