Schools API
Official US K-12 school directory as JSON, no API key: 102,274 public and 22,510 private schools from NCES (2023-24) with NCES id, district, address, lat/lon, locale, grades, enrollment, teachers and student-teacher ratio. Search by name, city, state or ZIP, schools near a point or ZIP within N miles, one school by NCES id, all schools of a district with totals, bulk 50 queries. Usable from AI agents via MCP.
Example request
curl -X POST https://radarbg.com/v1/us-schools-api \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"mode": "search", "name": "Lincoln", "state": "CA", "radiusMiles": 5}'
Answer: {"ok": true, "count": N, "items": [...], "usage": {...}}. Failed calls are not counted.
Inputs
| Field | Type | Description |
|---|---|---|
mode | string | search = filter by name/city/state/ZIP/district; near = schools within radiusMiles of lat/lon or a ZIP; school = one or more schools by NCES id; district = all schools of a district (LEAID or name) plus a summary row; bulk = up to 50 querie |
name | string | Part of the school name, case-insensitive (search mode), e.g. Lincoln. |
city | string | City name (search mode), e.g. Austin. |
state | string | 2-letter code or full name, e.g. CA or California. |
zip | string | 5-digit ZIP. search: schools in this ZIP; near: centre of the radius. |
lat | number | near mode: centre latitude (use with lon instead of zip). |
lon | number | near mode: centre longitude. |
radiusMiles | number | near mode: 0.1-50 miles, default 5. Rows are sorted by distanceMiles. |
district | string | District NCES LEAID (7 digits) or district name (search and district modes), e.g. 0622710 (Los Angeles Unified). |
ncesIds | array | school mode: up to 50 NCES school ids (12-digit public NCESSCH or 8-character private PPIN). |
schoolType | string | public (default), private or all. |
level | array | Public schools only: elementary, middle, high, secondary, prekindergarten, other. |
queries | array | bulk mode: up to 50 objects, each one an input of another mode, e.g. {"mode":"near","zip":"10001","radiusMiles":1}. A failing query returns an error row; the others still answer. |
limit | integer | 1-5000, default 100. |
Price
Included in every plan: 100 calls a month free, then from €9 a month for 3,000 calls across all APIs.