---
title: "Buscar propiedades"
method: GET
path: "/properties"
tags: ["properties"]
---

# Buscar propiedades

`GET /properties`

## Request

- Base URL: `https://api.inmo.example/v1`
- URL: `https://api.inmo.example/v1/properties`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

Filtros por transacción, tipo, precio, recámaras y **radio geográfico**
(`near` + `radius`, sobre índice PostGIS). Sin login para lo básico.

## Query parameters

- `transactionType` 'ForSale' | 'ForLease': Conveniencia derivada de PropertyType para la superficie REST/agentes. No es un campo RESO; RESO lo expresa dentro de PropertyType.
- `propertyType` 'Residential' | 'Residential Lease' | 'Residential Income' | 'Commercial Sale' | 'Commercial Lease' | 'Business Opportunity' | 'Land' | 'Farm' | 'Manufactured In Park': RESO PropertyType — lookup oficial. En RESO la transacción (venta/renta) ya está codificada en el tipo (p. ej. `Residential Lease`). `transactionType` es una conveniencia derivada, no reemplaza a este campo.
- `minPrice` number
- `maxPrice` number
- `minBedrooms` integer
- `near` string
- `radius` integer
- `city` string
- `postalCode` string
- `status` 'Active' | 'Active Under Contract' | 'Pending' | 'Closed' | 'Coming Soon' | 'Hold' | 'Withdrawn' | 'Canceled' | 'Expired' | 'Incomplete' | 'Delete': RESO StandardStatus — lookup oficial. Se adopta el conjunto completo aunque el adaptador de Facebook sólo emita Active/Pending/Closed/Withdrawn.
- `cursor` string
- `limit` integer

## Response `200`

Lista paginada de propiedades (representación compacta).

- PropertyList
  - `count` integer, required: Total de coincidencias (best-effort).
  - `results` PropertySummary[], required
    - `listingKey` string, required
    - `transactionType` 'ForSale' | 'ForLease', required: Conveniencia derivada de PropertyType para la superficie REST/agentes. No es un campo RESO; RESO lo expresa dentro de PropertyType.
    - `propertyType` 'Residential' | 'Residential Lease' | 'Residential Income' | 'Commercial Sale' | 'Commercial Lease' | 'Business Opportunity' | 'Land' | 'Farm' | 'Manufactured In Park': RESO PropertyType — lookup oficial. En RESO la transacción (venta/renta) ya está codificada en el tipo (p. ej. `Residential Lease`). `transactionType` es una conveniencia derivada, no reemplaza a este campo.
    - `listPrice` number, required
    - `listPriceCurrency` string, required
    - `priceTrusted` boolean
    - `bedroomsTotal` integer, nullable
    - `bathroomsTotalInteger` integer, nullable
    - `bathroomsHalf` integer, nullable: Medios baños (0.5 c/u ya excluidos de bathroomsTotalInteger).
    - `propertyKind` string, nullable: Tipo elegido por el anunciante (casa, departamento, bodega, terreno…).
    - `propertySubtype` string, nullable: Subtipo (ej. casa de campo/ciudad/playa).
    - `parkingSpots` integer, nullable
    - `floors` integer, nullable: Niveles del inmueble.
    - `floorNumber` integer, nullable: Piso en el que está (depto/oficina/local).
    - `lotSqm` number, nullable: Superficie de terreno; la construida es livingArea.
    - `clearHeightM` number, nullable: Altura libre en metros (bodega/nave).
    - `units` integer, nullable: Unidades (edificio).
    - `furnished` boolean, nullable
    - `city` string, nullable
    - `postalCode` string, nullable
    - `latitude` number, nullable
    - `longitude` number, nullable
    - `photoCount` integer
    - `photoUrl` string, nullable: Foto principal (miniatura). Nota: las URLs de la fuente pueden caducar.
    - `cachedPhotos` integer: Cuántas fotos propias servimos (para el carrusel).
    - `hostName` string, nullable: Nombre del anunciante/anfitrión.
    - `hostType` string, nullable: Agencia o "Anfitrión particular".
    - `publisherKey` string, nullable: Clave del anunciante (teléfono normalizado) para agrupar sus publicaciones.
    - `hasContact` boolean: Si la publicación trae teléfono de contacto visible.
    - `summary` string: Resumen en lenguaje natural, para agentes.
    - `provenance` object
      - `source` string
      - `confidence` number
    - `links` Links
      - `self` string: Ficha en el protocolo.
      - `source` string: Anuncio en la fuente original.
  - `next` string, nullable: Cursor para la página siguiente; null si no hay más.

## Other responses

- `400`: Parámetros inválidos.
- `429`: Se excedió el límite de peticiones.

---

[API](https://skmtc.dev/propfacil/apis/protocolo-propfacil-api.md) · [All operations](https://skmtc.dev/propfacil/apis/protocolo-propfacil-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propfacil/apis/protocolo-propfacil-api/revisions/f0da7a416623?raw)
