BETA

Searches the customer's properties applying filters and returns the matching IDs along with aggregations (number of properties by operation, type, zone, currency and price range). It is designed for the chat's guided flow: it allows showing counts like "Sale (150) · Rent (75)" without spending AI tokens, and without fetching the full detail of each property.

customerId is resolved from the access token. To get the detail of the properties found, take the propertyIds from the response and query GET /api/action/mapaprop-chat-ai-v1/properties (joining the IDs with a comma).

Even though it is a search with filters, this endpoint is GET, not POST: the filters are sent as query params, not as a body.

Resource information
AuthenticationRequired (API Token, Bearer)
HTTP MethodGET
ResponseJSON
Version1

Resource URL

https://mapaprop.app/api/action/mapaprop-chat-ai-v1/search

Parameters

KeyTypeRequiredDescription
operationintnoOperation ID. Constants
typeintnoProperty type ID. Constants
zone1intnoState/province ID
zone2intnoCounty ID
zone3intnoCity/neighborhood ID
priceMinnumbernoMinimum price
priceMaxnumbernoMaximum price
currencystringnoCurrency code to filter by (e.g. USD)

Only published properties of the authenticated account are searched. The search always caps at a maximum of 100 results internally (it is not pageable from this endpoint; to page through results, use the propertyIds returned together with properties).

Sample code

GET /api/action/mapaprop-chat-ai-v1/search?operation=1&type=1&zone1=1&priceMin=50000&priceMax=300000&currency=USD HTTP/1.1
Host: mapaprop.app
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Authorization: Bearer {access_token}

Response

ObjectFieldTypeRequiredDescription
ResponsetotalintyesTotal number of properties matching the filters
propertyIdsArray of intyesIDs of the matching properties (up to 100)
aggregationsAggregationsyesBreakdown of the results
AggregationsoperationsArray of OperationCountyesNumber of properties by operation, within the filtered result
typesArray of TypeCountyesNumber of properties by type, within the filtered result
statesArray of ZoneCountyesNumber of properties by state/province (zone1)
countiesArray of ZoneCountyesNumber of properties by county (zone2)
citiesArray of ZoneCountyesNumber of properties by city/neighborhood (zone3)
currenciesArray of CurrencyStatsyesNumber and price statistics by currency
priceRangesArray of PriceRangenoPrice ranges with number of properties by currency (only if there is data)
OperationCountidintyesOperation ID
descriptionstringyesTranslated description of the operation
countintyesNumber of properties with that operation
TypeCountidintyesProperty type ID
descriptionstringyesTranslated description of the type
countintyesNumber of properties with that type
ZoneCountidintyesZone ID
countintyesNumber of properties in that zone
CurrencyStatscurrencystringyesCurrency code
countintyesNumber of properties in that currency
priceMinintnoMinimum price in that currency
priceMaxintnoMaximum price in that currency
priceAvgintnoAverage price in that currency
PriceRangecurrencystringyesCurrency of the range
labelstringyesLabel of the range
countintyesNumber of properties in that range
fromintnoLower bound (absent in the first range)
tointnoUpper bound (absent in the last range)

Sample response

{
    "total": 18,
    "propertyIds": [2600144, 2600145, 2600150, 2600151],
    "aggregations": {
        "operations": [
            { "id": 1, "description": "Venta", "count": 18 }
        ],
        "types": [
            { "id": 1, "description": "Departamento", "count": 12 },
            { "id": 2, "description": "Casa", "count": 6 }
        ],
        "states": [
            { "id": 1, "count": 18 }
        ],
        "counties": [
            { "id": 46, "count": 10 }
        ],
        "cities": [],
        "currencies": [
            { "currency": "USD", "count": 18, "priceMin": 55000, "priceMax": 295000, "priceAvg": 165000 }
        ],
        "priceRanges": [
            { "currency": "USD", "label": "50000-100000", "count": 5, "from": 50000, "to": 100000 },
            { "currency": "USD", "label": "100000-300000", "count": 13, "from": 100000, "to": 300000 }
        ]
    }
}

If operation, type, zone1, zone2, zone3, priceMin or priceMax are sent with a non-numeric value, the service responds HTTP 400 with {"error": "INVALID_NUMBER", "description": "..."}, where the description is specific to the field (e.g. "Operation must be a number", "PriceMin must be a number").

Unlike GET /api/action/mapaprop-chat-ai-v1/config, the aggregations of this endpoint do not include description in states/counties/cities (only id and count).