Amadeus · Schema
HotelOffer
Hotel Offer
TravelTravel TechnologyReservationsFlightsHotelsAirlinesHospitalityTours and ActivitiesCars and TransfersDestination ContentItinerary ManagementTrip PlanningArtificial IntelligenceMarket Insights
Properties
| Name | Type | Description |
|---|---|---|
| type | string | data type |
| id | string | Unique identifier of this offer. Might be valid for a temporary period only. |
| checkInDate | string | check-in date of the stay (hotel local date). Format YYYY-MM-DD The lowest accepted value is today date (no dates in the past). |
| checkOutDate | string | check-out date of the stay (hotel local date). Format YYYY-MM-DD The lowest accepted value is `checkInDate`+1. |
| roomQuantity | string | number of rooms (1-9) |
| rateCode | string | Special Rate - Provider Response Code (3 chars) Examples * RAC - Rack * BAR - Best Available Rate * PRO - Promotional * COR - Corporate * GOV - Government (qualified) * AAA - AAA (qualified) * BNB - B |
| rateFamilyEstimated | object | The estimated rate code family of the offer. Grouping various rate plan codes that belongs to the same family and indicates the type of the rate |
| category | string | Special Rate Category Examples: ASSOCIATION FAMILY_PLAN |
| description | object | Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language |
| commission | object | |
| boardType | string | The included Breakfast/Meals |
| room | object | |
| guests | object | |
| price | object | price information |
| policies | object | Booking Rules |
| self | string | A self link to the object. Use this to refresh the Offer price |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/amadeus/refs/heads/main/json-schema/hotel-search-hotel-offer-schema.json",
"title": "HotelOffer",
"description": "Hotel Offer",
"type": "object",
"properties": {
"type": {
"title": "Type",
"description": "data type",
"type": "string",
"enum": [
"hotel-offer"
]
},
"id": {
"description": "Unique identifier of this offer. Might be valid for a temporary period only.",
"example": "TSXOJ6LFQ2",
"type": "string",
"minLength": 2,
"maxLength": 100,
"pattern": "^[A-Z0-9]*$"
},
"checkInDate": {
"description": "check-in date of the stay (hotel local date). Format YYYY-MM-DD\nThe lowest accepted value is today date (no dates in the past).",
"example": "2020-12-30",
"type": "string",
"format": "date"
},
"checkOutDate": {
"description": "check-out date of the stay (hotel local date). Format YYYY-MM-DD\nThe lowest accepted value is `checkInDate`+1.",
"example": "2020-12-31",
"type": "string",
"format": "date"
},
"roomQuantity": {
"description": "number of rooms (1-9)",
"example": "1",
"type": "string"
},
"rateCode": {
"description": "Special Rate - Provider Response Code (3 chars)\nExamples\n\n * RAC - Rack\n\n * BAR - Best Available Rate\n\n * PRO - Promotional\n\n * COR - Corporate\n\n * GOV - Government (qualified)\n\n * AAA - AAA (qualified)\n\n * BNB - Bed and Breakfast\n\n * PKG - Package\n\n * TVL - Travel Industry\n\n * SPC - Special Promo Rate\n\n * WKD - Weekend\n\n * CON - Convention\n\n * SNR - Senior (Europe) (qualified)\n\n * ARP - AARP - American Association of Retired People (50+) (qualified)\n\n * SRS - Senior (qualified)\n\n * ROR - Room Only Rate (no breakfast)\n\n * FAM - Family\n\n * DAY - Day rate",
"example": "RAC",
"type": "string",
"minLength": 3,
"maxLength": 3,
"pattern": "^[A-Z0-9*]{3}$"
},
"rateFamilyEstimated": {
"title": "HotelProduct_RateFamily",
"description": "The estimated rate code family of the offer. Grouping various rate plan codes that belongs to the same family and indicates the type of the rate",
"type": "object",
"properties": {
"code": {
"description": "The estimated rate family (PRO,FAM,GOV)",
"type": "string",
"pattern": "[A-Z0-9]{3}",
"example": "string-value"
},
"type": {
"description": "The type of the rate (public=P, negotiated=N, conditional=C)",
"type": "string",
"pattern": "[PNC]",
"example": "string-value"
}
}
},
"category": {
"description": "Special Rate Category\nExamples:\n ASSOCIATION\n FAMILY_PLAN",
"example": "FAMILY_PLAN",
"type": "string"
},
"description": {
"title": "QualifiedFreeText",
"description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language",
"type": "object",
"properties": {
"text": {
"description": "Free Text",
"example": "A description",
"type": "string"
},
"lang": {
"description": "see RFC 5646",
"example": "fr-FR",
"type": "string"
}
}
},
"commission": {
"title": "HotelProduct_Commission",
"type": "object",
"properties": {
"percentage": {
"description": "Percentage of the commission paid to the travel seller. Value is between 0 and 100",
"type": "string",
"pattern": "^\\\\d+(\\\\.\\\\d+)?$",
"example": 50
},
"amount": {
"description": "Amount of the commission paid to the travel seller. The amount is always linked to the currency code of the offer",
"type": "string",
"pattern": "^\\\\d+(\\\\.\\\\d+)?$",
"example": "199.50"
},
"description": {
"title": "QualifiedFreeText",
"description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language",
"type": "object",
"properties": {
"text": {
"description": "Free Text",
"example": "A description",
"type": "string"
},
"lang": {
"description": "see RFC 5646",
"example": "fr-FR",
"type": "string"
}
}
}
}
},
"boardType": {
"title": "BoardType",
"description": "The included Breakfast/Meals",
"type": "string",
"enum": [
"ROOM_ONLY",
"BREAKFAST",
"HALF_BOARD",
"FULL_BOARD",
"ALL_INCLUSIVE",
"BUFFET_BREAKFAST",
"CARIBBEAN_BREAKFAST",
"CONTINENTAL_BREAKFAST",
"ENGLISH_BREAKFAST",
"FULL_BREAKFAST",
"DINNER_BED_AND_BREAKFAST",
"LUNCH",
"DINNER",
"FAMILY_PLAN",
"AS_BROCHURED",
"SELF_CATERING",
"BERMUDA",
"AMERICAN",
"FAMILY_AMERICAN",
"MODIFIED"
]
},
"room": {
"title": "HotelProduct_RoomDetails",
"type": "object",
"properties": {
"type": {
"description": "Room type code, 3 character identifier of the room.\nThe first character identifies the room type category. \nThe second numeric character identifies the number of beds. \nThe third character identifies the bed type. \nThere is a special case where ROH is returned, this value stands for Run Of House.",
"type": "string",
"pattern": "^[A-Z0-9*]{3}$",
"example": "string-value"
},
"typeEstimated": {
"title": "HotelProduct_EstimatedRoomType",
"description": "estimated room category, bed type and number of beds in the room. This information has been parsed from the room description, and is thus only provided for informational purposes",
"type": "object",
"properties": {
"category": {
"description": "Category code",
"type": "string",
"example": "string-value"
},
"beds": {
"description": "Number of beds in the room (1-9)",
"type": "integer",
"format": "int32",
"example": 1
},
"bedType": {
"description": "Type of the bed",
"type": "string",
"example": "string-value"
}
}
},
"description": {
"title": "QualifiedFreeText",
"description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language",
"type": "object",
"properties": {
"text": {
"description": "Free Text",
"example": "A description",
"type": "string"
},
"lang": {
"description": "see RFC 5646",
"example": "fr-FR",
"type": "string"
}
}
}
}
},
"guests": {
"title": "HotelProduct_Guests",
"type": "object",
"properties": {
"adults": {
"description": "number of adult guests (1-9) per room",
"example": 2,
"type": "integer",
"minimum": 1,
"maximum": 9,
"format": "int32"
},
"childAges": {
"description": "Comma separated list of ages of each child at the time of check-out from the hotel. If several children have the same age, the ages will be repeated.",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"format": "int32"
}
}
}
},
"price": {
"title": "HotelProduct_HotelPrice",
"description": "price information",
"type": "object",
"properties": {
"currency": {
"description": "currency Code apply to all elements of the price",
"type": "string",
"example": "EUR"
},
"sellingTotal": {
"description": "sellingTotal = Total + margins + markup + totalFees - discounts",
"type": "string",
"example": "199.50"
},
"total": {
"description": "total = base + totalTaxes",
"type": "string",
"example": "199.50"
},
"base": {
"type": "string",
"example": "string-value"
},
"taxes": {
"type": "array",
"items": {
"$ref": "#/definitions/Tax"
}
},
"markups": {
"type": "array",
"items": {
"$ref": "#/definitions/Markup"
}
},
"variations": {
"title": "HotelProduct_PriceVariations",
"description": "Daily price variations and the average daily price (when available) is shown here",
"type": "object",
"properties": {
"average": {
"$ref": "#/definitions/Price"
},
"changes": {
"description": "A collection of price periods if the daily price changes during the stay",
"type": "array",
"items": {
"$ref": "#/definitions/HotelProduct_PriceVariation"
}
}
}
}
}
},
"policies": {
"title": "HotelProduct_PolicyDetails",
"description": "Booking Rules",
"type": "object",
"properties": {
"paymentType": {
"title": "PaymentType",
"description": "payment type. Guarantee means Pay at Check Out. Check the `methods` in `guarantee` or `deposit` or `prepay`.",
"type": "string",
"enum": [
"GUARANTEE",
"DEPOSIT",
"PREPAY",
"HOLDTIME"
]
},
"guarantee": {
"title": "HotelProduct_GuaranteePolicy",
"description": "the guarantee policy information applicable to the offer. It includes accepted payments",
"type": "object",
"properties": {
"description": {
"$ref": "#/definitions/QualifiedFreeText"
},
"acceptedPayments": {
"$ref": "#/definitions/HotelProduct_PaymentPolicy"
}
}
},
"deposit": {
"title": "HotelProduct_DepositPolicy",
"description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due",
"type": "object",
"properties": {
"amount": {
"description": "Deposit-Prepay amount",
"type": "string",
"pattern": "^\\\\d+(\\\\.\\\\d+)?$",
"example": "199.50"
},
"deadline": {
"description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone",
"type": "string",
"format": "date-time",
"example": "2026-08-15T10:30:00Z"
},
"description": {
"$ref": "#/definitions/QualifiedFreeText"
},
"acceptedPayments": {
"$ref": "#/definitions/HotelProduct_PaymentPolicy"
}
}
},
"prepay": {
"title": "HotelProduct_DepositPolicy",
"description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due",
"type": "object",
"properties": {
"amount": {
"description": "Deposit-Prepay amount",
"type": "string",
"pattern": "^\\\\d+(\\\\.\\\\d+)?$",
"example": "199.50"
},
"deadline": {
"description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone",
"type": "string",
"format": "date-time",
"example": "2026-08-15T10:30:00Z"
},
"description": {
"$ref": "#/definitions/QualifiedFreeText"
},
"acceptedPayments": {
"$ref": "#/definitions/HotelProduct_PaymentPolicy"
}
}
},
"holdTime": {
"title": "HotelProduct_HoldPolicy",
"description": "the hold policy",
"type": "object",
"properties": {
"deadline": {
"description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone",
"type": "string",
"format": "date-time",
"example": "2026-08-15T10:30:00Z"
}
},
"required": [
"deadline"
]
},
"cancellations": {
"type": "array",
"items": {
"$ref": "#/definitions/HotelProduct_CancellationPolicy"
}
},
"checkInOut": {
"title": "HotelProduct_CheckInOutPolicy",
"type": "object",
"properties": {
"checkIn": {
"description": "Check-in From time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]",
"example": "13:00:00",
"type": "string"
},
"checkInDescription": {
"$ref": "#/definitions/QualifiedFreeText"
},
"checkOut": {
"description": "Check-out Until time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]",
"example": "11:00:00",
"type": "string"
},
"checkOutDescription": {
"$ref": "#/definitions/QualifiedFreeText"
}
}
}
}
},
"self": {
"description": "A self link to the object. Use this to refresh the Offer price",
"example": "https://test.travel.api.amadeus.com/v2/shopping/hotel-offers/63A93695B58821ABB0EC2B33FE9FAB24D72BF34B1BD7D707293763D8D9378FC3",
"type": "string"
}
},
"required": [
"id",
"rateCode",
"room",
"price"
]
}