Skip to content

Full Search By Attribute

POST /comparables/fullSearchByAttribute

Search for comparables based on filters relating to the comparable's descriptive attributes. Returns a complete response but only for Asking data (NOT Sales). For Sales data you need to call /comparables/searchByAttribute + /comparable/<uuid>.

Example Request

curl -X POST --location 'https://sandbox-comparables.realitycs.it/comparables/fullSearchByAttribute' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
--data '{
    "Filters": {
        "contractTypeID": 1,
        "categoryTypeID": null,
        "propertyTypeID": null,
        "propertyQualityID": null,
        "boundingBox": null,
        "marketZoneID": "10242",
        "omiZoneID": null,
        "municipalityID": null,
        "minRooms": null,
        "maxRooms": null,
        "minBathrooms": null,
        "maxBathrooms": null,
        "elevator": null,
        "garage": null,
        "maintenanceStatusID": null,
        "pubblicationStatusID": [
            1,
            2
        ],
        "minGrossSquareFootage": null,
        "maxGrossSquareFootage": null,
        "unitFloor": null,
        "minPrice": null,
        "maxPrice": null,
        "clientTypeID": null,
        "phoneNumberProvided": null
    },
    "Pagination": {
        "page": 1,
        "limit": 10
    },
    "Sorting": {
        "by": "date",
        "direction": "desc"
    }
}'

Example Response

