curl --request POST \
--url https://api.anysite.io/api/midland/estates \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"estate": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
'import requests
url = "https://api.anysite.io/api/midland/estates"
payload = {
"estate": "<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({estate: '<string>', timeout: 300, lang: 'zh-hk', unit: 'feet', currency: 'HKD'})
};
fetch('https://api.anysite.io/api/midland/estates', 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/estates",
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([
'estate' => '<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/estates"
payload := strings.NewReader("{\n \"estate\": \"<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/estates")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"estate\": \"<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/estates")
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 \"estate\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "MidlandEstate",
"name": "<string>",
"name_en": "<string>",
"url": "<string>",
"url_zh_cn": "<string>",
"url_en": "<string>",
"estate_type": "<string>",
"building_type": "<string>",
"is_phase": true,
"is_hos": true,
"address": "<string>",
"highlights": "<string>",
"facilities_text": "<string>",
"rating": 123,
"developer": "<string>",
"vendor": "<string>",
"management_company": "<string>",
"op_date_text": "<string>",
"first_op_at": 123,
"last_op_at": 123,
"land_lease_text": "<string>",
"block_count_text": "<string>",
"storey_text": "<string>",
"total_flats_text": "<string>",
"total_phase_text": "<string>",
"sell_count": 123,
"rent_count": 123,
"min_price": 123,
"max_price": 123,
"min_rent": 123,
"max_rent": 123,
"avg_net_ft_price": 123,
"min_net_ft_price": 123,
"max_net_ft_price": 123,
"avg_net_ft_rent": 123,
"min_net_ft_rent": 123,
"max_net_ft_rent": 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
},
"room_stats": [],
"room_market_stats": [],
"census": {
"@type": "MidlandEstateCensus",
"population": 123,
"median_age": 123,
"age_0_14": 123,
"age_15_24": 123,
"age_25_44": 123,
"age_45_64": 123,
"age_65_plus": 123,
"education_primary_and_below": 123,
"education_secondary": 123,
"education_post_secondary": 123,
"household_count": 123,
"avg_household_size": 123,
"median_household_income": 123,
"median_active_household_income": 123,
"median_mortgage_payment": 123,
"mortgage_to_income_percent": 123,
"median_rent": 123,
"rent_to_income_percent": 123,
"owner_with_mortgage_percent": 123,
"owner_without_mortgage_percent": 123,
"sole_tenant_percent": 123,
"working_population": 123,
"managers_and_administrators": 123,
"professionals": 123,
"associate_professionals": 123,
"clerical_support_workers": 123,
"service_and_sales_workers": 123,
"other_occupations": 123
},
"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>"
}
},
"location": {
"@type": "MidlandLocation",
"latitude": 123,
"longitude": 123
},
"school_net": {
"@type": "MidlandSchoolNet",
"kindergarten_id": "<string>",
"kindergarten_name": "<string>",
"primary_id": "<string>",
"primary_name": "<string>",
"secondary_id": "<string>",
"secondary_name": "<string>"
},
"primary_schools": [],
"secondary_schools": [],
"mtr_lines": [],
"mtr_stations": [],
"amenities": [],
"facility_groups": [],
"features": [],
"top_estates": [],
"phases": [],
"other_phases": [],
"photos": [],
"site_plans": [],
"videos": [],
"floor_plans": [],
"branches": [],
"recent_sale_transactions": [],
"recent_rent_transactions": [],
"sale_listings_url": "<string>",
"rent_listings_url": "<string>",
"transactions_url": "<string>",
"transaction_history_url": "<string>",
"news_url": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/midland/estates
Get the full profile of one Hong Kong residential estate (屋苑) or estate phase by id (or estate URL). Returns the estate name in Chinese and English, type, address, generated description, developer, vendor, occupation dates per phase, land-lease term, block and storey breakdown, total units and blocks, live listing counts with price and rent ranges and averages per bedroom count, the saleable-area price index with month-on-month change and deal counts, the eight-level geography and coordinates, school nets with named primary and secondary schools, MTR lines and stations, walkable amenities, estate facilities and features such as pet policy, every phase with its buildings, photos, site plans, videos, the full floor plan library, nearby Midland branches, and the most recent sale and rental deals in the estate.
Price: 20 credits
⚠️ Common errors: 412: No estate or phase with this id.
curl --request POST \
--url https://api.anysite.io/api/midland/estates \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"estate": "<string>",
"timeout": 300,
"lang": "zh-hk",
"unit": "feet",
"currency": "HKD"
}
'import requests
url = "https://api.anysite.io/api/midland/estates"
payload = {
"estate": "<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({estate: '<string>', timeout: 300, lang: 'zh-hk', unit: 'feet', currency: 'HKD'})
};
fetch('https://api.anysite.io/api/midland/estates', 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/estates",
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([
'estate' => '<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/estates"
payload := strings.NewReader("{\n \"estate\": \"<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/estates")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"estate\": \"<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/estates")
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 \"estate\": \"<string>\",\n \"timeout\": 300,\n \"lang\": \"zh-hk\",\n \"unit\": \"feet\",\n \"currency\": \"HKD\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "MidlandEstate",
"name": "<string>",
"name_en": "<string>",
"url": "<string>",
"url_zh_cn": "<string>",
"url_en": "<string>",
"estate_type": "<string>",
"building_type": "<string>",
"is_phase": true,
"is_hos": true,
"address": "<string>",
"highlights": "<string>",
"facilities_text": "<string>",
"rating": 123,
"developer": "<string>",
"vendor": "<string>",
"management_company": "<string>",
"op_date_text": "<string>",
"first_op_at": 123,
"last_op_at": 123,
"land_lease_text": "<string>",
"block_count_text": "<string>",
"storey_text": "<string>",
"total_flats_text": "<string>",
"total_phase_text": "<string>",
"sell_count": 123,
"rent_count": 123,
"min_price": 123,
"max_price": 123,
"min_rent": 123,
"max_rent": 123,
"avg_net_ft_price": 123,
"min_net_ft_price": 123,
"max_net_ft_price": 123,
"avg_net_ft_rent": 123,
"min_net_ft_rent": 123,
"max_net_ft_rent": 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
},
"room_stats": [],
"room_market_stats": [],
"census": {
"@type": "MidlandEstateCensus",
"population": 123,
"median_age": 123,
"age_0_14": 123,
"age_15_24": 123,
"age_25_44": 123,
"age_45_64": 123,
"age_65_plus": 123,
"education_primary_and_below": 123,
"education_secondary": 123,
"education_post_secondary": 123,
"household_count": 123,
"avg_household_size": 123,
"median_household_income": 123,
"median_active_household_income": 123,
"median_mortgage_payment": 123,
"mortgage_to_income_percent": 123,
"median_rent": 123,
"rent_to_income_percent": 123,
"owner_with_mortgage_percent": 123,
"owner_without_mortgage_percent": 123,
"sole_tenant_percent": 123,
"working_population": 123,
"managers_and_administrators": 123,
"professionals": 123,
"associate_professionals": 123,
"clerical_support_workers": 123,
"service_and_sales_workers": 123,
"other_occupations": 123
},
"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>"
}
},
"location": {
"@type": "MidlandLocation",
"latitude": 123,
"longitude": 123
},
"school_net": {
"@type": "MidlandSchoolNet",
"kindergarten_id": "<string>",
"kindergarten_name": "<string>",
"primary_id": "<string>",
"primary_name": "<string>",
"secondary_id": "<string>",
"secondary_name": "<string>"
},
"primary_schools": [],
"secondary_schools": [],
"mtr_lines": [],
"mtr_stations": [],
"amenities": [],
"facility_groups": [],
"features": [],
"top_estates": [],
"phases": [],
"other_phases": [],
"photos": [],
"site_plans": [],
"videos": [],
"floor_plans": [],
"branches": [],
"recent_sale_transactions": [],
"recent_rent_transactions": [],
"sale_listings_url": "<string>",
"rent_listings_url": "<string>",
"transactions_url": "<string>",
"transaction_history_url": "<string>",
"news_url": "<string>"
}
]{
"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