---
title: "Search Schools"
method: GET
path: "/admin/schools/search"
tags: ["Admin - Schools"]
---

# Search Schools

`GET /admin/schools/search`

Schools ranked by resemblance to `q`, one light page at a time.

Built for the admin MCP (EXC-859): the unpaginated list is larger than
what an LLM client keeps from a tool result. An empty `q` pages through
every school by name.

## Query parameters

- `q` string — Free text: name, email domain, UAI or city
- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- SchoolSearchPage
  - `total` integer, required
  - `offset` integer, required
  - `limit` integer, required
  - `has_more` boolean, required
  - `items` SchoolSearchItem[], required
    - `id` string, required
    - `name` string, required
    - `city` string, nullable
    - `uai` string, nullable
    - `email_domain` string, nullable
    - `contract_type` 'free' | 'pilot' | 'paid' | 'expired', required
    - `current_contract_status` 'active' | 'upcoming' | 'ended', nullable
    - `teacher_count` integer

## Other responses

- `422` — Validation Error

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-09-23** `b73d9bd491c3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/admin/schools/search/get.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc.dev/excellence-ai/apis/excellence-learning/revisions/d367d251945b?raw)
