Property Price and Sales (ASIA)

PRPSLS961· 610K records · 11 tables · v1.0.0 · Updated 2026-08-11
Real Estate Development Real Estate Development Dataset API
CSV JSON SQLpropertyresidentialprice-indextransactionsrentsasiatime-seriesmarket-cycles

Overview

A decade of residential property in ten Asian cities at transaction grain. The cities are real; everything below them is generated: 321 districts in each city's own naming idiom, 60 developers, 1,497 projects, and every price, rent, index and volume. Each city runs its own decade, shaped like the cycles the region lived and stated generically: one market peaks in 2019 and never recovers it, one cools hard after a 2021 spike and only partly rebuilds, one climbs steadily throughout, the Southeast Asian volume markets crawl, one booms then hits a 2022 credit squeeze, and the 2020 pandemic year cuts transaction volume in every city while prices barely blink. Cooling measures appear as dated policy events with invented rates, and foreign-buyer share falls after every buyer-stamp-duty event in the city it applies to. Transactions carry project, district, unit type, floor band, area with its unit, local and USD prices, price per square metre, buyer profile and sale type. The city price index is the exact median price per square metre of that month's transactions, the annual summary is the exact transaction aggregate, and the build re-verifies both; district indices and rents with gross yields sit on the same geography. Built for price-index analytics, market-cycle modelling, policy-impact studies, ETL pipelines and BI logic. The licence and disclosure sections state the provenance of the data.

Row Counts by Table

Counted from the files that ship, not estimated.

TableRows
prp_transactions444,957
prp_price_index1,260
prp_district_index40,446
prp_rents121,146
prp_projects1,497
prp_districts321
prp_developers60
prp_cities10
prp_supply_pipeline330
prp_policy_events13
prp_city_annual110

Table Relationships

One parent record and seven child tables, each joined back on the same key.

70%
Loading diagram

Schema

Every table ships with typed columns, referential integrity, and documentation.

prp_transactions· Rows: 444,957
ColumnTypeDescription
transaction_idvarchar(16)Transaction key. Primary key. A few pairs are exact double-posts, on purpose.
project_idvarchar(8)The project the unit belongs to.
district_idvarchar(16)The district of the project, denormalised.
city_codevarchar(8)The city, denormalised.
year_monthvarchar(16)Month of the transaction, 2016-01 to 2026-06. Import as text: spreadsheets convert values like 2021-05 to dates.
unit_typevarchar(16)STUDIO, 1BR, 2BR, 3BR or 4BR_PLUS.
floor_bandvarchar(16)LOW, MID, HIGH or PENTHOUSE.

+9 more columns in prp_transactions. The full schema ships with the download.

prp_price_index· Rows: 1,260
ColumnTypeDescription
index_idvarchar(8)Index row key. Primary key.
city_codevarchar(8)The city the index measures.
year_monthvarchar(16)Month of the index. Import as text.
median_psm_localnumeric(13,2)The exact median price per square metre of the month transactions, in the city currency. Re-verified by the build.
currencyvarchar(16)ISO 4217 currency code.
transaction_countintegerTransactions behind the median that month.
yoy_change_pctnumeric(5,1)Change against the same month one year earlier, in percent. Empty in the first year.

+1 more columns in prp_price_index. The full schema ships with the download.

prp_district_index· Rows: 40,446
ColumnTypeDescription
district_index_idvarchar(16)District index key. Primary key.
district_idvarchar(16)The district the index measures.
year_monthvarchar(16)Month of the index. Import as text.
index_psm_localnumeric(13,2)Modelled price per square metre for the district, in the city currency.
currencyvarchar(16)ISO 4217 currency code.
prp_rents· Rows: 121,146
ColumnTypeDescription
rent_idvarchar(16)Rent row key. Primary key.
district_idvarchar(16)The district the rent measures.
year_monthvarchar(16)Month of the rent. One city is deliberately missing two months. Import as text.
bedroom_typevarchar(16)1BR, 2BR or 3BR.
median_monthly_rent_localintegerMedian monthly rent in the city currency.
currencyvarchar(16)ISO 4217 currency code.
gross_yield_pctnumeric(5,2)Gross rental yield in percent, inverse to the price level.

+1 more columns in prp_rents. The full schema ships with the download.

prp_projects· Rows: 1,497
ColumnTypeDescription
project_idvarchar(8)Project key. Primary key.
district_idvarchar(16)The district the project sits in.
developer_idvarchar(8)The developer of the project.
project_namevarchar(40)Generated project name from the district name and a generic suffix.
project_typevarchar(16)condominium, apartment, mixed_use or landed.
total_unitsintegerUnits in the project.
completion_yearintegerYear the project completes; sales before it are presales.

