curl --request POST \
--url https://api.anysite.io/api/28hse/estates/transactions \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"estate": "<string>",
"count": 2,
"timeout": 300,
"site": "28hse",
"lang": "tc",
"deal_type": "sale",
"phase_no": "<string>"
}
'import requests
url = "https://api.anysite.io/api/28hse/estates/transactions"
payload = {
"estate": "<string>",
"count": 2,
"timeout": 300,
"site": "28hse",
"lang": "tc",
"deal_type": "sale",
"phase_no": "<string>"
}
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>',
count: 2,
timeout: 300,
site: '28hse',
lang: 'tc',
deal_type: 'sale',
phase_no: '<string>'
})
};
fetch('https://api.anysite.io/api/28hse/estates/transactions', 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/28hse/estates/transactions",
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>',
'count' => 2,
'timeout' => 300,
'site' => '28hse',
'lang' => 'tc',
'deal_type' => 'sale',
'phase_no' => '<string>'
]),
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/28hse/estates/transactions"
payload := strings.NewReader("{\n \"estate\": \"<string>\",\n \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\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/28hse/estates/transactions")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"estate\": \"<string>\",\n \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/28hse/estates/transactions")
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 \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"@type": "Hse28EstateTransaction",
"id": "<string>",
"url": "<string>",
"estate": "<string>",
"address": "<string>",
"transaction_at": 123,
"transaction_type": "<string>",
"room_count": 123,
"saleable_area": 123,
"price": 123,
"price_per_sqft": 123,
"profit_loss_percent": 123,
"unit_id": "<string>",
"phase_no": "<string>",
"block_no": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/28hse/estates/transactions
List the recorded sale or letting transactions of one Hong Kong estate (屋苑). Each row returns the deal id and page URL where the source publishes one, the estate name, the address down to the block, floor and flat, the transaction date, whether the record comes from the Land Registry or from market reporting, the bedroom count, the saleable area in square feet, the price in HKD with the price per saleable square foot, and — where the unit changed hands before — the profit or loss percentage against the previous sale. Rows for units with a recorded history also carry the phase, block and unit numbers that 28hse/estates/units expands into that unit’s full price chain.
Price: 5 credits per 20 results
curl --request POST \
--url https://api.anysite.io/api/28hse/estates/transactions \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"estate": "<string>",
"count": 2,
"timeout": 300,
"site": "28hse",
"lang": "tc",
"deal_type": "sale",
"phase_no": "<string>"
}
'import requests
url = "https://api.anysite.io/api/28hse/estates/transactions"
payload = {
"estate": "<string>",
"count": 2,
"timeout": 300,
"site": "28hse",
"lang": "tc",
"deal_type": "sale",
"phase_no": "<string>"
}
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>',
count: 2,
timeout: 300,
site: '28hse',
lang: 'tc',
deal_type: 'sale',
phase_no: '<string>'
})
};
fetch('https://api.anysite.io/api/28hse/estates/transactions', 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/28hse/estates/transactions",
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>',
'count' => 2,
'timeout' => 300,
'site' => '28hse',
'lang' => 'tc',
'deal_type' => 'sale',
'phase_no' => '<string>'
]),
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/28hse/estates/transactions"
payload := strings.NewReader("{\n \"estate\": \"<string>\",\n \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\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/28hse/estates/transactions")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"estate\": \"<string>\",\n \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/28hse/estates/transactions")
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 \"count\": 2,\n \"timeout\": 300,\n \"site\": \"28hse\",\n \"lang\": \"tc\",\n \"deal_type\": \"sale\",\n \"phase_no\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"@type": "Hse28EstateTransaction",
"id": "<string>",
"url": "<string>",
"estate": "<string>",
"address": "<string>",
"transaction_at": 123,
"transaction_type": "<string>",
"room_count": 123,
"saleable_area": 123,
"price": 123,
"price_per_sqft": 123,
"profit_loss_percent": 123,
"unit_id": "<string>",
"phase_no": "<string>",
"block_no": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
x >= 120 <= x <= 150028hse, squarefoot tc, cn, en sale, rent Response
Successful Response