Overview
The property object is the core data structure containing all information about a real estate listing. It is accessed via data.property in the JSON response.
Top-Level Structure
Property data is returned in a nested structure:
Top-level wrapper object Contains all property listing information
Structured data for UI icon displays (building, distribution, other details)
Points of interest near the property (shopping centers, supermarkets, parks)
Indicates if the request was successful
Property Object Fields
The data.property object contains the following fields:
Identification
Unique identifier for the property Example: "bbb8185d-2ee3-48a4-ba7f-8fecaba6e549"
Numeric property identifier Example: "5157395"
Node ID from the source system Example: 49695472717
Property listing title Example: "Apartamento en Venta en Las Cabañas, Bello"
Detailed property description including features, location, and nearby amenities Example: "Apartamento en venta de 79m2, con vista exterior..."
Array of image objects for the property. See Image Schema for details. Images are sorted by the order field before display.
URL to a 360-degree virtual tour of the property Example: "https://apartamento-dubai.vercel.app/?m=bE7cSwnyKad"
Services & Features
Array of utility service objects with costs. See Services Schema for details.
caracteristicas_propiedad
Array of property feature strings Example: ["Interior", "Balcón", "Conjunto Cerrado", "Instalación de gas"]
Property Details
Nested object containing detailed property information Property area in square meters (m²) Example: 79.0
Property type Example: "Apartamento", "Casa", "Local Comercial"
Socioeconomic stratum (1-6 in Colombia) Example: "3"
Building or complex name Example: "Dubai"
Alternative field for building/complex name
Street address Example: "CARRERA 58AA 31-166"
Neighborhood name Example: "Las Cabañas"
City name Example: "Bello"
Metropolitan area Example: "Valle de Aburrá"
Mid-level zone classification Example: "LA CABAÑA"
Sale price in Colombian pesos (COP) Example: 328000000.0
Previous price if the property was discounted Example: null (no previous price)
Discount percentage if applicable
Number of bedrooms Example: 3
Number of bathrooms Example: 2
Number of parking spaces Example: 0
Alternative field for floor number Example: 5
Number of elevators in the building Example: 0
Property age in years Example: 10
Remodeling status (0 = not remodeled, 1 = remodeled) Example: 0
Monthly administration/HOA fee in COP Example: 0
Latitude coordinate Example: 6.319948999999999
Longitude coordinate Example: -75.565495
Contact phone number Example: "3015637932"
Alternative zone contact number Example: "+57 3025673648"
Internal inventory type identifier Example: 2
Property lifecycle status identifier Example: 2
Publication status (2 = published) Example: 2
Private listing flag (0 = public, 1 = private) Example: 1
Publication date and time Example: "2025-12-30 12:08:20"
Full publication timestamp Example: "2025-12-30 12:08:20"
Data Normalization
The normalizeProperty() function in app.js transforms the raw property data into a flattened structure for easier rendering:
const normalizeProperty = ( raw ) => {
const property = raw ?. property || raw ?. data ?. property || raw ;
const details = property ?. detalles_propiedad || {};
return {
titulo: property ?. titulo ,
descripcion: property ?. descripcion ,
tipo_inmueble: details ?. tipo_inmueble || property ?. tipo_inmueble ,
estrato: details ?. estrato || property ?. estrato ,
precio: details ?. precio_venta ?? property ?. precio ,
area_privada: details ?. area ?? property ?. area_privada ,
habitaciones: details ?. num_habitaciones ?? property ?. habitaciones ,
banos: details ?. baños ?? details ?. banos ?? property ?. banos ,
// ... additional fields
};
};
Key Normalization Rules
Field Merging : Top-level and detalles_propiedad fields are merged, with detalles_propiedad taking precedence
Fallback Values : Multiple field names are checked (e.g., conjunto, conjunto_edificio)
Image Sorting : Images are sorted by the order field ascending
Null Coalescing : Uses ?? operator to handle null/undefined values
Example Response
{
"data" : {
"property" : {
"property_uuid" : "bbb8185d-2ee3-48a4-ba7f-8fecaba6e549" ,
"property_id" : "5157395" ,
"nid" : 49695472717 ,
"titulo" : "Apartamento en Venta en Las Cabañas, Bello" ,
"descripcion" : "Apartamento en venta de 79m2, con vista exterior..." ,
"url_360" : "https://apartamento-dubai.vercel.app/?m=bE7cSwnyKad" ,
"images" : [ ... ],
"servicios" : [ ... ],
"caracteristicas_propiedad" : [ "Interior" , "Balcón" ],
"detalles_propiedad" : {
"area" : 79.0 ,
"tipo_inmueble" : "Apartamento" ,
"precio_venta" : 328000000.0 ,
"num_habitaciones" : 3 ,
"baños" : 2 ,
"ciudad" : "Bello"
}
}
},
"success" : true
}
Usage in Application
The property data is loaded and rendered in app.js:665-687:
const loadData = async () => {
initLightbox ();
if ( window . PROPERTY_DATA ) {
populatePage ( window . PROPERTY_DATA );
return ;
}
const response = await fetch ( './property-5157395.json' );
const data = await response . json ();
populatePage ( data );
};