---
title: "Annual tuition of Dubai private schools as published by KHDA (by grade, area, curriculum, inspection rating), with the school bus fee by zone and the uniform list where known. Grade labels are kept as published (Year ≠ Grade). With `near` (an area or community, e.g. \"Jumeirah Park\") it keeps schools within `radius_km` in a straight line, nearest first. Tuition only; confirm with the school."
method: GET
path: "/api/v1/schools"
---

# Annual tuition of Dubai private schools as published by KHDA (by grade, area, curriculum, inspection rating), with the school bus fee by zone and the uniform list where known. Grade labels are kept as published (Year ≠ Grade). With \`near\` (an area or community, e.g. "Jumeirah Park") it keeps schools within \`radius_km\` in a straight line, nearest first. Tuition only; confirm with the school.

`GET /api/v1/schools`

## Request

- Base URL: `https://prices.brainy.ae`
- URL: `https://prices.brainy.ae/api/v1/schools`
- Auth: none declared

## Query parameters

- `school` string
- `area` string
- `curriculum` string
- `grade` string: Grade label as published, e.g. "FS 1", "KG 2", "YEAR 3", "GRADE 10".
- `max_fee_aed` number: Budget: keep schools with a published fee ≤ this (for the grade, if given).
- `near` string: Area or community to measure distance from, e.g. "Jumeirah Park", "Dubai Marina". Straight-line distance from its centre.
- `radius_km` 5 | 10 | 15 | 20 | 30: With near: keep schools within this straight-line distance. Default 10.
- `limit` integer

## Response `200`

Success. All money is AED; unknown values are null.

- object
  - `currency` 'AED', required
  - `observed_at` string, nullable, required
  - `stale` boolean, required
  - `source` object, required
    - `name` string, required
    - `url` string, nullable, required
  - `attribution` string, required
  - `open_in_browser` string, uri, required
  - `academic_year` string, nullable, required
  - `historical` boolean, required
  - `total_schools` integer, required
  - `count` integer, required
  - `schools` object[], required
    - `id` string, required
    - `name` string, required
    - `area` string, nullable, required
    - `curricula` string[], required
    - `rating` string, nullable, required
    - `academic_year` string, nullable, required
    - `fees` object[], required
      - `grade` string, required
      - `annual_fee_aed` number, required
    - `fee_range_aed` object, nullable, required
      - `min_aed` number, required
      - `max_aed` number, required
    - `grade_fee_aed` number, nullable, required: AED. Unknown amounts are null, never 0.
    - `website` string, nullable, required
    - `source_url` string, nullable, required
    - `uniforms_url` string, uri, nullable, required
    - `bus` object, nullable, required
      - `operator` string, required
      - `academic_year` string, required
      - `zones` object[], required
        - `zone` integer, required
        - `annual_aed` number, required
        - `areas` string[], required
      - `source_url` string, required
    - `distance_km` number, nullable, required
    - `location_approximate` boolean, nullable, required
    - `open_in_browser` string, uri, required
  - `grades_available` string[], required
  - `near` object, nullable, required
    - `name` string, required
    - `approximate` boolean, required
    - `radius_km` integer, required
  - `near_suggestions` string[], required
  - `unlocated` integer, nullable, required
  - `within_30_km` integer, nullable, required
  - `note` string, required
  - `fee_policy` object, nullable, required
    - `note` string, nullable, required
    - `rules` object[], required
      - `id` string, required
      - `academic_year` string, required
      - `kind` 'cap' | 'no-increase', required
      - `cap_pct` number, nullable, required
      - `announced` string, required
      - `publisher` string, required
      - `url` string, required
      - `quote` string, required
      - `summary` string, required

## Other responses

- `400`: Request failed.
- `404`: Request failed.
- `405`: Request failed.
- `413`: Request failed.
- `422`: Request failed.
- `429`: Rate limit exceeded. Retry-After gives seconds to wait.
- `503`: Request failed.

---

[API](https://skmtc.dev/brainy/apis/dubai-cost-of-living-brainy-prices.md) · [All operations](https://skmtc.dev/brainy/apis/dubai-cost-of-living-brainy-prices/llms.txt) · [OpenAPI document](https://skmtc.dev/brainy/apis/dubai-cost-of-living-brainy-prices/revisions/a548a841d58c?raw)