{
   "_metadata": {
       "limit": 10,
       "page": 1,
       "pages": {
           "first": 1,
           "last": 15,
           "next": 2,
           "previous": null,
           "self": 1
       },
       "query": {
           "comparableType": "Offerta",
           "contractType": "Vendita",
           "marketZoneID": "10242",
           "pubblicationStatus": [
               "Nuovo",
               "Pubblicato"
           ],
           "sorting": {
               "by": "date",
               "direction": "desc"
           }
       },
       "total_count": 147,
       "request_id": "8d9711b9-3f55-4e4e-8dd6-a15342b59cc1",
       "map": "http://sandbox-comparables.realitycs.it/comparables/map/v2/8d9711b9-3f55-4e4e-8dd6-a15342b59cc1"
   },
   "items": [
       {
           "_metadata": [
               "comparabili_centralitybelt_1",
               "comparabili_heatingsystem_2",
               "comparabili_maintenancestatus_2",
               "comparabili_occupancystatus_1",
               "comparabili_propertyquality_4",
               "comparabili_pubblicationstatus_1",
               "comparabili_comparabletype_1",
               "comparabili_propertytype_1",
               "comparabili_box_?",
               "comparabili_gardentype_?",
               "comparabili_energyclass_4",
               "comparabili_cadastralregistry_?"
           ],
           "agencyID": null, // Requires permission privilege, null by default
           "attachments": {
               "coverImage": "https://images.realitycs.it/img/122812060/1773189866",
               "energyClass": null,
               "image": [
                   "https://images.realitycs.it/img/122812060/1773189866",
                   "https://images.realitycs.it/img/122812060/1773189742",
                   "https://images.realitycs.it/img/122812060/1773189772",
                   "https://images.realitycs.it/img/122812060/1773189802",
                   "https://images.realitycs.it/img/122812060/1773189828",
                   "https://images.realitycs.it/img/122812060/1773189842",
                   "https://images.realitycs.it/img/122812060/1773189852",
                   "https://images.realitycs.it/img/122812060/1773189942",
                   "https://images.realitycs.it/img/122812060/1773189874",
                   "https://images.realitycs.it/img/122812060/1773189884",
                   "https://images.realitycs.it/img/122812060/1773189892",
                   "https://images.realitycs.it/img/122812060/1773189916",
                   "https://images.realitycs.it/img/122812060/1773189928",
                   "https://images.realitycs.it/img/122812060/1773189954"
               ],
               "layout": null
           },
           "cadastralData": [ // Reserved for Sales
               {
                   "cadastralClass": null,
                   "cadastralCompartments": null,
                   "cadastralIncome": null,
                   "cadastralMapSheetNumber": null,
                   "cadastralMunicipality": null,
                   "cadastralParceSubParcelNumber": null,
                   "cadastralParcelNumber": null,
                   "cadastralPmCode": null,
                   "cadastralPropertyType": null,
                   "cadastralRegistry": null,
                   "cadastralSectionCode": null
               }
           ],
           "clientType": "Professionista",  // Populated if available
           "collectionDate": "2025-09-01T00:00:00Z",
           "comparableType": "Offerta",
           "contractTypeID": null,
           "dataOwnership": "realitycs",
           "distanceFromPoi": null, // Populated if lat and lng are in the input
           "duplicates": false,
           "duplicatesParent": false,
           "extra": { // Populated if available
               "condoFees": 1200,
               "lastCommercialUse": null,
               "showCases": null,
               "showCasesSize": null,
               "title": "Nel cuore di Brera",
               "broadbandInternet": null,
               "chimneyFlue": null,
               "fumeAspiration": null,
               "reception": null,
               "shedHeight": null,
               "disabledPeopleAccess": null,
               "securityAlarm": null,
               "garageDoorWidth": null
           },
           "features": {
               "box": null,
               "brightness": null,
               "centralityBelt": "Centrale",
               "constructionYear": 1700,
               "contructionYearNote": null,
               "description": "Nel cuore di Brera, in via Cusani, cuore pulsante della capitale meneghina, troviamo Palazzo Cagnola, uno degli stabili più prestigiosi della città, contesto di altissimo standing, stabile vincolato alle belle arti, risalente all’epoca neoclassica. \nSi accede dall’androne con volta a botte nel porticato a colonne e capitelli di granito; da qui attraverso una sontuosa scalinata che rimanda a tempi antichi ed aristocratici, oppure utilizzando gli ascensori di ultima generazione perfettamente inseriti nel contesto, veniamo condotti al secondo piano dove Centrvm Real Estate propone in vendita esclusivo appartamento di 370 mq con triplo ingresso e suggestivo patio centrale. La location, attualmente destinata ad ufficio, può essere facilmente ri-convertita in residenziale, ricavandone una meravigliosa dimora di grande sapore. \nAttualmente l’appartamento è così sviluppato: al piano di ingresso troviamo la  reception con saletta d’attesa, grande sala riunioni con soffitti affrescati, 6 grandi uffici, due bagni, il patio interno piantumato dona un grande respiro alla location; al piano superiore troviamo un ulteriore grande ufficio pluri-postazioni, un salottino, un area break/cucina, uno spazio multi-funzionale, due bagni.\nLa magistrale ristrutturazione ha privilegiato la scelta di materiale top quality, la cura spasmodica del dettaglio, la ricerca di materiali pregiati e di arredi e rivestimenti di rara ricercatezza.  \nLo stabile è dotato di palestra condominiale e di servizio di reception per l’intera giornata. Oggetto unico ed introvabile.Le immagini sono fornite al solo scopo illustrativo e non costituiscono elemento contrattuale.",
               "elevator": true,
               "energyClass": "C",
               "exposure": null,
               "facilityList": [
                   "Impianto di allarme",
                   "Fibra ottica",
                   "Porta blindata",
                   "cancello elettrico",
                   "videoCitofono"
               ],
               "fitnessForPurpose": null,
               "gardenType": null,
               "heatingSystem": "Condominiale",
               "maintenanceStatus": "Ottimo / Ristrutturato",
               "numberOfBalconies": null,
               "numberOfBathrooms": 4,
               "numberOfBuildingFloor": 3,
               "numberOfGarages": 0,
               "occupancyStatus": "Libero",
               "propertyQuality": "Lusso",
               "qualityOfFinishes": null,
               "unitFloor": null,
               "viewQuality": null
           },
           "grossSquareFootage": 370,
           "lastUpdateDate": "2025-09-01T00:00:00Z",
           "listingID": null,
           "listingUrl": "https://www.immobiliare.it/annunci/122812060/",
           "location": {
               "address": "Via Cusani",
               "district": null,
               "latitude": 45.4685,
               "longitude": 9.1845,
               "marketZone": "Duomo",
               "municipality": "Milano",
               "municipalityID": 15146,
               "province": "Milano",
               "region": "Lombardia",
               "streetNumber": "5",
               "zipCode": "20121"
           },
           "marketData": {
               "askingReductionRate": null,
               "askingReductionSteps": null,
               "municipalityVisibilityIndex": 5,
               "quarterMacroareaTrend": null,
               "quarterMicroareaTrend": null,
               "quarterMunicipalityTrend": null,
               "semesterMacroareaTrend": null,
               "semesterMicroareaTrend": null,
               "semesterMunicipalityTrend": null,
               "timeOnTheMarket": null,
               "zonalVisibilityIndex": 5
           },
           "propertyType": "Appartamento",
           "pubblicationStatus": "Nuovo",
           "realEstateRegisters": {
               "deedDate": null,
               "deedType": null,
               "folder": null,
               "generalNumber": null,
               "inventory": null,
               "notary": null,
               "particularNumber": null,
               "pdfFileUrl": null,
               "propertyRegistryId": null
           },
           "rooms": 6,
           "sourceName": "immobiliare.it",
           "subTypologyID": null,
           "typologyID": null,
           "unitGrossSquareFootage": [  // Populated if available
               {
                   "_metadata": [
                       "comparabili_unitgrosssquarefootagetype_1",
                       "comparabili_unitgrosssquarefootagefloor_?"
                   ],
                   "floor": "2",
                   "main_surface": true,
                   "surface_percentage": 100,
                   "total_surface": 370,
                   "type": "Abitazione"
               }
           ],
           "uuid": "17a0ed6e-afa4-4f82-adca-deddd3f22dda",
           "value": {
               "askingPrice": 8200000,  // Populated if searching for Asking
               "askingPricePsm": 22162, // Populated if searching for Asking
               "discount": null,
               "price": null, // Populated if searching for Sales
               "pricePsm": null, // Populated if searching for Sales
               "value": null, // Reserved for future use
               "valuePsm": null // Reserved for future use
           }
       },
{...}
   ]
}

