POST /api/28hse/properties/search
Price: 20 credits
Search Hong Kong property listings on 28Hse or Squarefoot across the whole filter surface the sites expose: for-sale or for-rent, free text, the three-level area tree (region, district group, district), primary and secondary school nets, nearby universities, specific estates, property category (private estate, subsidised housing with or without the premium paid, village house, detached house, public housing, tenement, stand-alone block, subdivided and shared units, short lets, carparks, industrial and office space, shops, land and overseas stock), price, saleable or gross area, bedroom count, outlook, decoration level, included appliances and furniture, pet policy, carpark, unit and office features, orientation, whether the advertiser is an owner or an agency, building age, floor band, kitchen layout, open-flame cooking, developer, virtual tours, auctions and prepaid-rent discounts, with twelve ordering modes. Returns listing cards with id, headline, price, saleable and gross areas with price per square foot, estate and district with their ids, floor band, block and unit designation, bedroom and bathroom counts, street address, orientation, the indicative monthly mortgage repayment, cover photo, photo count and the advertiser labels — the two portals print different subsets of these on their cards. The total number of matching listings is returned in the X-Total-Available-Results header.
Search 28Hse / Squarefoot Hong Kong listings. Set site (28hse or squarefoot — they hold different inventories), listing_type ('buy'/'rent') and count. Narrow with keyword, regions, district_groups, districts, primary_school_nets, secondary_school_nets, universities, estate_cat_ids (the estate_cat_id of a listing card, a transaction row or the cat_id of 28hse/estates), property_types, rental_shortcuts, min_price/max_price (HKD), area_basis + min_area/max_area (square feet), room_counts, features, directions, listed_by (use 'landlord' for owner-advertised stock), building_ages, floor_zones, kitchen_types, open_flame_cooking, developers, has_vr_or_video, auction_only and prepaid_rent_discount_only; order with sort. lang switches text between traditional Chinese, simplified Chinese and English and also changes which categories are published. Each result carries id — pass it to 28hse/properties with the same site for the full listing.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)site string — Which Hong Kong portal to read. Both run on the same platform but hold different listing inventories: 28hse is the larger Chinese-first marketplace, squarefoot is the English-first one. (default: "28hse"; one of: "28hse", "squarefoot")lang string — Language of names, addresses and descriptions. It also changes which listings exist: some categories are only published in the Chinese editions. (default: "tc"; one of: "tc", "cn", "en")listing_type string — Search for-sale or for-rent listings. (default: "buy"; one of: "buy", "rent")count integer required — Number of listings to return. (min: 1)keyword string nullable — Free text matched against estate name, street and headline.sort string — Ordering of the result list. (default: "relevance"; one of: "relevance", "newest", "price_low_to_high", "price_high_to_low", "gross_area_low_to_high", "gross_area_high_to_low", "saleable_area_low_to_high", "saleable_area_high_to_low", "gross_price_per_sqft_low_to_high", "gross_price_per_sqft_high_to_low", "saleable_price_per_sqft_low_to_high", "saleable_price_per_sqft_high_to_low")regions array nullable — Top-level Hong Kong regions to search in. (one of: "hong_kong_island", "kowloon", "new_territories", "outlying_islands", "oversea")district_groups array nullable — District groups (the second level of the area tree). (one of: "island_south", "aberdeen_ap_lei_chau_wong_chuk_hang", "chai_wan_siu_sai_wan_shek_o", "shau_kei_wan_heng_fa_chuen", "sai_wan_ho", "taikoo", "quarry_bay", "north_point_mid_levels", "north_point_fortress_hill", "tin_hau_tai_hang", "causeway_bay_happy_valley", "wan_chai_admiralty", "mid_levels", "central_sheung_wan", "sai_ying_pun_shek_tong_tsui", "kennedy_town", "whampoa", "hung_hom", "tsim_sha_tsui", "jordan", "yau_ma_tei", "mong_kok", "prince_edward", "tai_kok_tsui_olympic_kowloon_station", "lai_king", "mei_foo", "cheung_sha_wan", "lai_chi_kok", "sham_shui_po_shek_kip_mei_nam_cheong", "yau_yat_tsuen", "ho_man_tin", "kowloon_tong", "san_po_kong_wong_tai_sin", "kai_tak", "kowloon_city", "to_kwa_wan", "diamond_hill_lok_fu", "ngau_chi_wan", "kowloon_bay", "kwun_tong_ngau_tau_kok", "yau_tong", "lam_tin", "sha_tau_kok", "tsing_yi", "kwai_chung_kwai_fong", "tsuen_wan_tai_wo_hau", "tsuen_wan_sham_tseng", "tuen_mun_castle_peak_road", "tuen_mun", "tin_shui_wai", "yuen_long_hung_shui_kiu", "sheung_shui", "fan_ling", "tai_po_tai_wo_pak_shek_kok", "sha_tin_tai_wai_fotan", "ma_on_shan", "tseung_kwan_o", "sai_kung_clear_water_bay", "cheung_chau_other_islands", "lamma_island", "peng_chau", "south_lantau_island_tai_o", "tung_chung", "discovery_bay", "ma_wan", "greater_bay_area")districts array nullable — Individual districts (the third level of the area tree). (one of: "pok_fu_lam", "shouson_hill", "baguio_villa", "southern_district", "repulse_bay", "tai_tam", "stanley", "south_horizons", "parkview", "wong_chuk_hang", "ap_lei_chau", "aberdeen", "chai_wan", "shek_o", "siu_sai_wan", "shau_kei_wan", "heng_fa_chuen", "north_point", "fortress_hill", "tai_hang", "tin_hau", "jardines_lookout", "happy_valley", "happy_valley_mid_levels", "causeway_bay", "admiralty", "wan_chai", "shiu_fai_terrace", "western_mid_levels", "mid_levels_central", "the_peak", "sheung_wan", "central", "sai_ying_pun", "shek_tong_tsui", "tai_kok_tsui", "olympic", "kowloon_station", "sham_shui_po", "shek_kip_mei", "nam_cheong", "san_po_kong", "wong_tai_sin", "diamond_hill", "lok_fu", "ngau_tau_kok", "kwun_tong", "kwai_chung", "kwai_fong", "tsuen_wan", "tai_wo_hau", "yuen_long", "hung_shui_kiu", "tai_po", "tai_wo", "pak_shek_kok", "sha_tin", "tai_wai", "fotan", "tseung_kwan_o_town", "lohas_park", "hang_hau", "po_lam", "tiu_keng_leng", "sai_kung", "clear_water_bay", "cheung_chau", "other_islands", "south_lantau_island", "tai_o", "zhongshan", "zhuhai", "guangdong", "huizhou", "shenzhen", "jiangmen")primary_school_nets array nullable — Only listings inside these primary school nets. (one of: "net_11_central_and_western", "net_12_wan_chai", "net_14_eastern", "net_16_eastern", "net_18_southern", "net_31_yau_tsim_mong", "net_32_yau_tsim_mong", "net_34_kowloon_city", "net_35_kowloon_city", "net_38_sham_shui_po", "net_40_sham_shui_po", "net_41_kowloon_city", "net_43_wong_tai_sin", "net_45_wong_tai_sin", "net_46_kwun_tong", "net_48_kwun_tong", "net_62_tsuen_wan", "net_64_kwai_tsing", "net_65_kwai_tsing", "net_66_kwai_tsing", "net_70_tuen_mun", "net_71_tuen_mun", "net_72_yuen_long", "net_73_yuen_long", "net_74_yuen_long", "net_80_north", "net_81_north", "net_83_north", "net_84_tai_po", "net_88_sha_tin", "net_89_sha_tin", "net_91_sha_tin", "net_95_sai_kung", "net_96_islands", "net_97_islands", "net_98_islands", "net_99_islands")secondary_school_nets array nullable — Only listings inside these secondary school nets. (one of: "central_and_western_hk1", "wan_chai_hk2", "eastern_hk3", "southern_hk4", "yau_tsim_mong_kl1", "sham_shui_po_kl2", "kowloon_city_kl3", "wong_tai_sin_kl4", "kwun_tong_kl5", "kwai_tsing_nt1", "tsuen_wan_nt2", "tuen_mun_nt3", "yuen_long_nt4", "north_nt5", "tai_po_nt6", "sha_tin_nt7", "sai_kung_nt8")universities array nullable — Only listings close to these universities and colleges. (one of: "hku", "cuhk", "hkust", "polyu", "cityu", "hkbu", "lingnan", "shue_yan", "eduhk", "hang_seng", "metropolitan", "chu_hai_college", "saint_francis")estate_cat_ids array nullable — Only listings inside these estates, by the estate_cat_id a listing card or a transaction row carries. (examples: ["1140"])property_types array nullable — Property categories; group members cover every subtype under them. (one of: "any_residential", "any_carpark", "any_industrial_or_office", "any_shop", "any_land", "any_oversea", "apartment", "home_ownership_scheme", "home_ownership_scheme_premium_unpaid", "home_ownership_scheme_free_market", "village_house", "house", "public_housing", "public_housing_premium_unpaid", "public_housing_free_market", "western_style_building", "tong_lau", "stand_alone_building", "subdivided_flat", "room_share", "short_term_rental", "residential_carpark", "commercial_carpark", "truck_carpark", "motorbike_carpark", "industrial_building", "commercial_office", "shopping_mall_shop", "upstair_shop", "street_shop", "business_takeover", "residential_land", "village_house_land", "agricultural_land", "storage_land", "warehouse", "recreation_area", "oversea_new_homes", "oversea_property")rental_shortcuts array nullable — Shared and short-term rental formats. Applies to for-rent listings. (one of: "subdivided_flat", "room_share", "short_term_rental")min_price number nullable — Minimum sale price or monthly rent in HKD. (min: 0)max_price number nullable — Maximum sale price or monthly rent in HKD. (min: 0)area_basis string — Which floor area the area filter and the ordering apply to. (default: "saleable"; one of: "saleable", "gross")min_area number nullable — Minimum floor area in square feet. (min: 0)max_area number nullable — Maximum floor area in square feet. (min: 0)room_counts array nullable — Bedroom counts to include. (one of: "studio", "one", "two", "three", "four", "five_or_more")features array nullable — Outlook, decoration, appliances, furniture, carpark, unit and office features. (one of: "any_view", "mountain_view", "garden_view", "open_view", "building_view", "city_view", "sea_view", "river_view", "swimming_pool_view", "any_decoration", "simple_decoration", "elegant_decoration", "luxury_decoration", "any_appliance", "all_appliances_included", "tv", "microwave", "air_conditioner", "washing_machine", "water_heater", "fridge", "steam_oven", "induction_cooker", "cooker_hood", "oven", "dishwasher", "dryer", "wine_cellar", "any_furniture", "all_furniture_included", "partly_furnished", "tv_cabinet", "wardrobe", "table", "sofa", "bed", "chair", "coffee_table", "cabinet", "dressing_table", "bookshelf", "sole_agent", "pet_friendly", "any_carpark", "indoor_carpark", "outdoor_carpark", "any_unit_feature", "garden", "welcomes_students", "with_tenancy", "balcony", "roof_top", "terrace", "ensuite", "maid_room", "duplex", "whole_floor", "clubhouse", "near_mtr", "near_shopping_mall", "good_school_net", "powder_room", "any_office_feature", "cctv_24h", "access_24h", "dedicated_mailbox", "private_toilet", "private_air_conditioner", "office_roof_top", "office_terrace", "office_whole_floor")directions array nullable — Living-room orientation. (one of: "east", "south_east", "south", "south_west", "west", "north_west", "north", "north_east")listed_by array nullable — Whether the advertiser is an owner, a large owner or an agency. (one of: "landlord", "big_landlord", "agency")building_ages array nullable — Age bands of the building. (one of: "brand_new", "within_5_years", "within_10_years", "within_15_years", "within_20_years", "within_25_years", "within_30_years", "from_20_to_30_years", "from_30_to_40_years", "from_40_to_50_years", "above_50_years")floor_zones array nullable — Floor bands inside the building. (one of: "whole_block", "high", "middle", "low", "ground", "underground")kitchen_types array nullable — Kitchen layout. (one of: "separate_kitchen", "open_kitchen", "no_kitchen")open_flame_cooking boolean nullable — Only units where open-flame cooking is allowed.developers array nullable — Developers of the building. (one of: "shkp", "ck_asset", "henderson", "sino", "new_world", "wheelock", "nan_fung", "chinachem", "swire", "hang_lung", "kerry", "hutchison_whampoa", "china_overseas", "k_wah", "hong_kong_housing_society", "wing_tai", "kowloon_development", "wang_on", "hkr", "billion_development", "vanke_hong_kong", "road_king", "poly", "others")has_vr_or_video boolean nullable — Only listings that come with a virtual tour or a video.auction_only boolean nullable — Only auction listings. Applies to for-sale listings.prepaid_rent_discount_only boolean nullable — Only listings offering a discount for a year of rent paid upfront. Applies to rentals.@type string (default: "Hse28Property")id string requiredurl string nullablebuy_rent string nullableheadline string nullabledescription string nullablereference string nullableprice number nullableprice_per_saleable_sqft number nullableprice_per_gross_sqft number nullablesaleable_area number nullablegross_area number nullablerent_includes string nullablemortgage_monthly_payment number nullableroom_count integer nullablebathroom_count integer nullablefloor_zone string nullabledirection string nullablekitchen_type string nullablerental_start_at integer nullableestate string nullableestate_id string nullableestate_cat_id string nullableestate_url string nullableestate_age integer nullableblock_and_unit string nullableregion string nullabledistrict_group string nullabledistrict string nullabledistrict_url string nullableaddress string nullablelatitude number nullablelongitude number nullableprimary_school_net string nullableprimary_school_net_id string nullablesecondary_school_net string nullablesecondary_school_net_id string nullablelisted_by_landlord boolean nullableview_count integer nullableimage string nullableimages array (default: [])image_count integer nullablevideos array (default: [])labels array (default: [])categories array (default: [])agency object nullable@type string (default: "Hse28Agency")id string nullablename string nullableurl string nullableimage string nullableaddress string nullablesale_listing_count integer nullablerent_listing_count integer nullablecontacts array (default: [])@type string (default: "Hse28Contact")name string nullablelicence string nullableimage string nullablenearby_places array (default: [])@type string (default: "Hse28NearbyPlace")name string requiredkind string requiredwalk_minutes integer nullablecreated_at integer nullableupdated_at integer nullableexpires_at integer nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.