Market summary (GET /market/summary) — Kite API
KitePlatform
Use casesDocsGuidesPricing
Browse endpoints
All endpoints

Reference data

  • List cities
  • List neighborhoods
  • List city directions
  • List enumerated values
  • Get this key's limits
  • What the API covers

Listings

  • Search listings
  • Count listings
  • Get listings by id
  • Get a listing
  • Get a listing's price history

Market data

  • Market summary
  • Price distribution
  • Area distribution
  • New supply
  • Vacancy indicator
  • Prices by neighborhood
  • Commercial rent per m² by neighborhood

Official data

  • Registered rents (REGA)
  • Kite Property Index

Analytics

  • Get comparable listings
  • Get a listing's market position
  • Get a listing's nearby asking-price band
  • Find below-market listings
  • Find below-market listings (old path)
  • Get gross rental yield
  • Get price trends
  • Compare neighborhoods

Registered transactions

  • Search registered deals
  • Registered deal statistics
  • Land prices per m²

Off-plan projects

  • Search projects
  • Get a project
  • List a project's units
  • Search project units
  • List developers

Exports

  • Create an export
  • List exports
  • Get an export

Administration

  • Get your organization
  • List data keys
  • Create a data key
  • Revoke a key
  • List projects
  • Daily usage
  • List members and invitations
  • List audit events
  • List request logs
  • Create a webhook endpoint
  • List webhook endpoints
  • Delete a webhook endpoint
  • List deliveries
  • Replay a delivery

Interactive reference

All endpoints

Reference data

  • List cities
  • List neighborhoods
  • List city directions
  • List enumerated values
  • Get this key's limits
  • What the API covers

Listings

  • Search listings
  • Count listings
  • Get listings by id
  • Get a listing
  • Get a listing's price history

Market data

  • Market summary
  • Price distribution
  • Area distribution
  • New supply
  • Vacancy indicator
  • Prices by neighborhood
  • Commercial rent per m² by neighborhood

Official data

  • Registered rents (REGA)
  • Kite Property Index

Analytics

  • Get comparable listings
  • Get a listing's market position
  • Get a listing's nearby asking-price band
  • Find below-market listings
  • Find below-market listings (old path)
  • Get gross rental yield
  • Get price trends
  • Compare neighborhoods

Registered transactions

  • Search registered deals
  • Registered deal statistics
  • Land prices per m²

Off-plan projects

  • Search projects
  • Get a project
  • List a project's units
  • Search project units
  • List developers

Exports

  • Create an export
  • List exports
  • Get an export

Administration

  • Get your organization
  • List data keys
  • Create a data key
  • Revoke a key
  • List projects
  • Daily usage
  • List members and invitations
  • List audit events
  • List request logs
  • Create a webhook endpoint
  • List webhook endpoints
  • Delete a webhook endpoint
  • List deliveries
  • Replay a delivery

Interactive reference

Market data

Market summary

GET/market/summary

Headline numbers for a city (or neighborhoods): listing count, median and quartile price, median area and price per m², how recently listings were updated, and breakdowns by property type, top neighborhoods by volume, and source.

Computed over the market sample: active, deduplicated listings updated in the last 30 days (updated_at), after the same outlier filter kite.sa uses (per-tier price fences from the median and MAD of log price, bedroom and area sanity checks, and a floor at 30% of the neighborhood median). Prices are asking prices in SAR: yearly rent for listing_type=rent (monthly, weekly and daily postings are converted to a yearly amount), total price for listing_type=sale. Check sample_size before relying on a number; small samples are noisy.

Authentication
Send a data key (dk_live_… or dk_test_…) as a Bearer token.
Scope
market
Cost
50 units per call

Parameters

NameTypeDescription
cityrequiredquerystring

City slug from GET /cities. A town inside a covered region is accepted and resolved to its city (dammam, khobar, dhahran, jubail and qatif to eastern_province; buraydah and unaizah to qassim; hofuf to al_ahsa), as are Arabic city names. The response's filters.city and the X-Resolved-City header show the slug used.

listing_typerequiredquerystring

rent (prices are yearly rent) or sale (prices are total price).

One of: rent, sale

listing_categoryquerystring

Defaults to residential when property_type is omitted, so dwellings and commercial stock are never mixed into one median. With a property_type, omit it to include both categories of that type.

One of: residential, commercial

property_typequerystring

One property type, see GET /enums.

One of: apartment, villa, floor, duplex, office, shop, warehouse, land, building

bedsqueryinteger

Exact number of bedrooms (0 = studio).

neighborhood_idqueryinteger[]

Limit to one or more neighborhoods (comma-separated ids from GET /cities/{city}/neighborhoods). Unknown ids are a 404.

Response

The data field is an object with these fields.

NameTypeDescription
filtersrequiredobject

The filters the numbers were computed for, after defaults.

price_basisrequiredstring

What the *_sar price fields mean: yearly_rent (SAR per year) for rentals, sale_price (total SAR) for sales.

One of: yearly_rent, sale_price

price_sourcerequiredstring

Where the prices come from: asking = advertised asking prices from listings; registered = registered transactions or rent contracts. Asking prices typically sit above what is finally agreed.

One of: asking, registered

sample_sizerequiredinteger

Listings in the sample.

median_price_sarrequiredinteger | null

Median price.

p25_price_sarrequiredinteger | null

25th percentile price.

p75_price_sarrequired

Example request

curl
curl "https://api.kite.sa/v1/market/summary?city=riyadh&listing_type=rent" \
  -H "Authorization: Bearer $KITE_API_KEY"
JavaScript (@kite-sa/sdk)
import { Kite } from "@kite-sa/sdk";

const kite = new Kite(); // reads KITE_API_KEY
const result = await kite.market.summary({ city: "riyadh", listing_type: "rent" });
Python (kite-sa)
from kite_sa import Kite

kite = Kite()  # reads KITE_API_KEY
result = kite.market.summary(city="riyadh", listing_type="rent")

Open in the interactive reference

Related endpoints

  • Price distribution GET /market/price-distribution
  • Area distribution GET /market/area-distribution
  • New supply GET /market/supply
  • Vacancy indicator GET /market/vacancy
  • Prices by neighborhood GET /market/neighborhoods
  • Commercial rent per m² by neighborhood GET /market/commercial-rents

Guides

  • Quickstart
  • Coverage and freshness
  • Searching and filtering
  • Limits and quotas
  • Errors
Kite API

Saudi real estate data for developers.

Product
  • API reference
  • Data coverage
  • Pricing
  • Valuation checks
  • Changelog
  • Status
Company
  • kite.sa
  • Contact
  • Security
Legal
  • Terms
  • Subprocessors
© Kite
integer | null

75th percentile price.

median_area_sqmrequiredinteger | null

Median area in m², over listings that state an area.

median_price_per_sqm_sarrequiredinteger | null

Median of each listing's price divided by its area.

area_sample_sizerequiredinteger

Listings that state an area (the base of the area medians).

updated_last_3_daysrequiredinteger
updated_last_7_daysrequiredinteger
by_property_typerequiredobject[]
top_neighborhoodsrequiredobject[]

Up to 10 neighborhoods with the most listings in the sample.

sourcesrequiredobject[]

Listings in the sample per source (after deduplication).

windowrequiredobject

The freshness window every market number uses.