+3 more columns in prp_projects. The full schema ships with the download.

prp_districts· Rows: 321
ColumnTypeDescription
district_idvarchar(16)District key. Primary key. Every district is a generated name in the city idiom; one is renamed mid-series into a second id.
city_codevarchar(8)The city the district sits in.
district_namevarchar(24)Generated district name. Collisions with real district names of the ten cities are a build failure.
zone_typevarchar(16)core, inner, suburban or fringe.
land_area_km2numeric(6,2)Generated land area in square kilometres.
price_factornumeric(5,2)Price multiple of the district against the city base level.
prp_developers· Rows: 60
ColumnTypeDescription
developer_idvarchar(8)Developer key. Primary key.
developer_namevarchar(32)Generated developer name. Collisions with real developers and agencies are a build failure.
home_city_codevarchar(8)The city the developer is based in.
founded_yearintegerYear the developer was founded.
ownership_typevarchar(16)listed, private or state_linked.
prp_cities· Rows: 10
ColumnTypeDescription
city_codevarchar(8)City key. Primary key. The ten cities are the only real geography in the dataset.
city_namevarchar(24)The city in words.
country_codevarchar(8)ISO 3166-1 alpha-2 country code.
currencyvarchar(16)ISO 4217 currency code.
market_maturityvarchar(16)PRIME or EMERGING, the axis price levels and yields follow.
customary_area_unitvarchar(16)SQM or SQFT: the unit the city trade press quotes. The documented unit-mixing defect lives in the SQFT cities.
city_descriptionvarchar(136)What is generated below this city.

+1 more columns in prp_cities. The full schema ships with the download.

prp_supply_pipeline· Rows: 330
ColumnTypeDescription
supply_idvarchar(8)Supply row key. Primary key.
city_codevarchar(8)The city.
yearintegerCompletion year.
segmentvarchar(16)mass_market, mid_tier or luxury.
units_completingintegerUnits completing that year in the segment.
prp_policy_events· Rows: 13
ColumnTypeDescription
event_idvarchar(8)Event key. Primary key.
city_codevarchar(8)The city the measure applies to.
year_monthvarchar(16)Month the measure took effect. Import as text.
event_typevarchar(24)The measure class: buyer_stamp_duty, lending_rule, tax_incentive, stamp_duty_cut, transaction_tax, ownership_campaign or credit_squeeze.
event_descriptionvarchar(80)The measure in generic words with an invented rate.
rate_change_pctintegerThe invented rate change in percentage points. Empty when the measure is not a rate.
prp_city_annual· Rows: 110
ColumnTypeDescription
annual_idvarchar(8)Annual row key. Primary key.
city_codevarchar(8)The city.
yearintegerCalendar year.
transaction_countintegerThe exact transaction count for the year. Re-verified by the build.
median_psm_localnumeric(13,2)The exact median price per square metre for the year, in the city currency.
currencyvarchar(16)ISO 4217 currency code.
median_psm_usdnumeric(9,2)The same median converted to US dollars.

+1 more columns in prp_city_annual. The full schema ships with the download.

Sample Data

A snapshot of real rows from the dataset (values are fully synthetic).

transaction_idproject_idcity_codeyear_monthunit_typefloor_bandarea_valuearea_unitprice_localcurrencybuyer_profile
TX000001PJ0064SIN2016-01STUDIOPENTHOUSE35.4SQM844153SGDforeign_individual
TX000002PJ0059SIN2016-01STUDIOLOW43.6SQM945670SGDlocal_individual
TX000003PJ0084SIN2016-011BRMID53SQM1166429SGDlocal_individual

city_code codes

Every code this dataset uses, with what it means. The same mapping ships in the files.

city_codecity_namecurrencymarket_maturitycustomary_area_unit
BKKBangkokTHBEMERGINGSQM
HCMHo Chi Minh CityVNDEMERGINGSQM
HKGHong KongHKDPRIMESQFT
JKTJakartaIDREMERGINGSQM
KULKuala LumpurMYREMERGINGSQFT
MNLManilaPHPEMERGINGSQM
SELSeoulKRWPRIMESQM
SINSingaporeSGDPRIMESQM
TPETaipeiTWDPRIMESQM
TYOTokyoJPYPRIMESQM

Version History

v1.0.02026-08-11First release. Ten cities on ten market cycles, 444,957 transactions, exact monthly price indices, district indices, rents with yields, supply pipeline and policy events, 2016-01 to 2026-06.

Related Datasets