Get a listing's nearby asking-price band (GET /listings/{id}/price-band) — 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

    Analytics

    Get a listing's nearby asking-price band

    GET/listings/{id}/price-band

    The 25th percentile, median and 75th percentile of asking prices for comparable units near this listing, in SAR and per m², where this listing's price sits against them, and the cohort and stability behind the numbers. Use it as a fair-price check on an ask; it compares asking prices and is not a valuation.

    The band comes from Kite's published nearby asking-price comparison (methodology nearby-asking-v5): the same snapshot the kite.sa listing page and GET /market/below-market use, so the three always agree.

    Comparables are residential listings with the same listing type, property type and exact bedroom count, an area within a calibrated tolerance of this listing's, inside a calibrated radius and look-back. Each distinct unit counts once, at its latest asking price (copies across sources and reposts collapse into one), and this listing's own copies are left out. Every comparable passes Kite's price, bedroom, area, property-type and location checks. Radius, look-back, area tolerance and the minimum evidence are calibrated per city, property type, bedroom count and listing type, and a comparison is published only for cohorts that passed that calibration. Nothing falls back to a wider area or ignores bedrooms. A band needs the cohort's minimum number of distinct units, spread across independent evidence clusters (a project, or a ~100 m cell).

    p25–p75 is the middle half of nearby asking prices. It is not a valuation, an appraisal or an expected achieved price. Prices are asking prices in SAR: yearly rent for rentals (monthly, weekly and daily postings are converted to a yearly amount), total price for sales. Snapshots are refreshed at least weekly, and retired as soon as this listing's price, bedrooms or property type change.

    GET /listings/{id}/market-position always answers, against the whole neighborhood and city. This endpoint answers only for a like-for-like nearby cohort, and otherwise says why not. status is available when there is a band. Otherwise band, position and stability are null and status gives the reason:

    • insufficient_comparables: the cohort is published but too few distinct units were observed nearby. cohort shows what was searched and found.
    • unsupported_cohort: this city, property type, bedroom count and listing type hasn't passed calibration, so no comparison is published for it.
    • not_residential, multi_unit (the ad prices several units together), no_price, no_location: the listing can't be compared.
    • plot_area_only: the listing gives only the building plot's area, not the unit's, and comparables are matched on unit area.
    • area_unusable: the area is missing or failed Kite's area checks.
    • fields_unusable: the price, bedrooms, property type or location failed Kite's checks.
    Authentication
    Send a data key (dk_live_… or dk_test_…) as a Bearer token.
    Scope
    analytics
    Cost
    50 units per call

    Parameters

    NameTypeDescription
    idrequiredpathinteger

    Listing id.

    Response

    The data field is an object with these fields.

    NameTypeDescription
    listing_idrequiredinteger
    statusrequiredstring

    available, or why there is no band. See the endpoint description.

    One of: available, insufficient_comparables, unsupported_cohort, not_residential, multi_unit, no_price, no_location, plot_area_only, area_unusable, fields_unusable

    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

    Example request

    curl
    curl "https://api.kite.sa/v1/listings/128647/price-band" \
      -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.analytics.listingPriceBand(128647);
    Python (kite-sa)
    from kite_sa import Kite
    
    kite = Kite()  # reads KITE_API_KEY
    result = kite.analytics.listing_price_band(128647)

    Open in the interactive reference

    Related endpoints

    • Get comparable listings GET /listings/{id}/comparables
    • Get a listing's market position GET /listings/{id}/market-position
    • Find below-market listings GET /market/below-market
    • Find below-market listings (old path) GET /market/deals
    • Get gross rental yield GET /market/rental-yield
    • Get price trends GET /market/trends
    • Compare neighborhoods GET /market/neighborhoods/compare

    Guides

    • Quickstart
    • What a listing is
    • Coverage and freshness
    • 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
    price_sar
    required
    integer | null

    This listing's asking price.

    price_per_sqm_sarrequiredinteger | null

    This listing's asking price per m². Null unless its area passed Kite's checks.

    bandrequiredobject | null

    Null unless status is available.

    positionrequiredobject | null

    Null unless status is available.

    stabilityrequiredobject | null

    Null unless status is available.

    cohortrequiredobject | null

    The comparison that was run. Null when none was (unsupported_cohort, or a reason about the listing itself).

    methodologyrequiredobject | null

    Null when no comparison was run.