Land prices per m² (GET /market/land-prices) — 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

Registered transactions

Land prices per m²

GET/market/land-prices

Median registered price per m² of land plots, per quarter, for a city, for each of up to 20 neighborhoods (neighborhood_id), or for every neighborhood in the city in one call (group_by=neighborhood without neighborhood_id, over at most 12 quarters), with quarter-on-quarter and year-on-year change. From the Ministry of Justice's registered sale deals (open data): price_source is registered.

MOJ classes each deal by land use (residential = سكني, commercial = تجاري, …), not by what stands on the plot. Residential-class deals are overwhelmingly vacant land: 97.5% carry no building type and the median plot is about 500 m². Read prices per m² as land prices, not home prices. This endpoint serves that land reading on purpose. land_use picks residential (default) or commercial plots.

The city-wide median is taken over whatever plots sold that quarter, so it moves with the mix of neighborhoods as well as with prices; for trend, per-neighborhood series are the like-for-like reading. Changes are only computed between complete quarters that both clear min_sample_size. Riyadh city. Since 2024 the Real Estate Registry has registered a growing share of Riyadh-city sales (a majority by late 2025), and all of them from 19 May 2026. The Ministry of Justice open data we use covers notary-registered deals only, so Riyadh-city figures from 2024 are notary deals only and may under-represent districts that moved to the Registry early; Riyadh city is excluded after 18 May 2026. So Riyadh deals dated after 2026-05-18 are not served, coverage.notary_only_from_quarter is 2024-Q1, and figures from then on carry coverage_flag: "notary_only". Other Riyadh-region towns are unaffected.

Free on every plan and costs no units: this is Saudi government open data, served at no charge under the ODC Attribution License. It is not Kite Data, and our API terms put no restriction on reusing or redistributing it; keep the notice with it wherever you show or pass it on.

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

    attribution
    Authentication
    Send a data key (dk_live_… or dk_test_…) as a Bearer token.
    Scope
    reference
    Cost
    FreeFree on every plan: Saudi open data, served at no charge

    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.

    neighborhood_idqueryinteger[]

    Up to 20 neighborhood ids from GET /cities/{city}/neighborhoods, comma-separated. Deals Kite could not place in a neighborhood are left out when this is set.

    group_byquerystring

    city: one city-wide series. neighborhood: one series per neighborhood, for the ids in neighborhood_id, or for every neighborhood with registered deals in the city when it is omitted. Defaults to neighborhood when neighborhood_id is given, city otherwise.

    One of: city, neighborhood

    land_usequerystring

    residential (سكني, the default) or commercial (تجاري) plots.

    One of: residential, commercial

    quarter_fromquerystring

    First quarter, YYYY-Qn.

    quarter_toquerystring

    Last quarter, YYYY-Qn. Defaults to the city's latest published quarter.

    min_sample_sizequeryinteger

    Cells with fewer deals than this report their count but no prices. At least 5.

    Response

    The data field is an object with these fields.

    NameTypeDescription
    filtersrequiredobject
    assetrequiredstring

    What the prices are for: land plots, not built homes.

    One of: land

    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

    windowrequiredobject
    min_sample_sizerequiredinteger
    seriesrequiredobject[]
    coveragerequiredobject
    attributionrequiredobject

    Licence notice for the Ministry of Justice open data in this response. The rows and figures are government open data under the Saudi Open Data License (an adaptation of ODC-By), not Kite Data: you may reuse and redistribute them, including commercially, provided this attribution travels with them.

    Example request

    curl
    curl "https://api.kite.sa/v1/market/land-prices?city=riyadh" \
      -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.landPrices({ city: "riyadh" });
    Python (kite-sa)
    from kite_sa import Kite
    
    kite = Kite()  # reads KITE_API_KEY
    result = kite.market.land_prices(city="riyadh")

    Open in the interactive reference

    Related endpoints

    • Search registered deals GET /transactions
    • Registered deal statistics GET /market/transactions

    Guides

    • Quickstart
    • Coverage and freshness
    • Limits and quotas
    • Errors
    • Terms in practice