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ón | Requerida (Token de API, Bearer) |
| HTTP Method | GET |
| Response | JSON |
| Version | 1 |
URL del recurso
https://mapaprop.app/api/action/mapaprop-chat-ai-v1/search
Parámetros
| Key | Type | Required | Descripción |
|---|---|---|---|
| operation | int | no | ID de la operación. Constantes |
| type | int | no | ID del tipo de propiedad. Constantes |
| zone1 | int | no | ID de la provincia |
| zone2 | int | no | ID del partido |
| zone3 | int | no | ID de la ciudad/barrio |
| priceMin | number | no | Precio mínimo |
| priceMax | number | no | Precio máximo |
| currency | string | no | Có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¤cy=USD HTTP/1.1
Host: mapaprop.app
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Authorization: Bearer {access_token}
Respuesta
| Objeto | Campo | Tipo | Requerido | Descripción |
|---|---|---|---|---|
| Response | total | int | yes | Cantidad total de propiedades que coinciden con los filtros |
| propertyIds | Array of int | yes | IDs de las propiedades coincidentes (hasta 100) | |
| aggregations | Aggregations | yes | Desglose de los resultados | |
| Aggregations | operations | Array of OperationCount | yes | Cantidad de propiedades por operación, dentro del resultado filtrado |
| types | Array of TypeCount | yes | Cantidad de propiedades por tipo, dentro del resultado filtrado | |
| states | Array of ZoneCount | yes | Cantidad de propiedades por provincia (zone1) | |
| counties | Array of ZoneCount | yes | Cantidad de propiedades por partido (zone2) | |
| cities | Array of ZoneCount | yes | Cantidad de propiedades por ciudad/barrio (zone3) | |
| currencies | Array of CurrencyStats | yes | Cantidad y estadísticas de precio por moneda | |
| priceRanges | Array of PriceRange | no | Rangos de precio con cantidad de propiedades por moneda (solo si hay datos) | |
| OperationCount | id | int | yes | ID de la operación |
| description | string | yes | Descripción traducida de la operación | |
| count | int | yes | Cantidad de propiedades con esa operación | |
| TypeCount | id | int | yes | ID del tipo de propiedad |
| description | string | yes | Descripción traducida del tipo | |
| count | int | yes | Cantidad de propiedades con ese tipo | |
| ZoneCount | id | int | yes | ID de la zona |
| count | int | yes | Cantidad de propiedades en esa zona | |
| CurrencyStats | currency | string | yes | Código de moneda |
| count | int | yes | Cantidad de propiedades en esa moneda | |
| priceMin | int | no | Precio mínimo en esa moneda | |
| priceMax | int | no | Precio máximo en esa moneda | |
| priceAvg | int | no | Precio promedio en esa moneda | |
| PriceRange | currency | string | yes | Moneda del rango |
| label | string | yes | Etiqueta del rango | |
| count | int | yes | Cantidad de propiedades en ese rango | |
| from | int | no | Límite inferior (ausente en el primer rango) | |
| to | int | no | Lí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).