Count listings (GET /listings/count) — 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

Listings

Count listings

GET/listings/count

How many listings match the same filters as search.

Authentication
Send a data key (dk_live_… or dk_test_…) as a Bearer token.
Scope
listings
Cost
1 unit 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

One of: rent, sale

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

    listing_categoryquerystring

    Omit for both.

    One of: residential, commercial

    property_typequerystring[]

    One or more, comma-separated.

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

    neighborhood_idqueryinteger[]

    Neighborhood ids from GET /cities/{city}/neighborhoods.

    bedsqueryinteger

    Exact number of bedrooms. Exact at every value, including 5 — kite.sa's own filter treats 5 as five-or-more, so the same number returns different sets here. Use beds_min for a range.

    beds_minqueryinteger

    Minimum number of bedrooms.

    beds_maxqueryinteger

    Maximum number of bedrooms.

    bathrooms_minqueryinteger

    Minimum number of bathrooms.

    price_minqueryinteger

    SAR. Yearly for rentals (see price.yearly_sar).

    price_maxqueryinteger

    SAR. Yearly for rentals (see price.yearly_sar).

    area_minquerynumber

    Square meters.

    area_maxquerynumber

    Square meters.

    furnishedquerystring

    Whether the listing is furnished. Omit to include listings that don't say.

    One of: true, false

    sourcequerystring[]

    Source platforms, see GET /enums. Values aren't checked against the list, so a misspelled source narrows to nothing rather than erroring.

    bboxquerystring

    Bounding box west,south,east,north in degrees (GeoJSON order).

    updated_sincequerystring (date-time)

    Only listings whose updated_at is at or after this ISO 8601 time. Combine with sort=updated_asc to sync.

    bathroomsqueryinteger

    Exact number of bathrooms.

    bathrooms_maxqueryinteger

    Maximum number of bathrooms.

    livings_minqueryinteger

    Minimum number of living rooms.

    neighborhood_id_excludequeryinteger[]

    Exclude these neighborhoods. Ids from GET /cities/{city}/neighborhoods. Listings Kite could not place in a neighborhood are kept — unlike neighborhood_id, which drops them.

    qquerystring

    Free-text match on the advertiser's title and description, as posted — not on headline, which Kite builds for the response. Several words must all appear; "quote a phrase" to match it whole, and | between words for either. Sources that post no title (Aqar among them) are matched on description alone.

    amenitiesquerystring[]

    Only listings that have all of these. See GET /enums.

    One of: ac, kitchen, maid_room, parking, private_roof, lift, pool, gym, balcony, garden, laundry_room

    amenities_excludequerystring[]

    Exclude listings that have any of these.

    One of: ac, kitchen, maid_room, parking, private_roof, lift, pool, gym, balcony, garden, laundry_room

    photo_featuresquerystring[]

    Only listings whose photos show all of these: real_photos (photos of the actual property, not renders or stock images), kitchen_installed (fitted kitchen cabinets), ac_split, pool, roof_terrace, balcony, large_windows (a living room or bedroom with large windows). Read from the listing's photos by an automated vision model and published only for features it identifies with high precision, so this is a must-have filter and nothing else: a listing whose photos don't show a feature, or that hasn't been analysed yet, simply doesn't match, and there is no way to ask for listings without a feature. Coverage is homes with photos; recently added listings may not be analysed yet.

    One of: real_photos, kitchen_installed, ac_split, pool, roof_terrace, balcony, large_windows

    floorquerystring

    ground for ground-floor listings, upper for any stated floor above it. The two do not partition the results: a listing whose floor the source didn't state is in neither.

    One of: ground, upper

    source_excludequerystring[]

    Exclude these source platforms, see GET /enums.

    max_agequeryinteger

    Maximum property age in years. In Riyadh the age is checked against municipal building permits from 2018 on: when the ad claims a building at least four years younger than its latest permit allows, the permit's age (the permit year plus a year to build) is used instead. A permit never makes a building younger than its ad says. Aqar records an age of 0 when the advertiser leaves it blank, so an Aqar listing at 0 counts as new only when a Riyadh permit or the ad's own text (first occupant, never lived in, newly built) backs it; otherwise its age is unknown and it doesn't match. Where an ad's own description states the building's age ("العمر 8 سنوات") at least three years older than its age field, or the field is empty, the description's age is used.

    verifiedquerystring

    true for listings the source marks as verified. false means everything else — both listings it marked unverified and listings it said nothing about.

    One of: true, false

    advertiser_typequerystring

    Who posted the ad. The underlying column holds eight source-specific values; these two group them. Ads by an intermediary who does not say whether they are a firm or a person match neither.

    One of: company, individual

    compoundquerystring

    Compound name, partial match.

    in_compoundquerystring

    Only listings that belong to a compound, whichever one.

    One of: true, false

    rent_frequencyquerystring

    How the rent is advertised. price.yearly_sar stays yearly either way; see price.as_posted.

    One of: monthly, yearly

    days_on_market_minqueryinteger

    Days since Kite first saw the listing.

    days_on_market_maxqueryinteger

    Days since Kite first saw the listing.

    Response

    The data field is an object with these fields.

    NameTypeDescription
    totalrequiredinteger

    Example request

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

    Open in the interactive reference

    Related endpoints

    • Search listings GET /listings
    • Get listings by id GET /listings/batch
    • Get a listing GET /listings/{id}
    • Get a listing's price history GET /listings/{id}/price-history

    Guides

    • Quickstart
    • What a listing is
    • Searching and filtering
    • Keeping a copy in sync
    • Limits and quotas
    • Pagination
    • Errors