---
title: "Read a currently published property's approved facts and host booking link. Unpublished properties return 404 immediately."
method: GET
path: "/api/public/v1/properties/{id}"
---

# Read a currently published property's approved facts and host booking link. Unpublished properties return 404 immediately.

`GET /api/public/v1/properties/{id}`

## Request

- Base URL: `https://chucho.ai`
- URL: `https://chucho.ai/api/public/v1/properties/{id}`
- Auth: none required

## Path parameters

- `id` string, required

## Query parameters

- `locale` 'en' | 'es'

## Response `200`

Current public facts

- object
  - `sourceDescription` object, nullable: Explicitly reviewed original source text in its source language, separate from host-edited or generated facts. Omitted or null when unavailable or hidden.
    - `text` string, required
    - `language` string, nullable, required
    - `sha256` string, required
    - `sourceUrl` string, required
    - `capturedAt` string, required
  - `organization` object, nullable, required
    - `name` string, required
    - `slug` string, required
    - `canonicalUrl` string, required
  - `relatedPropertiesUrl` string, required
  - `id` string, required
  - `slug` string, required
  - `name` string, required
  - `city` string, required
  - `region` string, required
  - `country` string, required
  - `location` object, required
    - `countryCode` string, nullable, required
    - `revision` integer, required
    - `places` object[], required
      - `key` string, required
      - `kind` 'country' | 'region' | 'locality', required
      - `countryCode` string, required
      - `parentKey` string, nullable, required
      - `urlPath` string, required
      - `label` string, required
      - `labelEs` string, required
      - `fullLabel` string, required
      - `fullLabelEs` string, required
      - `center` object, nullable, required
        - `lat` number, required
        - `lng` number, required
  - `facts` object, required
    - `accommodationType` 'vacation_rental' | 'boutique_hotel'
    - `localContent` string[]
    - `capacity` integer
    - `bedrooms` integer
    - `beds` integer
    - `bathrooms` number
    - `description` object
      - `en` string, required
      - `es` string
    - `positioning` object
      - `en` string, required
      - `es` string
    - `constraint` object
      - `en` string, required
      - `es` string
    - `rooms` object[], required
      - `name` object, required
        - `en` string, required
        - `es` string
      - `beds` integer
      - `bedDescription` object
        - `en` string, required
        - `es` string
      - `airConditioning` boolean
      - `bathroom` boolean
    - `amenities` object[], required
      - `key` 'air-conditioning' | 'wifi' | 'workspace' | 'parking' | 'pets' | 'kitchen' | 'washer' | 'step-free', required
      - `present` boolean, required
      - `detail` object
        - `en` string, required
        - `es` string
    - `pool` object
      - `present` boolean, required
      - `privacy` 'private' | 'shared'
      - `fenced` boolean
      - `heated` boolean
      - `detail` object
        - `en` string, required
        - `es` string
    - `connectivity` object
      - `claim` object
        - `en` string, required
        - `es` string
      - `downloadMbps` number
      - `measuredAt` string, date
    - `rules` object
      - `en` string, required
      - `es` string
    - `checkinTime` string
    - `checkoutTime` string
    - `host` object
      - `name` string, required
      - `description` object
        - `en` string, required
        - `es` string
      - `languages` string[], required
    - `photos` object[], required
      - `id` string, uuid, required
      - `caption` object, required
        - `en` string, required
        - `es` string
      - `group` string
      - `publicListing` boolean
    - `faq` object[], required
      - `id` string, uuid, required
      - `question` object, required
        - `en` string, required
        - `es` string
      - `answer` object, required
        - `en` string, required
        - `es` string
  - `photos` object[], required
    - `id` string, required
    - `url` string, required
    - `caption` object, required
      - `en` string, required
      - `es` string
    - `group` string
    - `publicListing` boolean
  - `offerings` object[], required
    - `id` string, required
    - `name` object, required
      - `en` string, required
      - `es` string
    - `description` object, required
      - `en` string, required
      - `es` string
    - `imageUrl` string
    - `source` 'activity' | 'restaurant' | 'grocery' | 'offer', required
  - `bookingUrl` string, required
  - `bookingCapabilities` object
    - `mode` 'request' | 'quote' | 'price' | 'unknown' | 'unsupported', required
    - `verifiedAt` number
    - `expiresAt` number
  - `enquiryUrl` string
  - `canonicalUrl` string, required
  - `markdownUrl` string, required
  - `updatedAt` string, required
  - `revision` integer, required
  - `theme` object, required
  - `stayQuote` union
    - object
      - `basis` 'exact', required
      - `status` 'ready' | 'pending' | 'not_checked' | 'limited', required
      - `request` object, required
        - `id` string, required
        - `arrival` string, date, required
        - `departure` string, date, required
        - `guests` integer, required
        - `currency` 'USD' | 'EUR' | 'GBP' | 'CRC' | 'MXN' | 'COP' | 'PEN' | 'BRL' | 'AUD'
        - `execution` 'auto' | 'browser': Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.
      - `quote` object, nullable, required
        - `propertyId` string, required
        - `arrival` string, date, required
        - `departure` string, date, required
        - `guests` integer, required
        - `nights` integer, required
        - `roomSelection` object
          - `name` string, required
          - `ratePlan` string
          - `rooms` 1, required
          - `averageNightlyPrice` object
            - `currency` string, required
            - `amount` number, required
        - `availability` 'available' | 'unavailable' | 'unknown', required
        - `reason` 'checked' | 'blocked_dates' | 'minimum_stay' | 'maximum_stay' | 'arrival_departure_rules' | 'advance_notice' | 'capacity' | 'unsupported_host' | 'browser_unconfigured' | 'upstream_unavailable' | 'date_range_unknown', required
        - `minimumNights` integer, nullable, required
        - `partyBasis` 'all_adults'
        - `price` object, nullable, required
          - `currency` string, required
          - `total` number, required
          - `breakdown` object[], required
            - `label` string, required
            - `amount` number, required
          - `completeness` 'total' | 'partial', required
          - `taxesIncluded` boolean, nullable, required
        - `startingNightlyPrice` object
          - `currency` string, required
          - `amount` number, required
        - `checkedAt` string, date-time, required
        - `expiresAt` string, date-time, required
        - `sourceUrl` string, uri, required
        - `bookingUrl` string, uri, required
        - `held` false, required
    - object
      - `basis` 'sample', required
      - `status` 'ready' | 'pending' | 'not_checked' | 'limited', required
      - `request` object, required
        - `id` string, required
        - `arrival` string, date, required
        - `departure` string, date, required
        - `guests` integer, required
        - `currency` 'USD' | 'EUR' | 'GBP' | 'CRC' | 'MXN' | 'COP' | 'PEN' | 'BRL' | 'AUD'
        - `execution` 'auto' | 'browser': Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.
      - `quote` object, nullable, required
        - `propertyId` string, required
        - `arrival` string, date, required
        - `departure` string, date, required
        - `guests` integer, required
        - `nights` integer, required
        - `roomSelection` object
          - `name` string, required
          - `ratePlan` string
          - `rooms` 1, required
          - `averageNightlyPrice` object
            - `currency` string, required
            - `amount` number, required
        - `availability` 'available' | 'unavailable' | 'unknown', required
        - `reason` 'checked' | 'blocked_dates' | 'minimum_stay' | 'maximum_stay' | 'arrival_departure_rules' | 'advance_notice' | 'capacity' | 'unsupported_host' | 'browser_unconfigured' | 'upstream_unavailable' | 'date_range_unknown', required
        - `minimumNights` integer, nullable, required
        - `partyBasis` 'all_adults'
        - `price` object, nullable, required
          - `currency` string, required
          - `total` number, required
          - `breakdown` object[], required
            - `label` string, required
            - `amount` number, required
          - `completeness` 'total' | 'partial', required
          - `taxesIncluded` boolean, nullable, required
        - `startingNightlyPrice` object
          - `currency` string, required
          - `amount` number, required
        - `checkedAt` string, date-time, required
        - `expiresAt` string, date-time, required
        - `sourceUrl` string, uri, required
        - `bookingUrl` string, uri, required
        - `held` false, required
      - `estimate` object, required
        - `id` string, required
        - `windowStart` string, date, required
        - `windowEnd` string, date, required
        - `nights` integer, required
        - `guests` integer, required
        - `currency` 'USD' | 'EUR' | 'GBP' | 'CRC' | 'MXN' | 'COP' | 'PEN' | 'BRL' | 'AUD'
      - `diagnostics` object
        - `attemptedStays` integer, required
        - `reason` 'checked' | 'blocked_dates' | 'minimum_stay' | 'maximum_stay' | 'arrival_departure_rules' | 'advance_notice' | 'capacity' | 'unsupported_host' | 'browser_unconfigured' | 'upstream_unavailable' | 'date_range_unknown': Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.

## Other responses

- `400`: Invalid or unknown filters
- `404`: Property unavailable or unpublished
- `429`: Rate limit; respect Retry-After

---

[API](https://skmtc.dev/chucho/apis/chucho-public-property-discovery.md) · [All operations](https://skmtc.dev/chucho/apis/chucho-public-property-discovery/llms.txt) · [OpenAPI document](https://skmtc.dev/chucho/apis/chucho-public-property-discovery/revisions/b80049fc8cf0?raw)
