SchoolScout API

Data Model

Understanding the SchoolScout entity model

Entity Hierarchy

SchoolScout's data model is centered on three entity types:

District
├── School
└── Contact (staff / administrators)

Districts

The core entity. A school district contains:

  • Demographics: student count, school count, grade span, locale type
  • Financials: revenue, expenditures, per-student spending (from NCES data)
  • Staff metrics: student-teacher ratio, total staff, FTE teachers
  • Location context: addresses, county, coordinates
  • Intelligence (gated): AI summary, buying signals, vendor stack, strategic priorities, timeline events

Schools

Individual schools within a district. Include:

  • Demographics: student count, grade levels, school type
  • NCES data: standardized identifiers, locale, staff metrics
  • Location context: addresses, coordinates
  • Intelligence (gated): AI summary, vendor stack, timeline

Contacts

Staff and administrators at districts or schools:

  • Contact profile: name, title, role context
  • PII (gated): email, phone, LinkedIn URL
  • Enrichment: profile summary and qualification score
  • Email generation: AI-generated outreach emails

Intelligence Data

Intelligence data is collected through SchoolScout's analysis pipeline and includes:

Buying Signals

  • Contracts: active vendor contracts, renewal dates, dissatisfaction indicators
  • Pain Points: challenges identified from public sources (staffing, budget, infrastructure, etc.)
  • Funding: available funding sources (ESSER, E-Rate, Title I, bonds, grants)

Vendor Stack

Known technology vendors used by a district or school, categorized by type (SIS, LMS, assessment, communication, etc.).

RFPs

Active procurement opportunities with deadlines, estimated values, and priority levels.

Timeline Events

Chronological events from board meetings, press releases, and other public sources.

Processing Pipeline

Entities go through a multi-stage processing pipeline:

StatusMeaning
pendingDiscovered but not yet analyzed
in_progressCurrently being analyzed
completedAnalysis complete, intelligence data available
errorAnalysis failed (can be retried)

Important: Pipeline status is different from "scouted" status. An entity can be completed (intelligence exists) but not scouted (your org hasn't paid credits to see it).

Access Control

Non-internal organizations see an _access field on entities:

{
  "_access": {
    "is_unlocked": false,
    "unlock_cost": 6
  }
}

When is_unlocked is false, intelligence fields (AI summaries, buying signals, vendor stacks) are redacted from the response.

Parent-First Gating (Contacts)

Contacts follow a two-layer unlock model:

  1. Parent unlock required first — A contact's parent district or school must be unlocked (6 credits) before the contact is visible in search results or accessible by ID. Contacts at locked parents are summarized in a _locked_parent_contacts field on search responses, showing how many additional contacts would become available.
  2. Contact unlock for PII — Once the parent is unlocked, the contact appears in results with name and title visible, but PII fields (email, phone, LinkedIn URL) are redacted until the contact itself is unlocked (2 credits).
District (locked)     → contacts hidden entirely
District (unlocked)   → contacts visible (name, title)
  └── Contact (locked)   → PII redacted
  └── Contact (unlocked) → full PII available

If you attempt to access a contact whose parent is still locked, the API returns 403 with error code PARENT_ENTITY_LOCKED.

On this page