N.B. The dates can be returned in the following two formats:

  • DD/MM/YYYYT00:00:00Z (default)
  • DD/MM/YYYY

If you want to use the second format please make a request to the Sales team.

Request Fields

Required column Meaning
* mandatory in the input
** at least one of these parameters is mandatory in the input
** optional if projects are requested (propertyTypeID 112)

Request fields

Field Required Type Example Notes
marketZoneID ** string 10242
municipalityID ** string 15146
omiZoneID ** string A074B1
boundingBox ** geojson {"type": "Polygon","coordinates": [...]}
contractTypeID * int 1 depends on comparableTypeID
propertyTypeID int 4
categoryTypeID int 2
propertyQualityID int 3
minGrossSquareFootage int 50
maxGrossSquareFootage int 120
minRooms int 1
maxRooms int 2
minPrice int 1200000
maxPrice int 2500000
minBathrooms int 1
maxBathrooms int 3
maintenanceStatusID int 2
pubblicationStatusID int 4
unitFloor float 1
elevator bool true
garage bool false
minDate string 12/01/2025
maxDate string 25/09/2025
clientTypeID int 2
phoneNumberProvided bool false
lat float '45.4775832' relative to a POI, used to calculate distance
lng float '9.1858904' relative to a POI, used to calculate distance
minModifiedDate string 12/01/2025
maxModifiedDate string 25/09/2025
duplicatesFilterID int 2
projectCategoryID ** int 2
groupProject ** bool true if true it groups all projects in a single project item if present
minProjectEndDate string 12/01/2025 only for projects
maxProjectEndDate string 25/09/2025 only for projects
minProjectStartDate string 12/01/2025 only for projects
maxProjectStartDate string 25/09/2025 only for projects
minProjResidentialUnits int 5 only for projects
maxProjResidentialUnits int 8 only for projects
minProjCommercialUnits int 2 only for projects
maxProjCommercialUnits int 10 only for projects
minPricePsm int 2000
maxPricePsm int 5000
occupancyStatusFree bool true
minNumberOfBuildingFloor int 1
maxNumberOfBuildingFloor int 4
minShowcases int 2
maxShowcases int 5
chimneyFlue bool false
fumeAspiration bool true
reception bool true
minShedHeight float 1.5
maxShedHeight float 2.9
broadbandInternet bool true
disabledPeopleAccess bool false
securityAlarm bool true
minGarageDoorWidth float 3.5
maxGarageDoorWidth float 5

Pagination example usage

{
   "Filters": {
       ... filters ...
    },
"Pagination": {
    "page": 1,
    "limit": 10
    }
}
N.B. The pagination object can be omitted from the json body, and if so, the default limit and page will be used (see below)

Pagination filters

filter default Type Description
page 1 int Shows results in the indicated page
limit 5 int Sets the maximum number of results per page (can be configured differently if requested through sales)

Sorting example usage

{
   "Filters": {
       ... filters ...
    },
"Sorting": {
    "by": "date",
    "direction": "desc"
    }
}
N.B. The sorting object can be omitted from the json body, and if so, the default by and direction will be used (see below)

Sorting filters

filter default Type Description
by date str Orders the results by either date, price, pricepsm, lastmodified, removed, energyclass or distance relative to a POI
direction desc str List the results by ascending (asc) or descending (desc) order