SchoolScout API
Schools

Search schools

Search and filter schools. Same access control pattern as districts. **Free (0 credits).**

GET
/schools

Search and filter schools. Same access control pattern as districts. Free (0 credits).

AuthorizationBearer <token>

API key (sk_live_... prefix). Generate keys in the UI under Settings > API Keys, then send it as Authorization: Bearer sk_live_...

In: header

Query Parameters

district_id?string

Filter by parent district UUID

state?string

State abbreviation

search?string

Text search on school name

status?string

Scouting status: pending, in_progress, completed, error

student_count_min?integer

Minimum student enrollment

student_count_max?integer

Maximum student enrollment

student_teacher_ratio_min?number

Minimum student-teacher ratio

student_teacher_ratio_max?number

Maximum student-teacher ratio

school_type?string

NCES school type classification

grade_levels?string

Comma-separated: pre_k, elementary, middle, high

locale_type?string

City, Suburb, Town, Rural

county?string

County name (partial match)

list_id?string

Filter by list membership

district_list_ids?string

Comma-separated list UUIDs for parent district filtering

vendor_ids?string

Comma-separated vendor UUIDs

vendor_category?string

sis, lms, assessment, communication, hr, finance, security, sso, devices, other

rfp_status?string

open, closed, won, lost, no_bid

pain_point_category?string

staffing, budget, infrastructure, security, integration, compliance, enrollment, other

has_pain_points?string

true to filter schools with pain points

funding_source?string

esser, erate, title_i, bond, grant, state, other

has_funding?string

true to filter schools with funding

has_expiring_contracts?string

true to filter schools with contracts expiring in 6 months

unlocked_only?string

true to show only entities your org has unlocked

order_by?string

Sort field

Default"name"
order_ascending?string

Sort direction

Default"true"
limit?integer

Results per page

Default50
Rangevalue <= 200
offset?integer

Pagination offset

Default0

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/schools"
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "district_id": "550e8400-e29b-41d4-a716-446655440000",
      "nces_id": "string",
      "name": "string",
      "state": "string",
      "website_url": "string",
      "student_count": -9007199254740991,
      "grade_levels": "string",
      "state_school_id": "string",
      "school_type": "string",
      "locale_type": "string",
      "nces_data_year": "string",
      "teachers_fte": 0,
      "student_teacher_ratio": 0,
      "physical_address": "string",
      "physical_city": "string",
      "physical_state": "string",
      "physical_zip": "string",
      "mailing_address": "string",
      "mailing_city": "string",
      "mailing_state": "string",
      "mailing_zip": "string",
      "phone": "string",
      "county": "string",
      "latitude": 0,
      "longitude": 0,
      "ai_summary": "string",
      "executive_summary": "string",
      "timeline": [
        null
      ],
      "summary_generated_at": "string",
      "key_facts": {
        "property1": null,
        "property2": null
      },
      "ai_policy_summary": "string",
      "technology_level": "string",
      "ai_initiatives": [
        null
      ],
      "edtech_products": [
        null
      ],
      "source": "string",
      "source_url": "string",
      "status": "pending",
      "website_mapped_at": "string",
      "content_fetched_at": "string",
      "content_extracted_at": "string",
      "last_analysis_job_id": "550e8400-e29b-41d4-a716-446655440000",
      "crawled_at": "string",
      "error_message": "string",
      "retry_count": -9007199254740991,
      "notes": "string",
      "last_updated_at": "string",
      "created_at": "string",
      "_access": {
        "is_unlocked": true,
        "is_scouting": true,
        "unlocked_at": "string",
        "credits_spent": 0,
        "unlock_cost": 0
      }
    }
  ],
  "pagination": {
    "total": -9007199254740991,
    "limit": -9007199254740991,
    "offset": -9007199254740991,
    "has_more": true
  }
}
{
  "error": "string",
  "message": "string",
  "statusCode": -9007199254740991
}