BETA

Busca propiedades del cliente aplicando filtros y devuelve los IDs coincidentes junto con agregaciones (cantidad de propiedades por operación, tipo, zona, moneda y rango de precio). Está pensado para el flujo guiado del chat: permite mostrar conteos como "Venta (150) · Alquiler (75)" sin gastar tokens de IA, y sin traer el detalle completo de cada propiedad.

customerId se resuelve del access token. Para obtener el detalle de las propiedades encontradas, tomá los propertyIds de la respuesta y consultá GET /api/action/mapaprop-chat-ai-v1/properties (uniendo los IDs con coma).

A pesar de tratarse de una búsqueda con filtros, este endpoint es GET, no POST: los filtros se envían como query params, no como body.

Información del recurso
AutenticaciónRequerida (Token de API, Bearer)
HTTP MethodGET
ResponseJSON
Version1

URL del recurso

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

Parámetros

KeyTypeRequiredDescripción
operationintnoID de la operación. Constantes
typeintnoID del tipo de propiedad. Constantes
zone1intnoID de la provincia
zone2intnoID del partido
zone3intnoID de la ciudad/barrio
priceMinnumbernoPrecio mínimo
priceMaxnumbernoPrecio máximo
currencystringnoCódigo de moneda a filtrar (ej: USD)

Solo se buscan propiedades publicadas de la cuenta autenticada. La búsqueda siempre limita a un máximo de 100 resultados internamente (no es paginable desde este endpoint; para recorrer resultados de a páginas, usá los propertyIds devueltos junto con properties).

Código de ejemplo

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}

Respuesta

ObjetoCampoTipoRequeridoDescripción
ResponsetotalintyesCantidad total de propiedades que coinciden con los filtros
propertyIdsArray of intyesIDs de las propiedades coincidentes (hasta 100)
aggregationsAggregationsyesDesglose de los resultados
AggregationsoperationsArray of OperationCountyesCantidad de propiedades por operación, dentro del resultado filtrado
typesArray of TypeCountyesCantidad de propiedades por tipo, dentro del resultado filtrado
statesArray of ZoneCountyesCantidad de propiedades por provincia (zone1)
countiesArray of ZoneCountyesCantidad de propiedades por partido (zone2)
citiesArray of ZoneCountyesCantidad de propiedades por ciudad/barrio (zone3)
currenciesArray of CurrencyStatsyesCantidad y estadísticas de precio por moneda
priceRangesArray of PriceRangenoRangos de precio con cantidad de propiedades por moneda (solo si hay datos)
OperationCountidintyesID de la operación
descriptionstringyesDescripción traducida de la operación
countintyesCantidad de propiedades con esa operación
TypeCountidintyesID del tipo de propiedad
descriptionstringyesDescripción traducida del tipo
countintyesCantidad de propiedades con ese tipo
ZoneCountidintyesID de la zona
countintyesCantidad de propiedades en esa zona
CurrencyStatscurrencystringyesCódigo de moneda
countintyesCantidad de propiedades en esa moneda
priceMinintnoPrecio mínimo en esa moneda
priceMaxintnoPrecio máximo en esa moneda
priceAvgintnoPrecio promedio en esa moneda
PriceRangecurrencystringyesMoneda del rango
labelstringyesEtiqueta del rango
countintyesCantidad de propiedades en ese rango
fromintnoLímite inferior (ausente en el primer rango)
tointnoLímite superior (ausente en el último rango)

Ejemplo de respuesta

{
    "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 }
        ]
    }
}

Si operation, type, zone1, zone2, zone3, priceMin o priceMax se envían con un valor no numérico, el servicio responde HTTP 400 con {"error": "INVALID_NUMBER", "description": "..."}, donde la descripción es específica del campo (ej: "Operation must be a number", "PriceMin must be a number").

A diferencia de GET /api/action/mapaprop-chat-ai-v1/config, las aggregations de este endpoint no incluyen description en states/counties/cities (solo id y count).