Schools & districts
On this page
YOUR_KEY. Get a free key to run them; it takes about a minute and needs no card.Get a free keyFor any point in the United States, /v1/schools returns the public school districts that serve it and, grade by grade, the assigned public school with its attendance zone. It covers every US public school district and public school, and you may store the results.
curl "https://api.mapiron.com/v1/schools?lat=41.8789&lon=-87.6359&key=YOUR_KEY"
{
"coverage": "zone",
"districts": [{ "id": "1709930", "name": "City of Chicago School District 299", "type": "unified", "grades": "PK-12" }],
"assigned": [
{ "grades": "KG-08",
"school": { "id": "170993000…", "name": "…", "address": { … }, "lat": 41.87, "lon": -87.63, "distance_m": 900 },
"zone": { "method": "district_gis", "confidence": 0.97, "school_year": "2025-2026", "source": "https://data.cityofchicago.org/d/x72b-38qv" } }
],
"unassigned": [],
"notice": "Attendance boundaries change. Verify enrolment with the school district before relying on an assignment."
}
Parameters
| Parameter | Meaning |
|---|---|
lat, lon | The home or listing, in decimal degrees (required). Geocode an address first if you only have the address. |
grade | Only this grade: PK, K or 1 to 12. Leave it out for every grade. |
Reading the answer
coverage:zonewhen every grade has an attendance zone;partialwhen some do;district_onlywhen only the district is known;noneoutside any US school district.assigned: one entry per run of grades with the same school, with the zone'smethod,confidence,school_yearandsource. Where the source lists more than one school for the area (a shared attendance area), the entry also hasshared_with, naming each of those schools with its zone. Ask the district which applies.unassigned: grades whose zone we haven't mapped yet, with the district's nearest regular public schools for those grades. These are not assignments.
Zones
Each zone carries its method, a confidence score, the school_year it applies to and a source you can check. Charter and fully virtual schools are never shown as assigned.
Coverage (November 2026)
- Every US public school district (13,368) and public school (101,110), from NCES and the U.S. Census Bureau.
- Attendance zones in 12,712 districts in every state: 68,382 of 82,889 regular public schools have one, and 10,167 districts are covered for every school.
- Every zone states the school year it applies to. Older zones are replaced as districts publish current maps, and we add districts every month.
- Current boundary maps published by districts, cities and counties cover 41,056 schools in 1,275 districts, including:
| Metro | District | Zones | School year |
|---|---|---|---|
| Chicago, IL | Chicago Public Schools and 16 suburban districts | 480 | 2025-26 for Chicago; suburban maps as each district publishes them |
| New York, NY | New York City public schools (elementary, middle and zoned high schools) | 811 | 2024-25 |
The data file
Licensed data comes as monthly releases: the whole country, any one state or territory, or only what changed since the previous release. Every file is GeoJSON with one feature per line, gzip-compressed, in WGS84 (EPSG:4326), and loads straight into PostGIS, BigQuery, Snowflake or GDAL (ogr2ogr). After each download your dashboard shows the file's SHA-256 so you can check your copy.
Download a free sample (Delaware) Every district, public school and attendance zone in one state, for evaluation.
| layer | Geometry | Properties |
|---|---|---|
about | none | The first line: licensee, licence, release, file, terms and source notices. |
district | MultiPolygon | leaid (NCES district id), name, kind (unified, elementary or secondary), state_fips, grades, school_year |
school | Point | ncessch (NCES school id), leaid, name, street, city, state, zip, grades, level, charter, school_year |
zone | MultiPolygon, or none when the zone is the whole district | zone_id (stable from release to release, unique to your licence), ncessch, leaid, grades, grade_lo and grade_hi (-1 is PK, 0 is KG), covers (area or district), basis, confidence (0 to 1), as_of, school_year |
Staying current: load a full file once, then apply each month's changes file. properties.change is added, changed or removed; added and changed records are complete, and removed records carry only their id. Upsert by leaid, ncessch and zone_id.
Pipeline downloads (enterprise)
Enterprise licences can also download from a server. Once we turn it on for your licence, create a token under Data licences in your dashboard and list the networks your pipeline downloads from. A token works only from those networks, stops when the licence ends, and is shown once.
TOKEN=psd_… # keep it in your secrets manager
# releases we keep (newest first) and their files
curl -s -H "Authorization: Bearer $TOKEN" https://api.mapiron.com/v1/licence/releases
# one file: US, a state's postal code, or changes; X-Download-Id names the download
curl -s -D headers.txt -o IL.geojsonl.gz -H "Authorization: Bearer $TOKEN" https://api.mapiron.com/v1/licence/releases/RELEASE/IL
# the SHA-256 of the bytes we sent, to check your copy
curl -s -H "Authorization: Bearer $TOKEN" https://api.mapiron.com/v1/licence/downloads/DOWNLOAD_ID
Up to 150 files a day and 2 at a time per licence. Revoke a token from the dashboard at any time; we email you when one is created.
Coverage by state
| State | Regular public schools | With an attendance zone | From a current district map |
|---|---|---|---|
| Alabama | 1,325 | 1,023 (77%) | 261 |
| Alaska | 424 | 290 (68%) | 173 |
| Arizona | 1,409 | 1,150 (82%) | 519 |
| Arkansas | 960 | 821 (86%) | 635 |
| California | 7,595 | 6,668 (88%) | 1,953 |
| Colorado | 1,503 | 1,223 (81%) | 877 |
| Connecticut | 956 | 739 (77%) | 350 |
| Delaware | 179 | 165 (92%) | 143 |
| District of Columbia | 113 | 100 (88%) | 94 |
| Florida | 2,849 | 2,401 (84%) | 1,857 |
| Georgia | 2,184 | 1,894 (87%) | 843 |
| Hawaii | 256 | 254 (99%) | 241 |
| Idaho | 614 | 532 (87%) | 321 |
| Illinois | 3,716 | 3,375 (91%) | 2,373 |
| Indiana | 1,731 | 1,465 (85%) | 683 |
| Iowa | 1,281 | 1,190 (93%) | 928 |
| Kansas | 1,269 | 1,167 (92%) | 770 |
| Kentucky | 1,209 | 1,017 (84%) | 439 |
| Louisiana | 1,115 | 819 (73%) | 120 |
| Maine | 551 | 453 (82%) | 343 |
| Maryland | 1,261 | 1,211 (96%) | 1,194 |
| Massachusetts | 1,664 | 1,068 (64%) | 682 |
| Michigan | 2,563 | 2,081 (81%) | 1,331 |
| Minnesota | 1,534 | 1,327 (87%) | 1,285 |
| Mississippi | 846 | 682 (81%) | 291 |
| Missouri | 2,193 | 1,897 (87%) | 1,366 |
| Montana | 836 | 767 (92%) | 636 |
| Nebraska | 1,019 | 893 (88%) | 574 |
| Nevada | 572 | 497 (87%) | 408 |
| New Hampshire | 459 | 383 (83%) | 292 |
| New Jersey | 2,291 | 1,818 (79%) | 992 |
| New Mexico | 724 | 620 (86%) | 447 |
| New York | 4,256 | 2,867 (67%) | 2,147 |
| North Carolina | 2,355 | 1,934 (82%) | 891 |
| North Dakota | 484 | 425 (88%) | 309 |
| Ohio | 3,056 | 2,665 (87%) | 1,945 |
| Oklahoma | 1,699 | 1,631 (96%) | 1,313 |
| Oregon | 1,112 | 1,013 (91%) | 932 |
| Pennsylvania | 2,658 | 2,386 (90%) | 1,388 |
| Puerto Rico | 801 | 0 (0%) | 0 |
| Rhode Island | 257 | 161 (63%) | 80 |
| South Carolina | 1,103 | 829 (75%) | 273 |
| South Dakota | 649 | 540 (83%) | 362 |
| Tennessee | 1,697 | 1,251 (74%) | 590 |
| Texas | 7,479 | 6,157 (82%) | 3,405 |
| Utah | 833 | 754 (91%) | 522 |
| Vermont | 288 | 133 (46%) | 115 |
| Virginia | 1,835 | 1,663 (91%) | 1,051 |
| Washington | 2,057 | 1,738 (84%) | 1,026 |
| West Virginia | 623 | 435 (70%) | 91 |
| Wisconsin | 1,869 | 1,590 (85%) | 1,086 |
| Wyoming | 308 | 220 (71%) | 109 |
The rest have their district and nearest schools. Zones are added every month. Boston assigns students from address-based choice lists rather than attendance zones, so its schools have none by design.
Fair housing
MapIron returns boundaries and school facts only: no ratings, test scores or demographic data. Show the district's own sources next to an assignment and the notice that boundaries change.
How to get it
- API access is included in platform and enterprise contracts.
- Data licence: the whole dataset in your own database (districts, schools and every published zone, released monthly with a changes file; see the data file), licensed by state ($5,000 a year for California, Texas, Florida or New York, $3,000 for the next 18 largest states, $1,500 for the rest; buy online) or for the whole country by quote, under the School Data Licence terms. A free 50-record test kit with the schema and a PostGIS/Snowflake join guide is on the same page. Use it in your own products and keep what you downloaded after the licence ends; reselling the dataset needs a separate agreement.
Buying means you agree to the School Data Licence terms. Card or US bank account through Stripe. After payment, sign in to your dashboard with the same email to download; downloads need two-step sign-in and each link works once; enterprise licences can also download from a pipeline. For an invoice (net 30), write to sales@mapiron.com with your company name and billing contact. API access comes with a platform contract.