Residential properties with a renovation detected in their listing history. One row per property, 31 columns, with bedrooms, bathrooms, floor area and property type before and after. This is the table behind the Canada Renovated Homes & House Flip Signals listing on the Snowflake Marketplace.
Each row is one residential property whose listing history shows a renovation: the home came back to market with a bedroom added or removed, a bathroom added, floor area changed, a pool added or removed, a change of property type, or a price step that a plain relist does not explain. The row carries the number of renovations detected, the asking-price uplift across the most recent one, and the property's attributes as first observed and as last observed, side by side, so the change is visible without a join. Listing counts, days on market and sale-side price cuts come with it, and investor flags are included where the same property also behaves like an investment.
The table is a view over the Canada Property Master File, so every column here has the same meaning there and the two join on the property identifier. Column names are as they appear in the Snowflake listing.
| Field | Type | Description |
|---|---|---|
PROPERTY_ID | Text | Persistent property identifier. The same identifier the property carries in the Canada Property Master File, so the two tables join on it directly. |
ADDRESS | Text | Standardized street address, upper case, unit first where there is one. |
CITY | Text | City or municipality, upper case. |
PROVINCE | Text | Province or territory, two-letter code. |
POSTAL_CODE | Text | Canadian postal code. |
FSA | Text | Forward sortation area: the first three characters of the postal code. |
| Field | Type | Description |
|---|---|---|
RENO_COUNT | Text | Number of renovations detected in the property's listing history. Every row has at least one. |
RENO_PRICE_UPLIFT_PCT | Text | Change in asking price across the renovation, as a percentage of the asking price before it. Kept as calculated; a listing with a placeholder asking price on one side produces an outlier, so band the column when ranking. |
| Field | Type | Description |
|---|---|---|
BEDS_FIRST | Text | Bedrooms as published on the first listing observed. Kept as published, so values like 4 + 1 appear. |
BEDS_LATEST | Text | Bedrooms as published on the most recent listing. |
BATHS_FIRST | Text | Bathrooms as published on the first listing observed. |
BATHS_LATEST | Text | Bathrooms as published on the most recent listing. |
SQFT_FIRST | Text | Floor area as published on the first listing observed, in the unit the listing used. |
SQFT_LATEST | Text | Floor area as published on the most recent listing, in the unit the listing used. |
PTYPE_FIRST | Text | Property type as published on the first listing observed. |
PTYPE_LATEST | Text | Property type as published on the most recent listing (Single Family, Condo, Multi-family, Vacant Land, Parking, Agriculture, Recreational). |
| Field | Type | Description |
|---|---|---|
FIRST_SEEN | Text | Date the property was first observed on the market, in any listing. |
LAST_SEEN | Text | Date the property was last observed on the market. |
CURRENTLY_ACTIVE | Text | Values t or f. Whether the property was on the market, for sale or for rent, at the most recent weekly refresh. |
SALE_LISTINGS | Text | Number of times the property has been listed for sale since March 2014. |
RENT_LISTINGS | Text | Number of times the property has been listed for rent since March 2014. |
LISTING_CAMPAIGNS | Text | Number of distinct listing campaigns across both markets. A relist after a short gap stays inside the same campaign; a return after a long gap starts a new one. |
LIFETIME_DOM | Text | Total days on market across every listing of the property. |
DARK_DAYS | Text | Total days the property spent off the market between campaigns. |
| Field | Type | Description |
|---|---|---|
SALE_PRICE_CUTS | Text | Number of asking-price reductions across the property's sale listings. |
SALE_CUT_PCT_OF_PEAK | Text | The deepest reduction as a percentage of the peak asking price. |
SALE_NET_CUT_DOLLARS | Text | Dollars cut from the peak asking price to the latest asking price. |
| Field | Type | Description |
|---|---|---|
INVESTOR_FLAGS | Text | Investor flags the property also carries, separated by semicolons, or empty. Defined on the Investor Signals schema. |
EVER_DUAL_LISTED | Text | Values t or f. Whether the property has ever been listed for sale and for rent at the same time. |
ASKING_GROSS_YIELD_PCT | Text | Latest asking rent, annualized, as a percentage of the latest asking price. Filled only where both exist. |
ASKING_PRICE_TO_RENT | Text | Latest asking price divided by the latest annual asking rent. Filled only where both exist. |
A renovation is read from what changed between two listings of the same home: a bedroom added or removed, a bathroom added, floor area changed, a pool added or removed, a change of property type, or a price step that a plain relist does not explain. The count is the number of such events in the property's history; the uplift is the asking-price change across the most recent one. The row shows bedrooms, bathrooms, floor area and property type before and after; pool and the other listing attributes behind the detection are in the full Listings file.
Permits, assessments and sales records record renovation late or not at all. Listing history records it the week the home comes back to market.
TRY_TO_NUMBER() and dates with TRY_TO_DATE().TRY_TO_NUMBER(LEFT(BEDS_LATEST, 1)).RENO_PRICE_UPLIFT_PCT when ranking, for example between 0 and 200, to keep placeholder-price outliers out of the top of the list.PROPERTY_ID, or to any address file on ADDRESS and POSTAL_CODE, both upper case.The file this table is drawn from: one record per residential property with its full listing history.
Product page →Reading a renovation or a flip from what changed between two listings of the same home.
Read →