hk_property_units

PREMIUM 1,269,493 rows

Individual flats with block, floor, flat and floor areas

Also on crescira.com →

Individual flats/units, the lowest tier of the property hierarchy, built from each unit's most recent registered sale (Centaline publishes no separate unit list). Block, floor, flat and latest known saleable and gross areas, plus model-ready fields: a parsed integer floor_number, the unit's position in its building's grid (unit_grid_x/unit_grid_y, 0-based flat-column and floor ordinals — for per-building flat-grid heatmaps and as hedonic-model features), and ratio-imputed areas flagged by the *_is_imputed columns.

Premium dataset

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.

See access options

The evidence

Data coverage
Jul 1995 – present
Volume
1,269,493 rows
Last refreshed
15 October, 2026 (3 days ago)
Data through
15 October, 2026 (3 days ago)
Schema & column quality (22 columns)

Scroll table sideways to see more columns →

Column Type Description Populated Distinct
unit_code String Centaline unit code — primary identifier — —
building_code Nullable(String) Centaline building code — links to hk_property_buildings — —
centa_unit_id Nullable(Int64) Stable numeric Centaline unit id — an integer alternate key; null for units seen only in records that carry no numeric id — —
block Nullable(String) Block/tower label (English); NULL whenever the label carries no information beyond the building's own name (each tower is its own building, so this is almost always NULL) — —
floor Nullable(String) Floor designation (e.g. 30/F) — —
flat Nullable(String) Flat/unit designation (e.g. FLAT C); where a unit's own sales predate the flat-labelled feeds, the label is recovered from the frozen unit-grid master — —
flat_letter Nullable(String) Bare flat token, normalised across eras (FLAT A / A室 → A, FLAT 1 / 1室 → 1); unrecognised forms pass through; null when the raw flat label is blank. The clean structured companion to `flat` — —
floor_number Nullable(Int64) Absolute floor parsed from the floor label: 27樓/27/F/二十七樓 → 27, G/F and 地下 → 0, basements negative, ranges (14-15樓) → the lower bound; null where only a band (high/middle/low) or a special named floor (see named_floor) was reported — —
floor_band Nullable(String) Coarse floor band ('high'/'middle'/'low') when no floor number could be resolved (from the observed label or the frozen unit grid) — mutually exclusive with floor_number; null otherwise — —
named_floor Nullable(String) Canonical token for a special floor that carries no integer floor (M/F, P/H, Podium, B/M, Roof) — mutually exclusive with floor_number. Compose a display label as coalesce(named_floor, floor_number || '/F'); null for ordinary numbered floors and non-floor labels — —
unit_grid_x Nullable(Int64) Building-grid column position of the unit (0-based flat-column ordinal). Native Centaline grid where available (~90% of units, stable), else a derived rank over flat labels — see unit_grid_source — —
unit_grid_y Nullable(Int64) Building-grid floor position of the unit (0-based, dense, basement-aware) — the per-building floor rank; pairs with unit_grid_x for a per-building flat-grid heatmap — —
unit_grid_source Nullable(String) 'native' (Centaline's own grid, stable) or 'derived' (ranked from parsed floors/flat labels for buildings the native grid lacks; may shift as new floors transact); reflects EITHER coordinate being populated — null only when both unit_grid_x and unit_grid_y are null — —
saleable_area_sqft Nullable(Float64) Saleable area in square feet — frozen Centaline unit masters first, else transaction-reported, else ratio-imputed (see saleable_area_is_imputed) — —
saleable_area_source Nullable(String) Provenance of saleable_area_sqft — 'unit_master' (frozen Centaline unit dumps), 'transaction' (latest sale reported it), 'imputed' (per-building ratio); null when unknown — —
saleable_area_is_imputed Bool True when saleable_area_sqft was imputed from the building's mean gross/saleable ratio (mirrors saleable_area_source = 'imputed') — —
gross_area_sqft Nullable(Float64) Gross area in square feet — frozen Centaline unit masters first, else transaction-reported, else ratio-imputed (see gross_area_is_imputed) — —
gross_area_source Nullable(String) Provenance of gross_area_sqft — 'unit_master', 'transaction' or 'imputed' (see saleable_area_source); null when unknown — —
gross_area_is_imputed Bool True when gross_area_sqft was imputed from the building's mean gross/saleable ratio (mirrors gross_area_source = 'imputed') — —
building_gross_saleable_ratio Nullable(Float64) Per-building mean gross/saleable ratio used for area imputation (from units carrying both areas, bounded 1.0–2.0, ≥5 supporting units); null where insufficient support — —
updated_at Nullable(Date) Date of the most recent transaction for this unit — —
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 (unit_code) are unchanged. — —

Sample data

A slice of the unit register, grouped by building so whole buildings' flats sit together, full schema: block, floor, flat, floor areas and the parsed floor and grid position.

SELECT * FROM renavon_exports.hk_property_units LIMIT 50 0.02s
Loading data… | Click a header to sort; drag headers to reorder.

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.

Full refund within 14 days on subscriptions. Details →

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