Tripadvisor · Schema

Tripadvisor Hotel Availability Response

The response payload returned by a partner's availability endpoint when Tripadvisor checks hotel pricing and room availability in real-time via the Hotel Availability Check (HAC) API v8.

AttractionsHotelsHospitalityRestaurantsReviewsTravel

Properties

Name Type Description
api_version integer The API version number of this response.
hotels array Array of hotel availability results, one per requested hotel.
errors array Array of errors encountered during the availability check.
View JSON Schema on GitHub

JSON Schema

tripadvisor-hotel-availability-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer-tripadvisor.com/schemas/tripadvisor/hotel-availability.json",
  "title": "Tripadvisor Hotel Availability Response",
  "description": "The response payload returned by a partner's availability endpoint when Tripadvisor checks hotel pricing and room availability in real-time via the Hotel Availability Check (HAC) API v8.",
  "type": "object",
  "required": ["api_version", "hotels"],
  "properties": {
    "api_version": {
      "type": "integer",
      "description": "The API version number of this response.",
      "const": 8
    },
    "hotels": {
      "type": "array",
      "description": "Array of hotel availability results, one per requested hotel.",
      "items": {
        "$ref": "#/$defs/HotelAvailability"
      }
    },
    "errors": {
      "type": "array",
      "description": "Array of errors encountered during the availability check.",
      "items": {
        "$ref": "#/$defs/AvailabilityError"
      }
    }
  },
  "$defs": {
    "HotelAvailability": {
      "type": "object",
      "description": "Availability and pricing information for a single hotel property.",
      "required": ["hotel_id", "availability"],
      "properties": {
        "hotel_id": {
          "type": "string",
          "description": "The partner's internal hotel ID matching the request."
        },
        "availability": {
          "type": "string",
          "description": "The availability status for this hotel.",
          "enum": ["available", "unavailable", "error"]
        },
        "room_types": {
          "type": "object",
          "description": "Map from room type keys to room type objects. Must include an entry for every unique room_type_key used in room_rates.",
          "additionalProperties": {
            "$ref": "#/$defs/RoomType"
          }
        },
        "room_rates": {
          "type": "object",
          "description": "Map from room rate keys to room rate objects containing pricing details.",
          "additionalProperties": {
            "$ref": "#/$defs/RoomRate"
          }
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Deep link URL to the partner's booking page for this hotel."
        }
      }
    },
    "RoomType": {
      "type": "object",
      "description": "A room type available at the hotel.",
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Deep link URL to the booking page for this room type."
        },
        "description": {
          "type": "string",
          "description": "A description of the room type."
        },
        "room_type_code": {
          "type": "string",
          "description": "Persistent room type code that identifies this room type across requests."
        },
        "photos": {
          "type": "array",
          "description": "Array of photos for this room type.",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "URL of the room type photo."
              },
              "caption": {
                "type": "string",
                "description": "Caption for the room type photo."
              }
            }
          }
        },
        "amenities": {
          "type": "array",
          "description": "Array of amenity names available in this room type.",
          "items": {
            "type": "string"
          }
        },
        "max_occupancy": {
          "type": "integer",
          "description": "The maximum number of guests for this room type.",
          "minimum": 1
        },
        "bed_types": {
          "type": "array",
          "description": "Array of bed type descriptions.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "RoomRate": {
      "type": "object",
      "description": "Pricing details for a specific room rate.",
      "required": ["room_type_key", "line_items"],
      "properties": {
        "room_type_key": {
          "type": "string",
          "description": "Key referencing the room type this rate applies to."
        },
        "rate_plan_code": {
          "type": "string",
          "description": "Persistent rate plan code identifying this rate across requests."
        },
        "rate_plan_description": {
          "type": "string",
          "description": "Description of the rate plan."
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Deep link URL to book at this rate."
        },
        "line_items": {
          "type": "array",
          "description": "Array of line item objects for rate, tax, and fee breakdowns.",
          "items": {
            "$ref": "#/$defs/LineItem"
          },
          "minItems": 1
        },
        "cancellation_rules": {
          "$ref": "#/$defs/CancellationRules"
        },
        "occupancy": {
          "type": "integer",
          "description": "The number of guests this rate is for.",
          "minimum": 1
        },
        "is_refundable": {
          "type": "boolean",
          "description": "Whether this rate is refundable."
        },
        "meal_plan": {
          "type": "string",
          "description": "The meal plan included with this rate.",
          "enum": ["none", "breakfast", "half_board", "full_board", "all_inclusive"]
        }
      }
    },
    "LineItem": {
      "type": "object",
      "description": "A pricing line item representing a rate, tax, or fee component.",
      "required": ["type", "price", "currency"],
      "properties": {
        "type": {
          "type": "string",
          "description": "The line item type.",
          "enum": ["rate", "tax", "fee"]
        },
        "sub_type": {
          "type": "string",
          "description": "The sub-type providing more detail about the line item."
        },
        "price": {
          "type": "number",
          "description": "The monetary amount for this line item.",
          "minimum": 0
        },
        "currency": {
          "type": "string",
          "description": "The three-letter ISO 4217 currency code.",
          "minLength": 3,
          "maxLength": 3
        },
        "paid_at_checkout": {
          "type": "boolean",
          "description": "Whether this amount is paid at checkout rather than at booking time."
        }
      }
    },
    "CancellationRules": {
      "type": "object",
      "description": "Cancellation policy rules for a room rate with time-windowed penalties.",
      "properties": {
        "free_cancellation": {
          "type": "boolean",
          "description": "Whether free cancellation is available."
        },
        "rules": {
          "type": "array",
          "description": "Array of cancellation rule periods with associated penalties.",
          "items": {
            "type": "object",
            "properties": {
              "start": {
                "type": "string",
                "format": "date-time",
                "description": "The start date-time of this cancellation policy window."
              },
              "end": {
                "type": "string",
                "format": "date-time",
                "description": "The end date-time of this cancellation policy window."
              },
              "penalty_amount": {
                "type": "number",
                "description": "The penalty amount charged if cancelled during this period.",
                "minimum": 0
              },
              "penalty_currency": {
                "type": "string",
                "description": "The currency of the penalty amount.",
                "minLength": 3,
                "maxLength": 3
              },
              "penalty_type": {
                "type": "string",
                "description": "The type of penalty applied.",
                "enum": ["amount", "percentage", "nights"]
              }
            }
          }
        }
      }
    },
    "AvailabilityError": {
      "type": "object",
      "description": "An error encountered for a specific hotel during the availability check.",
      "required": ["hotel_id"],
      "properties": {
        "hotel_id": {
          "type": "string",
          "description": "The partner hotel ID that experienced the error."
        },
        "error_type": {
          "type": "string",
          "description": "The classification of the error."
        },
        "message": {
          "type": "string",
          "description": "A human-readable error message describing what went wrong."
        }
      }
    }
  }
}