---
title: "Ficha completa de una propiedad"
method: GET
path: "/properties/{listingKey}"
tags: ["properties"]
---

# Ficha completa de una propiedad

`GET /properties/{listingKey}`

## Request

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

## Response `200`

La propiedad, con media y procedencia.

- Property
  - `listingKey` string, required: RESO ListingKey. ID estable con prefijo de fuente.
  - `listingId` string: RESO ListingId (ID de la fuente).
  - `standardStatus` '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.
  - `propertyType` 'Residential' | 'Residential Lease' | 'Residential Income' | 'Commercial Sale' | 'Commercial Lease' | 'Business Opportunity' | 'Land' | 'Farm' | 'Manufactured In Park', required: 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.
  - `propertySubType` 'Single Family Residence' | 'Condominium' | 'Townhouse' | 'Apartment' | 'Duplex' | 'Multi Family' | 'Manufactured Home' | 'Mobile Home' | 'Cabin' | 'Ranch' | 'Unimproved Land' | 'Office' | 'Retail' | 'Warehouse' | 'Other': RESO PropertySubType — lookup oficial (subconjunto de uso común en MX).
  - `transactionType` 'ForSale' | 'ForLease', required: Conveniencia derivada de PropertyType para la superficie REST/agentes. No es un campo RESO; RESO lo expresa dentro de PropertyType.
  - `listPrice` number, required: RESO ListPrice, en la unidad mayor de la moneda.
  - `listPriceCurrency` string, required: RESO ListPriceCurrency (ISO-4217). Obligatorio.
  - `priceTrusted` boolean: X-PriceTrusted. Falso si la moneda del precio es ambigua.
  - `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
  - `livingArea` number, nullable
  - `livingAreaUnits` 'SquareMeters' | 'SquareFeet': RESO LivingAreaUnits. Obligatorio si hay área; nunca asumir.
  - `publicRemarks` string, nullable: RESO PublicRemarks (descripción).
  - `latitude` number, nullable
  - `longitude` number, nullable
  - `unparsedAddress` string, nullable: RESO UnparsedAddress (dirección en texto libre).
  - `postalCode` string, nullable
  - `city` string, nullable
  - `stateOrProvince` string, nullable
  - `country` string
  - `colonia` string, nullable: Extensión X-Colonia.
  - `municipio` string, nullable: Extensión X-Municipio.
  - `media` Media[]
    - `url` string, uri, required
    - `width` integer
    - `height` integer
    - `caption` string: Texto alternativo / OCR cuando la fuente lo provee.
    - `order` integer
  - `photoCount` integer
  - `originatingSystemName` string: RESO OriginatingSystemName (la fuente/sistema de origen).
  - `listAgentKey` string, nullable: RESO ListAgentKey — Member que publica (individuo o agente).
  - `listOfficeKey` string, nullable: RESO ListOfficeKey — Office (agencia) del anuncio, si aplica.
  - `contactPhone` string, nullable: Teléfono que el anunciante publicó visible en su ficha (10 dígitos MX).
  - `contactWhatsapp` string, nullable: Enlace wa.me al WhatsApp del anunciante, si hay teléfono.
  - `publisherKey` string, nullable: Clave del anunciante (teléfono) — enlaza a su perfil y demás publicaciones.
  - `cachedPhotos` integer: Cuántas fotos propias servimos.
  - `host` object, nullable: Anunciante/anfitrión de la propiedad.
    - `key` string
    - `name` string
    - `type` string: Profesional | Particular
    - `officeName` string, nullable
  - `provenance` Provenance: De dónde vino el dato y con qué confianza. Campo de primera clase.
    - `source` string, required: Adaptador/fuente de origen (RESO OriginatingSystemName).
    - `sourceUrl` string, uri
    - `fetchedAt` string, date-time
    - `confidence` number, required: Resultado agregado de las puertas de validación.
    - `validations` string[]
  - `summary` string: Resumen en lenguaje natural, para agentes.
  - `links` Links
    - `self` string: Ficha en el protocolo.
    - `source` string: Anuncio en la fuente original.
  - `priceHistory` PricePoint[]: Extensión — RESO no lo estandariza.
    - `price` number
    - `currency` string
    - `observedAt` string, date-time
  - `modificationTimestamp` string, date-time
  - `firstSeenAt` string, date-time
  - `lastSeenAt` string, date-time

## Other responses

- `404`: No existe una propiedad con ese listingKey.

---

[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)
