Skip to content
← All datasets

Enrollment by Grade Level (Fall and Spring)

Public school student headcounts by grade level (PK-12) from the October (fall) and March (spring) FTE counts, per school, district, and state, 2010-2026.

Year coverage
2010–2026
Updated
annual
Version
1.1.0
Schema hash
78fcbea4c8f1

Detail levels available

StateDistrictSchool · default

Overview

Georgia Insights (GaDOE) FTE Enrollment by Grade Level(PK-12) — the FTE headcount of Georgia public school students broken out by grade level (pre-kindergarten, kindergarten, grades 1-12, plus an 'all' total row) for every school, district, and the state. GaDOE counts enrollment twice per school year: the October Cycle 1 (fall) snapshot and the March Cycle 3 (spring) snapshot; both are preserved as distinct rows via the enrollment_period column. Both the fall and spring halves span fiscal years 2010-2026. Grade is the row axis and lives in grade_level — there are no demographic breakouts in this topic.

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

Key metric

num_students — Number Students (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——noFiscal year of the FTE count (school year ending in this year; e.g. 2026 = the 2025-2026 school year). Sourced from the bronze filename, cross-checked against each file's preamble. Both the fall (October) and spring (March) snapshots are present for every year 2010-2026.
Full description
Fiscal year of the FTE count (school year ending in this year; e.g. 2026 = the 2025-2026 school year). Sourced from the bronze filename, cross-checked against each file's preamble. Both the fall (October) and spring (March) snapshots are present for every year 2010-2026.
district_codeDistrict Codestring——yes3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charters and specialty schools, including the pseudo-districts 7991893/7991894/7991895 for the three state schools (Atlanta Area School for the Deaf, Georgia Academy for the Blind, Georgia School for the Deaf) in spring 2011-2019 and fall 2012-2019, and together under district 799 in other years, so a trend for the state schools must add the three pseudo-districts together in 2011-2019. NULL for state-level rows. FK to districts dimension.
Full description
3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charters and specialty schools, including the pseudo-districts 7991893/7991894/7991895 for the three state schools (Atlanta Area School for the Deaf, Georgia Academy for the Blind, Georgia School for the Deaf) in spring 2011-2019 and fall 2012-2019, and together under district 799 in other years, so a trend for the state schools must add the three pseudo-districts together in 2011-2019. NULL for state-level rows. FK to districts dimension.

Joins districts; adds its label columns.

school_codeSchool Codestring——yes4-digit GOSA school code, extracted from the bronze `SChool Name` (`NNNN-Name`) prefix. NULL for state- and district-level rows. FK to schools dimension (composite key with district_code).
Full description
4-digit GOSA school code, extracted from the bronze `SChool Name` (`NNNN-Name`) prefix. NULL for state- and district-level rows. FK to schools dimension (composite key with district_code).

Joins schools; adds its label columns.

enrollment_periodEnrollment Periodstring——noEnrollment snapshot within the school year: fall (October) or spring (March); never sum across them.
Full description
Enrollment-count snapshot within the school year: 'fall' (GaDOE October Cycle 1 count, first Tuesday of October) or 'spring' (March Cycle 3 count, taken in the first week of March - the first Thursday in most years, per the bronze preamble captions). Both snapshots exist for nearly every entity — queries wanting one headline count per year must filter to a single period, never sum across them.
2 allowed values
  • fall
  • spring
grade_levelGrade Levelstring——noGrade: `pk`, `k`, `01`-`12`, or `all` for the entity total (sum of the 14 grade rows).
Full description
Canonical grade code per data-cleaning-standards section 16: 'pk' (pre-kindergarten), 'k' (kindergarten), zero-padded '01'..'12', and 'all' for the entity's pre-aggregated total row (the bronze `Total` column, which equals the sum of the 14 grade rows bit-exact), so leave 'all' out when adding grades together.
15 allowed values
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • all — total / aggregate
  • k
  • pk
num_studentsNumber Studentsintegercount—noFTE student headcount for the grade cell; never suppressed, so a 0 means the grade is not offered.
Full description
FTE student headcount for the (year, geography, period, grade) cell. Raw count, not scaled. Never NULL — this source publishes no suppression markers — and a 0 is a real reported value (the grade is not offered at the entity). For grade_level='all', equals the sum of the entity's 14 grade rows in that period.

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—
detaildetaildistrictsschoolsstatesenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
enrollment_periodcategoricalfallspringmulti-value, enum-enforced, pick one
grade_levelcategorical
15 allowed values
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • all
  • k
  • pk
multi-value, enum-enforced
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/enrollment_by_grade"

schools data for 2026

curl "https://georgiacivicdata.org/api/v1/education/enrollment_by_grade?year=2026"

Filtered to enrollment_period = fall for 2026

curl "https://georgiacivicdata.org/api/v1/education/enrollment_by_grade?year=2026&enrollment_period=fall"

One district (code 601), 2026

curl "https://georgiacivicdata.org/api/v1/education/enrollment_by_grade?district_code=601&year=2026&detail=districts"

Download 2026 as CSV

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

Notes & limitations

NULL handling

  • Zero is a real, reported value.

Limitations

This source has no suppression; a 0 is a real reported value. State rows have NULL district_code and school_code. District rows have NULL school_code.