curl --request POST \
--url https://api.anysite.io/api/centaline/commercial/properties/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 2,
"timeout": 300,
"lang": "hk",
"keyword": "<string>",
"districts": [
"<string>"
],
"usage": "Any",
"listing_type": "B",
"floor_types": [],
"views": [],
"themes": [],
"decorations": [],
"investment_types": [],
"shop_types": [],
"campaigns": [
"CIES"
],
"building_id": "<string>",
"min_price": 1,
"max_price": 1,
"min_rent": 1,
"max_rent": 1,
"min_area": 1,
"max_area": 1
}
'import requests
url = "https://api.anysite.io/api/centaline/commercial/properties/search"
payload = {
"count": 2,
"timeout": 300,
"lang": "hk",
"keyword": "<string>",
"districts": ["<string>"],
"usage": "Any",
"listing_type": "B",
"floor_types": [],
"views": [],
"themes": [],
"decorations": [],
"investment_types": [],
"shop_types": [],
"campaigns": ["CIES"],
"building_id": "<string>",
"min_price": 1,
"max_price": 1,
"min_rent": 1,
"max_rent": 1,
"min_area": 1,
"max_area": 1
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 2,
timeout: 300,
lang: 'hk',
keyword: '<string>',
districts: ['<string>'],
usage: 'Any',
listing_type: 'B',
floor_types: [],
views: [],
themes: [],
decorations: [],
investment_types: [],
shop_types: [],
campaigns: ['CIES'],
building_id: '<string>',
min_price: 1,
max_price: 1,
min_rent: 1,
max_rent: 1,
min_area: 1,
max_area: 1
})
};
fetch('https://api.anysite.io/api/centaline/commercial/properties/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anysite.io/api/centaline/commercial/properties/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'count' => 2,
'timeout' => 300,
'lang' => 'hk',
'keyword' => '<string>',
'districts' => [
'<string>'
],
'usage' => 'Any',
'listing_type' => 'B',
'floor_types' => [
],
'views' => [
],
'themes' => [
],
'decorations' => [
],
'investment_types' => [
],
'shop_types' => [
],
'campaigns' => [
'CIES'
],
'building_id' => '<string>',
'min_price' => 1,
'max_price' => 1,
'min_rent' => 1,
'max_rent' => 1,
'min_area' => 1,
'max_area' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/centaline/commercial/properties/search"
payload := strings.NewReader("{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/centaline/commercial/properties/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/centaline/commercial/properties/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "CentalineCommercialProperty",
"property_number": "<string>",
"building_id": "<string>",
"building_name": "<string>",
"building_name_en": "<string>",
"address": "<string>",
"listing_type": "<string>",
"usage": "<string>",
"usage_label": "<string>",
"floor": "<string>",
"price": 123,
"price_text": "<string>",
"price_per_sqft": 123,
"rent": 123,
"rent_text": "<string>",
"rent_per_sqft": 123,
"gross_area": 123,
"area_text": "<string>",
"is_area_approximate": true,
"air_conditioning": "<string>",
"mtr_station": "<string>",
"mtr_walk_time": "<string>",
"occupation_year": "<string>",
"occupied_at": 123,
"is_sole_agent": true,
"has_key": true,
"is_hot_listing": true,
"is_open_day": true,
"is_director_pick": true,
"is_carpark": true,
"carpark_type": "<string>",
"carpark_type_label": "<string>",
"is_investment": true,
"with_lease": true,
"is_rental_inclusive": true,
"has_video": true,
"has_360_view": true,
"has_virtual_tour": true,
"features": [],
"labels": [],
"area": {
"@type": "CentalineCommercialArea",
"zone_id": "<string>",
"zone": "<string>",
"district_id": "<string>",
"district": "<string>"
},
"agents": [],
"latitude": 123,
"longitude": 123,
"image": "<string>",
"published_at": 123
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/centaline/commercial/properties/search
Search Centaline Commercial (中原工商舖) Hong Kong listings — offices, industrial space, shops and commercial carparks for sale or lease. Filter by free-text keyword, sub-district, property class, floor band, outlook, listing highlights, existing fit-out, whole-asset investment format, suitable shop trades, special programmes such as the Capital Investment Entrant Scheme, a specific building, and price, rent and area ranges. Each listing carries its property number, building, address, floor, sale price and monthly rent with per-sq-ft rates, area, air conditioning, nearest MTR station and walking time, occupation year, sole-agency, key, hot-listing, director-pick and open-day flags, the parking space class on carpark listings, media availability, feature and label lists, the district hierarchy, the handling agents with their licence numbers and coordinates.
Price: 10 credits per 64 results
curl --request POST \
--url https://api.anysite.io/api/centaline/commercial/properties/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 2,
"timeout": 300,
"lang": "hk",
"keyword": "<string>",
"districts": [
"<string>"
],
"usage": "Any",
"listing_type": "B",
"floor_types": [],
"views": [],
"themes": [],
"decorations": [],
"investment_types": [],
"shop_types": [],
"campaigns": [
"CIES"
],
"building_id": "<string>",
"min_price": 1,
"max_price": 1,
"min_rent": 1,
"max_rent": 1,
"min_area": 1,
"max_area": 1
}
'import requests
url = "https://api.anysite.io/api/centaline/commercial/properties/search"
payload = {
"count": 2,
"timeout": 300,
"lang": "hk",
"keyword": "<string>",
"districts": ["<string>"],
"usage": "Any",
"listing_type": "B",
"floor_types": [],
"views": [],
"themes": [],
"decorations": [],
"investment_types": [],
"shop_types": [],
"campaigns": ["CIES"],
"building_id": "<string>",
"min_price": 1,
"max_price": 1,
"min_rent": 1,
"max_rent": 1,
"min_area": 1,
"max_area": 1
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 2,
timeout: 300,
lang: 'hk',
keyword: '<string>',
districts: ['<string>'],
usage: 'Any',
listing_type: 'B',
floor_types: [],
views: [],
themes: [],
decorations: [],
investment_types: [],
shop_types: [],
campaigns: ['CIES'],
building_id: '<string>',
min_price: 1,
max_price: 1,
min_rent: 1,
max_rent: 1,
min_area: 1,
max_area: 1
})
};
fetch('https://api.anysite.io/api/centaline/commercial/properties/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anysite.io/api/centaline/commercial/properties/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'count' => 2,
'timeout' => 300,
'lang' => 'hk',
'keyword' => '<string>',
'districts' => [
'<string>'
],
'usage' => 'Any',
'listing_type' => 'B',
'floor_types' => [
],
'views' => [
],
'themes' => [
],
'decorations' => [
],
'investment_types' => [
],
'shop_types' => [
],
'campaigns' => [
'CIES'
],
'building_id' => '<string>',
'min_price' => 1,
'max_price' => 1,
'min_rent' => 1,
'max_rent' => 1,
'min_area' => 1,
'max_area' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/centaline/commercial/properties/search"
payload := strings.NewReader("{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/centaline/commercial/properties/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/centaline/commercial/properties/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 2,\n \"timeout\": 300,\n \"lang\": \"hk\",\n \"keyword\": \"<string>\",\n \"districts\": [\n \"<string>\"\n ],\n \"usage\": \"Any\",\n \"listing_type\": \"B\",\n \"floor_types\": [],\n \"views\": [],\n \"themes\": [],\n \"decorations\": [],\n \"investment_types\": [],\n \"shop_types\": [],\n \"campaigns\": [\n \"CIES\"\n ],\n \"building_id\": \"<string>\",\n \"min_price\": 1,\n \"max_price\": 1,\n \"min_rent\": 1,\n \"max_rent\": 1,\n \"min_area\": 1,\n \"max_area\": 1\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "CentalineCommercialProperty",
"property_number": "<string>",
"building_id": "<string>",
"building_name": "<string>",
"building_name_en": "<string>",
"address": "<string>",
"listing_type": "<string>",
"usage": "<string>",
"usage_label": "<string>",
"floor": "<string>",
"price": 123,
"price_text": "<string>",
"price_per_sqft": 123,
"rent": 123,
"rent_text": "<string>",
"rent_per_sqft": 123,
"gross_area": 123,
"area_text": "<string>",
"is_area_approximate": true,
"air_conditioning": "<string>",
"mtr_station": "<string>",
"mtr_walk_time": "<string>",
"occupation_year": "<string>",
"occupied_at": 123,
"is_sole_agent": true,
"has_key": true,
"is_hot_listing": true,
"is_open_day": true,
"is_director_pick": true,
"is_carpark": true,
"carpark_type": "<string>",
"carpark_type_label": "<string>",
"is_investment": true,
"with_lease": true,
"is_rental_inclusive": true,
"has_video": true,
"has_360_view": true,
"has_virtual_tour": true,
"features": [],
"labels": [],
"area": {
"@type": "CentalineCommercialArea",
"zone_id": "<string>",
"zone": "<string>",
"district_id": "<string>",
"district": "<string>"
},
"agents": [],
"latitude": 123,
"longitude": 123,
"image": "<string>",
"published_at": 123
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
x >= 120 <= x <= 1500hk, sc, en Any, Office, Industrial, Retail, Carpark B, S, R H, M, L, G, Whole Floor City View, Sea View, Open View, Mountain View, Garden View, Race Course View, River View, Fountain View Video, 360View, HotListing, WithKey, SoleAgent, VR, OpenDay Fitted, Ceiling, Warehouse, Carpet, Water supply and drainage system, Split-Type A/C, Light Box, Raised Floor, Painted Wall, Business Centre, Wallpaper, Plastic Floor Whole Block, CommPodium, Hotel Catering, Snack Food/Bread, Market/Household Goods /Convenient Store, Property/Bank/Finance/Investment/Insurance, Beauty/Fitness/Salon, Medical, Fashion, Toy/Gift, Pharmacy, Foot Masage, Wholesale, Pets, Electrica Appliances/IT/Audio-Visua Equipment, Accessories, Educational and Tutorial Classes, Construction and Decoration, Jewellery/Watches, Leather/Shoes, Religion, Professional Services, Art/Design, Sports, Trading - Import/Export, Furniture/Lighting, Investor, Entertainment, Business Centre, Tourism, Manufacturing/Engineering, Studio/Photographic Studio, Broadband Network, Textile/Garment, Home for the aged, Hotel/Service Apartment, Others CIES x >= 0x >= 0x >= 0x >= 0x >= 0x >= 0Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes