---
title: "Search and rank language schools"
method: POST
path: "/school-finder/search"
tags: ["schools"]
---

# Search and rank language schools

`POST /school-finder/search`

## Request

- Base URL: `https://www.extralingo.com/api/v1`
- URL: `https://www.extralingo.com/api/v1/school-finder/search`
- Auth: none declared

Typo-tolerant search over approved language schools, ranked by match against the supplied preferences. Free-text `query` plus optional structured filters. Each hit includes a school URL on Extralingo for booking/details.

## Request body

- SchoolSearchRequest: All fields optional. Omitted fields are not constrained.
  - `query` string: Free-text query (school name, keywords).
  - `locale` 'en' | 'nl' | 'da' | 'sv'
  - `language` string: Language slug, e.g. "spanish".
  - `country` string: Country name as returned by /filters.
  - `cities` string[]: City names as returned by /filters.
  - `course_type_titles` string[]
  - `accommodation_type_titles` string[]
  - `atmosphere_tags` string[]
  - `accreditations` string[]
  - `class_size` string
  - `school_size` string
  - `age` string
  - `facets` string[]: Facet fields to return distributions for.
  - `limit` integer
  - `offset` integer

## Response `200`

Ranked search results

- SchoolSearchResponse
  - `success` boolean
  - `data` object
    - `hits` object[]: Ranked schools. Each hit includes school_id, title, location, Extralingo URL, and indicative pricing. Prices are not a booking quote.
    - `totalHits` integer
    - `query` string
    - `facetDistribution` object

---

[API](https://skmtc.dev/extralingo/apis/extralingo-public-api.md) · [All operations](https://skmtc.dev/extralingo/apis/extralingo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/extralingo/apis/extralingo-public-api/revisions/e30a5e5bf44c?raw)
