Price distribution (GET /market/price-distribution) — 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

Market data

Price distribution

GET/market/price-distribution

Histogram and percentiles of price. Buckets are equal-width between range_sar.min (the lowest outlier fence, rounded down) and range_sar.max (kite.sa's price-slider maximum for the property type); listings outside that range are reported in below_range_count / above_range_count and still count toward the median and percentiles.

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, , and to ; and to ; to ), as are Arabic city names. The response's and the header show the slug used.

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
  • 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

    dhahran
    jubail
    qatif
    eastern_province
    buraydah
    unaizah
    qassim
    hofuf
    al_ahsa
    filters.city
    X-Resolved-City
    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.

    bucket_countqueryinteger

    Number of equal-width histogram buckets.

    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
    median_price_sarrequiredinteger | null
    mean_price_sarrequiredinteger | null
    percentiles_sarrequiredobject

    Price percentiles in SAR.

    range_sarrequiredobject
    bucketsrequiredobject[]
    below_range_countrequiredinteger
    above_range_countrequiredinteger
    windowrequiredobject

    The freshness window every market number uses.

    Example request

    curl
    curl "https://api.kite.sa/v1/market/price-distribution?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.priceDistribution({ city: "riyadh", listing_type: "rent" });
    Python (kite-sa)
    from kite_sa import Kite
    
    kite = Kite()  # reads KITE_API_KEY
    result = kite.market.price_distribution(city="riyadh", listing_type="rent")

    Open in the interactive reference

    Related endpoints

    • Market summary GET /market/summary
    • 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