ExploreMapCompareBlogSign in

Build with SchoolScope

California school data for AI agents, real estate platforms, and EdTech apps. Scores, growth trajectories, equity gaps, per-pupil spending, and feeder patterns— with the provenance attached to every answer.

MCP server — live now

The fastest way in. Point any MCP client at mcp.schoolscope.co — Streamable HTTP, OAuth 2.1 with dynamic client registration. No API key to request, nothing to wait for.

{ "mcpServers": { "schoolscope": { "url": "https://mcp.schoolscope.co" } } }

Seven tools, deliberately — an agent choosing from a short list with clear arguments misroutes less than one scanning a long menu. Every response carries a provenance envelope with the data year, the source agency, and the cross-year comparability rules, so an agent can cite it without guessing how current it is.

  • find_schools
  • school_profile
  • similar_schools
  • compare_schools
  • feeder_path
  • district_profile
  • my_watchlist

California data live now; national coverage comes later. The REST API below is still in development — the MCP server is the shipped surface.

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.

Response shapes below are illustrative — values reflect 2024–25 CDE CAASPP data.

GET/api/v1/schools/:slugFull school profile: score, archetype, spending, demographics
{ "slug": "la-canada-elementary-4633", "name": "La Cañada Elementary", "scope_score": 88, "state_percentile": 99, "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-elementary-6323", "name": "Canyon Charter Elementary", "scope_score": 82, "archetype": "finisher", "city": "Santa Monica" } ], "total": 12 }
GET/api/v1/schools/nearbyBy lat/lng + radius
{ "schools": [ { "slug": "clover-avenue-elementary-6521", "name": "Clover Avenue 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: up to 7 weighted dimensions with state comparisons
{ "scope_score": 88, "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-high-4611", "level": "high", "scope_score": 93 } ], "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.

Code examples are illustrative — la-canada-elementary-4633, 88 Scope Score, 99th percentile (2024–25 CDE data).

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); // 88 console.log(school.archetype.label); // "High Ceiling" console.log(school.score_factors); // scored dimensions (6 for elem/mid, 7 for high) // 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) # 88 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
7-factor score breakdowns (high school) / 6-factor (elem/mid)
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

🎯

Multi-dimensional scoring

Scope Score built from six to seven dimensions depending on level: exceeded/met split, growth, absenteeism, suspension, ELPAC — with graduation and college readiness added for high schools. 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.