curl --request POST \
--url https://api.anysite.io/api/midland/properties \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"serial_no": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
'import requests
url = "https://api.anysite.io/api/midland/properties"
payload = {
"serial_no": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
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({
serial_no: '<string>',
timeout: 300,
lang: 'zh-hk',
unit: 'feet',
currency: 'HKD'
})
};
fetch('https://api.anysite.io/api/midland/properties', 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/midland/properties",
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([
'serial_no' => '<string>',
'timeout' => 300,
'lang' => 'zh-hk',
'unit' => 'feet',
'currency' => 'HKD'
]),
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/midland/properties"
payload := strings.NewReader("{\n \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\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/midland/properties")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/midland/properties")
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 \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}"
response = http.request(request)
puts response.read_body[
{
"serial_no": "<string>",
"@type": "MidlandProperty",
"url": "<string>",
"url_zh_cn": "<string>",
"url_en": "<string>",
"transaction_types": [],
"tags": [],
"sale_tags": [],
"rent_tags": [],
"unit_type": "<string>",
"is_hos": true,
"is_sole_agent": true,
"is_tenancy": true,
"is_hot_new": true,
"has_valuation": true,
"is_deluxe_sale": true,
"is_deluxe_rent": true,
"deluxe_star": "<string>",
"deluxe_star_rate": 123,
"lifestyle_themes": [],
"price": 123,
"previous_price": 123,
"price_hkd": 123,
"price_per_area": 123,
"price_per_net_area": 123,
"hos_price": 123,
"previous_hos_price": 123,
"hos_price_hkd": 123,
"hos_price_per_area": 123,
"hos_price_per_net_area": 123,
"rent": 123,
"previous_rent": 123,
"rent_hkd": 123,
"rent_per_area": 123,
"rent_per_net_area": 123,
"monthly_payment": 123,
"monthly_payment_hkd": 123,
"hos_monthly_payment": 123,
"hos_monthly_payment_hkd": 123,
"mortgage_percent": 123,
"hos_mortgage_percent": 123,
"area": 123,
"net_area": 123,
"net_area_ratio": 123,
"bedroom_count": 123,
"master_bedroom_count": 123,
"guest_room_count": 123,
"sitting_room_count": 123,
"bathroom_count": 123,
"other_room_count": 123,
"covered_carpark_count": 123,
"floor_level": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"flat": "<string>",
"orientation": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"image": "<string>",
"photos": [],
"videos": [],
"virtual_tours": [],
"floor_plans": [],
"static_maps": [],
"features": [],
"facility_groups": [],
"amenities": [],
"mtr_stations": [],
"geo": {
"@type": "MidlandGeo",
"region": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"subregion": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"sm_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"combined_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"int_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"int_sm_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"lux_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
}
},
"neighbourhood": {
"@type": "MidlandNeighbourhood",
"id": "<string>",
"name": "<string>",
"url": "<string>",
"unit_rank_text": "<string>",
"total_unit_count": 123,
"sell_count": 123,
"rent_count": 123,
"air_quality_level": "<string>",
"market_stat": {
"@type": "MidlandMarketStat",
"net_ft_price": 123,
"previous_net_ft_price": 123,
"net_ft_price_change_percent": 123,
"ft_price": 123,
"previous_ft_price": 123,
"ft_price_change_percent": 123,
"net_ft_rent": 123,
"transaction_count": 123,
"transaction_amount": 123
}
},
"estate": {
"@type": "MidlandPropertyEstate",
"id": "<string>",
"name": "<string>",
"phase_id": "<string>",
"phase_name": "<string>",
"address": "<string>",
"developer": "<string>",
"vendor": "<string>",
"management_company": "<string>",
"op_date_text": "<string>",
"first_op_at": 123,
"last_op_at": 123,
"block_count_text": "<string>",
"storey_text": "<string>",
"total_flats_text": "<string>",
"school_net": {
"@type": "MidlandSchoolNet",
"kindergarten_id": "<string>",
"kindergarten_name": "<string>",
"primary_id": "<string>",
"primary_name": "<string>",
"secondary_id": "<string>",
"secondary_name": "<string>"
},
"sell_count": 123,
"rent_count": 123,
"min_price": 123,
"max_price": 123,
"min_rent": 123,
"max_rent": 123,
"avg_net_ft_price": 123,
"avg_net_ft_rent": 123,
"net_ft_rent": 123,
"site_plans": [],
"videos": [],
"other_phases": [],
"url": "<string>"
},
"phase": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"building": {
"@type": "MidlandBuilding",
"id": "<string>",
"name": "<string>",
"address": "<string>",
"first_op_at": 123,
"floor_count": 123,
"building_type": "<string>",
"latitude": 123,
"longitude": 123,
"streetview_latitude": 123,
"streetview_longitude": 123,
"streetview_angle": 123
},
"market_stat": {
"@type": "MidlandMarketStat",
"net_ft_price": 123,
"previous_net_ft_price": 123,
"net_ft_price_change_percent": 123,
"ft_price": 123,
"previous_ft_price": 123,
"ft_price_change_percent": 123,
"net_ft_rent": 123,
"transaction_count": 123,
"transaction_amount": 123
},
"price_index": [],
"nearby_sale_transactions": [],
"nearby_rent_transactions": [],
"branches": [],
"agents": [],
"mortgage": {
"@type": "MidlandMortgage",
"loan_percent": 123,
"loan_years": 123,
"interest_rate_percent": 123
},
"comparable_room_count": "<string>",
"comparable_listing_net_ft_price": 123,
"comparable_listing_price_change_percent": 123,
"comparable_transaction_net_ft_price": 123,
"comparable_listing_net_ft_rent": 123,
"comparable_transaction_net_ft_rent": 123,
"estate_url": "<string>",
"transactions_url": "<string>",
"news_url": "<string>",
"first_published_at": 123,
"posted_at": 123,
"updated_at": 123,
"eaa_effective_at": 123
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/midland/properties
Get one Midland Realty Hong Kong residential listing by its reference number (or listing URL). Returns the full listing page: asking price or rent with previous price and per-area figures, HOS pricing, gross and saleable area with the efficiency ratio, room breakdown (bedrooms, master bedrooms, guest and sitting rooms, bathrooms, covered carparks), floor band, flat and orientation, typed photos, agent video, static maps, unit features, estate facilities, walkable amenities and MTR stations, the eight-level geography, the neighbourhood profile with air quality and market stats, the estate profile (developer, vendor, occupation dates, block and storey breakdown, school nets, listing counts and price ranges, site plans, videos, other phases), the building, the monthly price and rent index for the phase, recent nearby sale and rental deals, nearby branches, the listing agents with EAA licence numbers, and mortgage assumptions.
Price: 20 credits
⚠️ Common errors: 412: No listing with this reference number (it may have been withdrawn).
curl --request POST \
--url https://api.anysite.io/api/midland/properties \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"serial_no": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
'import requests
url = "https://api.anysite.io/api/midland/properties"
payload = {
"serial_no": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
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({
serial_no: '<string>',
timeout: 300,
lang: 'zh-hk',
unit: 'feet',
currency: 'HKD'
})
};
fetch('https://api.anysite.io/api/midland/properties', 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/midland/properties",
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([
'serial_no' => '<string>',
'timeout' => 300,
'lang' => 'zh-hk',
'unit' => 'feet',
'currency' => 'HKD'
]),
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/midland/properties"
payload := strings.NewReader("{\n \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\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/midland/properties")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/midland/properties")
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 \"serial_no\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}"
response = http.request(request)
puts response.read_body[
{
"serial_no": "<string>",
"@type": "MidlandProperty",
"url": "<string>",
"url_zh_cn": "<string>",
"url_en": "<string>",
"transaction_types": [],
"tags": [],
"sale_tags": [],
"rent_tags": [],
"unit_type": "<string>",
"is_hos": true,
"is_sole_agent": true,
"is_tenancy": true,
"is_hot_new": true,
"has_valuation": true,
"is_deluxe_sale": true,
"is_deluxe_rent": true,
"deluxe_star": "<string>",
"deluxe_star_rate": 123,
"lifestyle_themes": [],
"price": 123,
"previous_price": 123,
"price_hkd": 123,
"price_per_area": 123,
"price_per_net_area": 123,
"hos_price": 123,
"previous_hos_price": 123,
"hos_price_hkd": 123,
"hos_price_per_area": 123,
"hos_price_per_net_area": 123,
"rent": 123,
"previous_rent": 123,
"rent_hkd": 123,
"rent_per_area": 123,
"rent_per_net_area": 123,
"monthly_payment": 123,
"monthly_payment_hkd": 123,
"hos_monthly_payment": 123,
"hos_monthly_payment_hkd": 123,
"mortgage_percent": 123,
"hos_mortgage_percent": 123,
"area": 123,
"net_area": 123,
"net_area_ratio": 123,
"bedroom_count": 123,
"master_bedroom_count": 123,
"guest_room_count": 123,
"sitting_room_count": 123,
"bathroom_count": 123,
"other_room_count": 123,
"covered_carpark_count": 123,
"floor_level": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"flat": "<string>",
"orientation": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"image": "<string>",
"photos": [],
"videos": [],
"virtual_tours": [],
"floor_plans": [],
"static_maps": [],
"features": [],
"facility_groups": [],
"amenities": [],
"mtr_stations": [],
"geo": {
"@type": "MidlandGeo",
"region": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"subregion": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"sm_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"combined_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"int_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"int_sm_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"lux_district": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
}
},
"neighbourhood": {
"@type": "MidlandNeighbourhood",
"id": "<string>",
"name": "<string>",
"url": "<string>",
"unit_rank_text": "<string>",
"total_unit_count": 123,
"sell_count": 123,
"rent_count": 123,
"air_quality_level": "<string>",
"market_stat": {
"@type": "MidlandMarketStat",
"net_ft_price": 123,
"previous_net_ft_price": 123,
"net_ft_price_change_percent": 123,
"ft_price": 123,
"previous_ft_price": 123,
"ft_price_change_percent": 123,
"net_ft_rent": 123,
"transaction_count": 123,
"transaction_amount": 123
}
},
"estate": {
"@type": "MidlandPropertyEstate",
"id": "<string>",
"name": "<string>",
"phase_id": "<string>",
"phase_name": "<string>",
"address": "<string>",
"developer": "<string>",
"vendor": "<string>",
"management_company": "<string>",
"op_date_text": "<string>",
"first_op_at": 123,
"last_op_at": 123,
"block_count_text": "<string>",
"storey_text": "<string>",
"total_flats_text": "<string>",
"school_net": {
"@type": "MidlandSchoolNet",
"kindergarten_id": "<string>",
"kindergarten_name": "<string>",
"primary_id": "<string>",
"primary_name": "<string>",
"secondary_id": "<string>",
"secondary_name": "<string>"
},
"sell_count": 123,
"rent_count": 123,
"min_price": 123,
"max_price": 123,
"min_rent": 123,
"max_rent": 123,
"avg_net_ft_price": 123,
"avg_net_ft_rent": 123,
"net_ft_rent": 123,
"site_plans": [],
"videos": [],
"other_phases": [],
"url": "<string>"
},
"phase": {
"@type": "MidlandRef",
"id": "<string>",
"name": "<string>"
},
"building": {
"@type": "MidlandBuilding",
"id": "<string>",
"name": "<string>",
"address": "<string>",
"first_op_at": 123,
"floor_count": 123,
"building_type": "<string>",
"latitude": 123,
"longitude": 123,
"streetview_latitude": 123,
"streetview_longitude": 123,
"streetview_angle": 123
},
"market_stat": {
"@type": "MidlandMarketStat",
"net_ft_price": 123,
"previous_net_ft_price": 123,
"net_ft_price_change_percent": 123,
"ft_price": 123,
"previous_ft_price": 123,
"ft_price_change_percent": 123,
"net_ft_rent": 123,
"transaction_count": 123,
"transaction_amount": 123
},
"price_index": [],
"nearby_sale_transactions": [],
"nearby_rent_transactions": [],
"branches": [],
"agents": [],
"mortgage": {
"@type": "MidlandMortgage",
"loan_percent": 123,
"loan_years": 123,
"interest_rate_percent": 123
},
"comparable_room_count": "<string>",
"comparable_listing_net_ft_price": 123,
"comparable_listing_price_change_percent": 123,
"comparable_transaction_net_ft_price": 123,
"comparable_listing_net_ft_rent": 123,
"comparable_transaction_net_ft_rent": 123,
"estate_url": "<string>",
"transactions_url": "<string>",
"news_url": "<string>",
"first_published_at": 123,
"posted_at": 123,
"updated_at": 123,
"eaa_effective_at": 123
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes