WA School Enrollment - District Trends & Demographics
Pricing
$1.00 / 1,000 wa school enrollment records
WA School Enrollment - District Trends & Demographics
Washington K-12 public-school enrollment (243k records, WA OSPI Report Card, 12 school years 2014-15 to current): headcounts and demographics by school, district, county and grade. Track a district's enrollment trend year over year, or compare districts statewide.
Pricing
$1.00 / 1,000 wa school enrollment records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
WA School Enrollment - District Trends & Demographics (wa-school-enrollment)
Pull Washington K-12 public-school enrollment - 243,225 records across 12 school years (2014-15 through 2025-26), from the WA Office of Superintendent of Public Instruction (OSPI) Report Card, free public open data. For every school, district, county and the state: the headcount and demographic composition of students, year by year.
This is the enrollment side of WA's school system - the numbers behind where families are (and aren't) moving. It answers the question "is this school district growing or shrinking, and who is enrolling there?"
Built for real-estate developers and brokers sizing an area, education startups building a Washington district/school list, municipal and policy researchers, and market-intelligence users who need a school district's trajectory as a demand signal.
Looking for what those graduates do next? WA Graduate Outcomes (wa-graduate-outcomes) is the same WA K-12 school-quality family - a district or high school's graduate results: median earnings after high school, post-secondary completion, and remedial course rates, from the same OSPI source and with the same district/school codes. Enrollment here tells you who is (and isn't) coming; graduate outcomes tells you how their graduates do.
The core tool: a district's enrollment trend ("migration early warning")
Give a district, get its year-over-year K-12 enrollment for the last 12 school years - a clean trend with yoyChange and yoyPct on every row. Watch an area fill up (or empty out):
input { "districtCode": "31002" } // Everett School Districtschoolyear=2024-25 allStudents=20,592 yoyChange=+155 yoyPct=+0.76%schoolyear=2025-26 allStudents=20,777 yoyChange=+185 yoyPct=+0.90%
The COVID shock is plainly visible in the source data (e.g. WA districts drop sharply in 2020-21, then climb back) - exactly the signal a migration-early-warning tool should surface. Track it overall, or by a demographic (subgroup=lowIncome, englishLearners, hispanic, ...) to watch the composition of a district change over time.
What each record has
| Field | Meaning |
|---|---|
schoolyear | 2014-15 2025-26 (current year is added each fall) |
organizationLevel | State / County / District / School |
districtCode / districtName | WA district code + name (e.g. 31002 / Everett) |
schoolCode / schoolName | School, where a school-level row |
gradeLevel | All Grades, Kindergarten, 9th Grade, (All Grades = the official yearly total) |
allStudents | Total headcount |
subgroup / subgroupStudents / subgroupPct | The demographic watched and its count / share (race groups, low income, EL, special ed, homeless, foster care, migrant, military parents) |
yoyChange / yoyPct | Trend mode only: change vs. the prior school year |
dataAsOf | When OSPI last refreshed this row |
Typical questions it answers
- Is a district growing? -
districtCode(ordistrictName), no year -> the 12-year trend. - Which WA districts are biggest? -
aggregate=true,groupBy=district-> top districts by headcount (latest year). - An area's poverty trend -
districtCode+subgroup=lowIncome-> low-income count and share across years. - A single school's size -
schoolName=Jefferson Elementary+schoolyear=2024-25. - Kindergarten demand in a district -
districtCode+schoolyear+gradeLevel=Kindergarten. - District list in one county -
county=King,aggregate=true.
Inputs (all optional)
| Input | What it does |
|---|---|
districtCode | Exact district code. With no schoolyear this returns the 12-year trend (the core tool) |
districtName | District name, substring (e.g. "Everett", "Seattle") |
county | County substring (scopes a list / comparison) |
schoolName | School name substring |
schoolyear | One school year (e.g. 2024-25); omit / latest = current year |
gradeLevel | Kindergarten, 9th Grade, default All Grades |
subgroup | Demographic to track: allStudents (default), lowIncome, englishLearners, specialEd, homeless, fosterCare, migrant, militaryParents, hispanic, asian, black, white |
aggregate | Compare districts/counties/schools (one row each) instead of individual records |
groupBy | district (default) / county / school |
maxResults | Cap records pushed (default 200) |
Empty input returns a safe snapshot: the top school districts by enrollment, current school year (used by Apify's daily quality test too).
Low cost
From $0.001 per record - with a per-run charge cap so a mistake can't run up a big bill.
Twelve school years of enrollment are pre-aggregated by the state into wide rows that double-count if summed naively (OSPI ships an "All Grades" total alongside the per-grade rows, so adding grades yourself counts every student twice). We read the state's authoritative totals and the complementary demographic pairs (low-income / not low-income) so a district or county trend is never inflated. You query clean annual totals and honest trends; the wide-row double-count traps and paired demographics stay on our side.
Data source & freshness
- Source: data.wa.gov - OSPI "Report Card Enrollment from 2014-15 to Current Year" (
rxjk-6ieq, Socrata SODA API, free public, no login). Public data - the same figures OSPI's Report Card portal shows. - Coverage: ~324 district-level entities and ~2,400 schools with an "All Grades" yearly total, every county. District-level "All Grades" rows: 3,892 (~324 districts x 12 school years).
- Update cadence: OSPI publishes each school year's enrollment in the fall; the merge table used here reaches the current year (2025-26 as of Sept 2026).