ensure that repeat data do not drive estimated property prices. More sophisticated duplicate removal would include the use of text analysis techniques to understand the extent of similarity of the title or description of the property to remove those observations that have only been slightly changed during re-submission. Given the significant time effort of this technique, we opted for the more stringent data removal as a robustness test for price estimations (Annex 2).

# Data Filtering

Next, we filter the data by excluding scraped data that are clearly not residential properties. These include storing units, garages, parking lots, undeveloped or agricultural land, or commercial properties. In addition, we truncate the data on price and size to exclude data entry errors and rental data. These include, for instance, rental data likely erroneously captured as sales price, particularly for those properties that include yearly rentals, spam or negotiable listings often detectable by “1” entered as the sales prices, and random data entries on square meter data. We apply a direct data filter to remove obvious errors and undesired data to obtain the _truncated data set_ . We assume that all observations of below 9 square meters (sqm) and above 3,000 sqm are either data entry errors or properties that cannot be considered residential properties (e.g., storing units; large farmland). Also, we assume that properties of less than 9 sqm are not habitable for one person, aligning with the definition of the UN (UN-Habitat 2007). Regarding the truncation on price data, we remove any properties below 5,000 US dollars and above 50 million US dollars to account for data entry errors, rental prices that are accidentally listed as sales, as well as – a very typical feature in EMDEs – entire apartment complexes that are sold in bulk as an investment project. The major issue with apartment complexes or several apartment units being sold in bulk is the mismatch between the size and price data. Often, the price reflects the price of the overall apartment complex while the size reflects that of a single unit. Since it is often impossible to infer the actual per unit price and size, we exclude these properties to avoid distortion. While we apply a context-driven data filter to maintain as many observations as feasible in the _truncated data set_ , we also apply a more rigorous winsorization to the data, common in large data sets such as ours (e.g., Bricongne et al. 2021 _for HouseLev Data_ ). We remove the first and 99<sup>th</sup> percentile of price and size and outline how this winsorization alters summary statistics (cf. Annex 3).

# Outlier Removal

Having obtained the _truncated data set_ , we perform additional outlier removal to ensure that skewed data do not drive estimations. Heavily, positively skewed property price data seem to be particularly acute in EMDEs where very luxurious properties catering to expatriates or foreign investors are transacted. To avoid analyzing severely skewed data, we employed two different approaches: First, we right censored the data to remove luxurious residential properties that are not targeted at the local housing market. In doing so, we use Numbeo, a crowd-sourced global data platform that reports consumer prices, including private property prices in most countries’ largest cities. As Numbeo data is likely to be dominated by a bias towards data entry from higher-income individuals (with internet access), we consider Numbeo’s data maximum as the “true” maximum. Hence, we consider properties within the _truncated data set_ that exceed the _maximum_ per square meter price reported in Numbeo as an outlier. Hence, we obtain the _right censored data set_ .

Second, to avoid that outliers at both tails of the distribution are distorting our estimations, we perform multivariate outlier removal on the _truncated data set_ based on the robust Mahalanobis distance of each 15