ExploreMapCompareBlogSign in
Coming Soon

Build with SchoolScope

The school data API for real estate platforms, EdTech apps, and AI agents. Multi-dimensional scores, growth trajectories, per-pupil spending, and feeder patterns— one call. Typed SDK clients for TypeScript and Python.

California data live now. Full national coverage coming soon.

API pricing

Start free. Upgrade when you scale.

Free
$0
Prototypes, side projects, exploration
  • School directory + Scope Score + archetype
  • 1,000 calls/day
  • Autocomplete endpoint
  • Typed SDK clients (TS + Python)
  • Attribution required
Starter
$49/mo
Individual agents, small apps
  • Everything in Free
  • 5,000 API calls/month
  • No attribution required
Enterprise
$499/mo
National platforms, data aggregators
  • Everything in Pro
  • Boundary data (GeoJSON)
  • Historical trends (3+ years)
  • Quarterly bulk CSV + JSON downloads
  • Custom webhooks
  • 99.9% SLA + dedicated support
  • 100,000 calls/month
AI Agent
$29/mo
AI-native apps, chatbots, LLM integrations
  • Pro-tier data access
  • Structured JSON for LLM consumption
  • Tool-calling schemas (GPT/Claude/Gemini)
  • OpenAPI spec
  • 10,000 calls/month

Endpoints

Type-safe RPC with provided clients. Click any endpoint to see its response shape.

GET/api/v1/schools/:slugFull school profile: score, archetype, spending, demographics
{ "slug": "la-canada-elementary-4633", "name": "La Cañada Elementary", "scope_score": 90.1, "state_percentile": 96, "archetype": { "id": "finisher", "label": "High Ceiling" }, "score_factors": [ { "name": "Exceeded Standard", "value": 63.2, "weight": 0.30, "state_avg": 21.8 }, { "name": "Met + Exceeded", "value": 88.1, "weight": 0.20, "state_avg": 47.6 } ], "spending": { "per_pupil": 12648, "instruction_pct": 62.1 }, "demographics": { "enrollment": 485, "student_teacher_ratio": 22.1 } }
GET/api/v1/schools/searchSearch by name, city, ZIP, or district
{ "results": [ { "slug": "canyon-charter-4521", "name": "Canyon Charter Elementary", "scope_score": 82.4, "archetype": "finisher", "city": "Santa Monica" } ], "total": 12 }
GET/api/v1/schools/nearbyBy lat/lng + radius
{ "schools": [ { "slug": "clover-ave-elementary-1234", "name": "Clover Ave Elementary", "scope_score": 71.3, "distance_mi": 0.4, "archetype": "accelerator" } ], "center": { "lat": 34.0522, "lng": -118.2437 } }
GET/api/v1/schools/:slug/scoresScore Factors: 6 weighted dimensions with state comparisons
{ "scope_score": 90.1, "factors": [ { "name": "Exceeded Standard", "value": 63.2, "weight": 0.30, "state_avg": 21.8, "impact": "high" }, { "name": "Growth (G3\u2192G5)", "value": 1.2, "weight": 0.15, "state_avg": -0.3, "impact": "moderate" }, { "name": "Chronic Absenteeism", "value": 4.1, "weight": 0.15, "state_avg": 26.7, "impact": "high" } ] }
GET/api/v1/schools/:slug/feederK→12 feeder trajectory
{ "school": "la-canada-elementary-4633", "feeds_to": [ { "slug": "la-canada-middle-4634", "level": "middle", "scope_score": 87.2 } ], "feeds_from": [] }
GET/api/v1/context-packPre-assembled neighborhood data for a location
{ "location": "La Cañada Flintridge, CA", "elementary": [ // top schools by Scope Score ], "middle": [ ... ], "high": [ ... ], "district": { "name": "La Cañada USD", "avg_score": 84.6 } }
GET/api/v1/autocompleteType-ahead for schools + districts
{ "suggestions": [ { "type": "school", "name": "La Cañada Elementary", "slug": "la-canada-elementary-4633" }, { "type": "district", "name": "La Cañada USD" } ] }

Quick start

Install the typed client. Full autocomplete, zero guessing.

npm install @schoolscope/sdk
import { SchoolScope } from "@schoolscope/sdk"; const ss = new SchoolScope({ apiKey: "sk_live_..." }); // Fully typed — autocomplete on every field const school = await ss.schools.getBySlug("la-canada-elementary-4633"); console.log(school.scope_score); // 90.1 console.log(school.archetype.label); // "High Ceiling" console.log(school.score_factors); // 6 weighted dimensions // Search with filters const results = await ss.schools.search({ q: "Santa Monica", level: "elementary" }); // Nearby schools by coordinates const nearby = await ss.schools.nearby({ lat: 34.05, lng: -118.24, radius: 3 });
pip install schoolscope
from schoolscope import SchoolScope ss = SchoolScope(api_key="sk_live_...") # Fully typed with dataclass responses school = ss.schools.get_by_slug("la-canada-elementary-4633") print(school.scope_score) # 90.1 print(school.archetype.label) # "High Ceiling" # Search results = ss.schools.search(q="Santa Monica", level="elementary") # Nearby nearby = ss.schools.nearby(lat=34.05, lng=-118.24, radius=3)
curl -H "Authorization: Bearer sk_live_..." \ "https://api.schoolscope.co/v1/schools/la-canada-elementary-4633"

Raw HTTP works too — but the typed clients give you autocomplete, validation, and zero boilerplate.

Bulk data downloads

Enterprise tier includes quarterly bulk exports — every school, every score, downloadable as CSV or JSON.

What’s included

State-by-state data packages, updated quarterly after CDE releases.

All schools with Scope Scores
Archetype classifications
6-factor score breakdowns
Per-pupil spending + breakdown
Demographics + enrollment
Feeder pattern relationships
Growth trajectories
Chronic absenteeism + suspension

Formats: CSV + JSON. Available per-state. Enterprise tier ($499/mo) required.

Why SchoolScope

🎯

6-dimension scoring

Scope Score + exceeded/met split + growth + absenteeism + suspension + spending efficiency. Not a single number.

🤖

AI-native

OpenAPI spec, tool-calling schemas for GPT/Claude/Gemini, structured responses. Built for the agent era.

🛡️

No conflicts of interest

We don’t sell to schools. Rankings can’t be bought. Your users can trust the data.

📦

Context Packs

Pre-assembled, renderable data for any location. One call returns a complete neighborhood picture for property listings.

How we compare

SchoolScopeGreatSchoolsSchoolDiggerNiche
Entry priceFree (1K calls/day)$52.50/mo$19.90/moSales only
Score depthScore + 7 factors + archetype3 rating bands*Rank + percentileA–F letter grades
AI / agent supportMCP + tool schemasllms.txt
Spending dataPer-pupil + breakdownEnterprise license$189/mo tierUnknown
Feeder patternsK→12 trajectory
Growth trajectoryG3→G5 change
Typed SDK clientsTS + Python
Bulk exportsCSV + JSON quarterlyEnterprise license$34.5K/yr (AWS)Sales only
CoverageCalifornia (national soon)NationwideNationwideNationwide

*GreatSchools API returns rating bands (below avg / avg / above avg). Actual 1–10 ratings require an enterprise data license.

Get early access

Sign up to get notified when the API launches.