hk_property_market_monthly
Monthly HK price medians and sales volumes by district and building
Download a file
CSV and Parquet. Filtered exports.
See pricingQuery with SQL
DBeaver, DuckDB, MotherDuck, or HTTPS. Sub-second latency.
Open connection detailsConnect to AI
MCP for Claude Desktop, Cursor, ChatGPT, Goose. 1-line install.
See setupActual monthly property-market aggregates computed directly from registered sales (no modelling or prediction) at three grains: whole Hong Kong, by district, and by building. Median price, median/quartile saleable and median gross $/sqft, and transaction count per month. Known non-residential sales (car parks, commercial, industrial) are excluded; older rows whose class is unknown are kept. Medians are mix-sensitive: they reflect the composition of what sold each month, not constant-quality price movement — subsidised-sale (HOS) registration waves at roughly half private-market $/sqft can move a single month's pooled median by more than 10%, so month-over-month deltas must not be read as market appreciation. p25/p75 ship alongside so the spread is visible. The in-progress current calendar month is kept but flagged month_is_complete = false; even a complete month keeps gaining late-registered sales for a few weeks.
Evaluate it in full below: the evidence and a working sample are open to everyone. Buy or subscribe to unlock the complete dataset — your account is created automatically at checkout.
The evidence
Schema & column quality (11 columns)
Scroll table sideways to see more columns →
| Column | Type | Description | Populated | Distinct |
|---|---|---|---|---|
| scope | String | Aggregation grain: hk (whole territory), district, or building | — | — |
| scope_key | String | Empty for hk; district name for district; building_code for building. 'Unknown' where the sale could not be placed in that scope, and it means something different in each: in the district scope, the sale's building is not yet in our building register or is there without a district; in the building scope, the sale carries no building code at all (a sale whose building is missing from the register still gets its own row under its real building_code). Such sales are counted in an 'Unknown' row rather than dropped, so summing any scope's tx_count for a month reproduces the hk row's; the tx_count on the 'Unknown' row is how much of that month is unattributed. | — | — |
| month | Date | Month of registration (first-of-month date) | — | — |
| median_price_hkd | Nullable(Float64) | Median transacted price (HK$) for the scope and month | — | — |
| median_ppsf_saleable | Nullable(Float64) | Median price per saleable square foot (HK$/sqft); mix-sensitive — see the dataset description | — | — |
| p25_ppsf_saleable | Nullable(Float64) | 25th-percentile price per saleable square foot (HK$/sqft) — with p75, shows the month's spread so mix swings are visible | — | — |
| p75_ppsf_saleable | Nullable(Float64) | 75th-percentile price per saleable square foot (HK$/sqft) | — | — |
| median_ppsf_gross | Nullable(Float64) | Median price per gross square foot (HK$/sqft) | — | — |
| tx_count | Int64 | Number of registered sales in the scope and month (known non-residential excluded) | — | — |
| month_is_complete | Bool | True if the month had fully elapsed at build time; false only for the in-progress current calendar month (which under-reports). Does not account for registration lag on already-complete months. | — | — |
| id | String | Stable unique identifier for this row — the last column of every export. Use it to deduplicate, to key an incremental load, or to reference one specific row. It is additive: the entity and join keys you already use (scope, scope_key and month) are unchanged. | — | — |
The most recent months of aggregates at every scope (whole Hong Kong, each district, each building), full schema. The current month is included and flagged month_is_complete = false.
Choose your access
A Pass gives you freshness within a rolling window. The Full Archive gives you the full history we hold for the dataset, frozen at purchase. They solve different problems, and they work together.
Pass subscription
Hong Kong Property — Property Pass
Continuously updated, with API access.
View full package →- Access window
- Full history (no window)
- Updates
- Continuous, within hours of the source
- Delivery
- API, SQL and downloads
- Exports
- 1,000,000 rows/month included
Included Datasets
Get notified when this dataset is updated.
Questions about this data?
Our data experts are ready to help clarify any aspects of this dataset.
Contact Our Team