Root query that retrieves information about a single property, including its name, IDs, location, unit information, reservations, and promotions. This is the schema's entry point for all property-related queries.
Note: This query provides access to various capabilities, such as property status and reservations. However, you must be granted access to each capability before you can code to it. Contact your Technical Relationship Manager if you are interested in more than promotions.
Use this interactive GraphQL explorer to run the sample query, which retrieves the property's name, address, and geolocation. A test property ID is passed into the explorer; its test data is returned. The GraphQL explorer will help you get comfortable with the GraphQL:
For each query, a test property ID is passed into the explorer; its test data is returned.
Click Run Query to execute the query in the explorer on the page. You can modify the query to retrieve the desired fields, and the explorer provides a list of fields when you start typing.
Click API Explorer to launch the full explorer in another tab/window, which provides syntax highlighting, schema introspection, real-time error highlighting, and auto-completion, among other things.
Top-level property status derived from supporting checkpoints. Use this to
determine if the property is inactive for reasons that are not content related.
Field value used for these field types: enum, string, trilean, int,
and decimal. When the amenity type is trilean and the value is set to
true, the amenity is included on the PDP. When set to false, the amenity
definition is stored but disabled it on the PDP, similar to how amenities are
disabled using AmenityValueInput : available.
Bed types offered in the bedroom. Vacation rentals are limited to a single bed
group with multiple bed types. Conventional lodging may have two bed groups to
represent alternatives. For example, a hotel might have a room type with 1 king
bed or 2 full beds.
Default booking policy for the lodging partner - INSTANT or QUOTEHOLD. With
INSTANT, the reservation is immediately confirmed and no action is required by
the partner. With QUOTEHOLD, the reservation is not confirmed until the
partner manually confirms the reservation in their software.
Percentage of the total booking amount that is charged as a penalty.
Represented as a fraction of 1 (for example,: 15% should be represented as
0.15). Note that to charge 100% penalty, specify 0.00.
The enforcement levels for the cancellation policy are as follows. Note that the
traveler must cancel the reservation by 11:59 PM (property’s local time) of the
cut-off day in order to receive the specified refund amount.
Name
Description
CUSTOM
Terms of the policy are defined by the custom policy.
FIRM
100% refund if reservation is cancelled at least 60 days before the arrival
date, 50% refund if reservation is cancelled at least 30 days before the arrival date.
MODERATE
100% refund if reservation is cancelled at least 30 days before the arrival
date, 50% refund if reservation is cancelled at least 14 days before the arrival date.
NO_REFUND
No refund.
RELAXED
100% refund if reservation is cancelled at least 14 days before the arrival
date, 50% refund if reservation is cancelled at least 7 days before the arrival date.
STRICT
100% refund if reservation is cancelled at least 60 days before the arrival date.
CancellationWindowTemporalUnit
Enum
Time unit used for the cancellation window.
Name
Description
DAY
HOUR
WEEK
CheckOutDateFilter
InputObject
Checkout date window for which to filter reservations. You can query for
reservations up to 465 days in the past and up to 500 days in the future.
Field
Description
from
Not nullable.
Date that defines the start of the checkout date window (format: YYYY-MM-DD).
Compliance status for mandatory requirements only (at the unit level) according
to the local jurisdiction's regulatory requirements. If invalid information is
provided for an optional regulatory requirement, or if regulatory information is
set in a jurisdiction that does not require regulatory information, status:
COMPLIANT is returned. For optional requirements, a warning is returned in the
warningStatus field of the updateUnitRegistration mutation's payload.
Field
Description
reason
Not nullable.
Reason why the unit is in or out of compliance. The label used for the
registration number in this string comes from the numberTypeLabel field on
the RegistrationNumberRequirement type.
Scalar that represents a date-time string at UTC, such as 2007-12-03T10:15:30Z,
compliant with the date-time format outlined in section 5.6 of the RFC 3339
profile of the ISO 8601 standard for representation of dates and times using the
Gregorian calendar.
Day-of-week discounts enable partners to set discount percentages for specific
days of the week. The day fields specify the discount for that day of the week
for the travel dates (such as Mondays at 15%, Tuesdays at 10% discount).
Exception (blackout) dates for which the promotion should NOT apply. This
field is only returned when querying for a single promotion (by specifying the promotion ID).
Promotion code that travelers will use to apply the promotion. This field is
returned in our booking APIs if a reservation is created for a product that
has an active promotion. It is returned in PromotionCode for the Booking
Notification API and in promoName for Booking Retrieval API. Note that only
these characters are supported: a-z, A-Z, 0-9, ., ,, ', :, !, ?, $, %, (, ),
/, -, and space.
Whether the promotion is currently bookable based on the its reservation
date/time range. This field is supported in queries only. All dates and times
are relative to the property’s time zone. The promotion may still be
unavailable due to other restrictions. At the time of querying, if the
promotion's bookingLocalDateTimeFrom and bookingLocalDateTimeTo values are
in the past but the travelDateFrom and travelDateTo values are in the
future, the promotion is considered expired because the promotion can no
longer be made available.
Whether registration is required by the jurisdiction. This is based on the geo
code of the property’s address, not the property type (for example,
registration may be required for a hotel but not a vacation rental in a
specific area).
The traveler's Expedia Group VIP Access loyalty tier. These reservations often
include value add promotions (VAPs), therefore it is important to associate
this field and reservation:valueAddedPromotions in your systems so that
end-users can properly identify loyal travelers and loyalty perks that the
traveler is expecting. Values include MEMBER, VIP, PREMIUMVIP, and null. You
must include this field to complete certification.
Details about the frequent traveler reward program. This field identifies if
the traveler is a member of the supplier's loyalty program to ensure the
supplier is able to greet the guest accordingly and award loyalty points as needed.
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Reason why the reservation cannot be reconciled. Values include the following:
GUEST_REQUESTED_CANCEL - Traveler cancelled the reservation
NO_SHOW - Traveler was a no-show
MODIFY_DATES_AMOUNTS - There was a difference in the booking price when the
lodging partner charged the traveler (for example, because an extra night was
added at the time of stay)
Property type for the district. This type provides what’s possible for the
district. Then, qualifiedPropertyTypes indicates the type and subtype at the
unit level. If subtype is set for the property, you should use both type and subtype.
Field
Description
subtype
Legal property subtype, applicable for residences, such as primary home or
secondary home. (This field provides the value that is specified in the
registration:details:regulatorySubType field of the updateUnitRegistration mutation.)
Legal property type, such as hotel, bed and breakfast, residence, etc. (This
field provides the value that is specified in the
registration:details:regulatoryType field of the updateUnitRegistration mutation.)
List of messages in the message thread. You can specify these arguments:
limit (type: Int), which enables you to limit the number of messages retrieved (up to 50).
cursor (type: String), which is the cursor value for this edge.
orderBy (type: MessageThreadMessagesOrderByInput), which provides the sort
order of results. If not specified, messages are sorted in ascending order
(from oldest to newest) based on the creation date.
For properties onboarded onto Expedia, this is the Expedia reservation ID. For
properties onboarded onto Vrbo, this is the Vrbo internal reservation UUID.
Whether the discount applied on the applicable night is recurring. For
example, if applicableNight is set to 3 and isRecurring is set to true,
the discount will be applied to the third, sixth, ninth nights (and so on).
Additional discount that is added to value for members only. For example, if
value is 10, unit is PERCENT, and memberOnlyAdditionalValue is 5,
members are offered 15 percent off.
Status of the response. The following values may be returned: APPROVED,
BEFORE_SUBMITTED_FOR_MODERATION, QUEUED_FOR_LANG_DETECT, REJECTED,
BEFORE_SUBMITTED_TO_ES, SUBMITTED, and REMOVEDBYCLIENT.
Be aware that reviews may be pending for up to 14 days depending on lodging partner actions and review content.
Whether the promotion is currently bookable based on the its reservation
date/time range. This field is supported in queries only. All dates and times
are relative to the property’s time zone. The promotion may still be
unavailable due to other restrictions. At the time of querying, if the
promotion's bookingLocalDateTimeFrom and bookingLocalDateTimeTo values are
in the past but the travelDateFrom and travelDateTo values are in the
future, the promotion is considered expired because the promotion can no
longer be made available.
Priced (discount) promotion. That is, the traveler benefit here is monetary savings via promotions.
PromotionName
Enum
Name
Description
BASIC_PROMOTION
Flexible offer with restrictions defined by the connectivity or lodging
partner. You can specify this value when creating or updating single and
day-of-week discounts.
EARLY_BOOKING_PROMOTION
Discount offered to travelers who want to book early. You can specify this
value when creating or updating single and day-of-week discounts only.
MULTI_NIGHT_PROMOTION
Multi-night discount that offers a percentage-based discount for applicable
nights. You can specify this value when creating or updating multi-night
discounts only.
SAME_DAY_PROMOTION
Discount offered to attract last-minute travelers by setting up a recurring
deal when the travel date is the same as the booking date. You can specify
this value when creating or updating single discounts only.
Values to indicate whether a promotion is currently bookable based on the its reservation date/time range.
Name
Description
EXPIRED
Promotion cannot be booked because today’s date is after the promotion's bookingLocalDateTimeTo.
CURRENT
Promotion can be booked because today’s date is between the promotion's
bookingLocalDateTimeFrom and .bookingLocalDateTimeTo.
FUTURE
Promotion cannot be booked yet because today's date is before the promotion's
bookingLocalDateTimeFrom. However, this promotion will become available to
book in the future.
PromotionStatus
Enum
Name
Description
ACTIVE
INACTIVE
Property
Object
Representation of a physical property, including its units, reservations, and promotions.
Field
Description
activeStatus
Status of the property on all platforms and property content. It indicates whether the property is live or not.
Aggregated (average) ratings for the property. You can filter the results by
brand name (website) using the filters argument
(AggregatedReviewsFiltersInput input type).
Regulatory requirements and parameters that apply to the property. You can
specify the locale argument to retrieve the results in a specific language;
specify the four-letter ISO code for language. Use a four-character code that
indicates language and region, such as fr_FR for French in France.
Fee sets defined for the property. You can filter the results by one or more
fee set IDs using the filters argument (PropertyFeeSetsFiltersInput input type).
Traveler-facing listing URLs of the property on the requested domains. Specify
the domains argument (type: String!) and provide one or both of these
values: expedia.com, vrbo.com. If you specify expedia.com, the API returns a
listing URL if the property exists an Expedia site. If you specify vrbo.com,
a listing URL is returned if the property exists on a Vrbo site.
List of message threads for a property. You can specify these arguments:
limit (type: Int), which specifies the number of message threads to retrieve (up to 10).
cursor (type: String), which is the cursor value for the page of results to retrieve.
filters (type: PropertyMessageThreadsFiltersInput!), which specifies the creation date range to use to filter results.
orderBy (type: ReviewsOrderBy), which provides the sort order of results.
If not specified, message threads are sorted in ascending order (from oldest
to newest) based on the creation date.
List of promotions that matches the specified arguments. You can specify these arguments:
filter (type: FiltersInput), which enables you to refine the promotions to
retrieve. Note that if you filter results by promotion ID, you cannot specify
addition filters.
pageSize (type: Int!), which is required and specifies the maximum number
of promotions on each page (up to 25) returned by the response. For example,
if there are 40 promotions on a property, you can retrieve two pages if this
argument is set to 25 (page 1 includes 25 promotions, page 2 includes 15 promotions).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
List of the property's reservations that match the specified arguments:
filter (type: ReservationFilterInput), which enables you to refine the
reservations to retrieve. If this argument is not specified, the query returns
all reservations for the property.
pageSize (type: Int!), which is required and specifies the maximum number
of reservations on each page (up to 25) returned by the response. For example,
if there are 40 reservations on a property, you can retrieve two pages if this
argument is set to 25 (page 1 includes 25 reservations, page 2 includes 15 reservations).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
Reviews provided by travelers for the property that match the specified arguments. You can specify these arguments:
filter (type: ReviewFilter), which provides additional arguments to filter the reviews that are returned by the query.
pageSize (type: Int!), which is required and specifies the maximum number
of reviews on each page (up to 100) returned by the response. For example, if
there are 15 reviews on a property, you can retrieve two pages if this
argument is set to 10 (page 1 includes 10 reviews, page 2 includes 5 reviews).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
orderBy (type: ReviewsOrderBy), which provides the sort order of results;
only one field should be specified. If not specified, reviews are sorted by
review creation dateTime.
Value of the rating, from 1 (terrible) to 5 (excellent).
Note: Ratings on Expedia points of sale other than Expedia.com are displayed
using a 10-point scale, which is calculated by doubling the rating provided
through the API. For example, if a traveler submits a 2, 4 is displayed on
Hotels.com. Ratings on non-hotel points of sale are displayed using a 5-point scale.
Reason why the reservation can be reconciled. Values include the following:
GUEST_REQUESTED_CANCEL - Traveler cancelled the reservation
NO_SHOW - Traveler was a no-show
MODIFY_DATES_AMOUNTS - There was a difference in the booking price when the
lodging partner charged the traveler (for example, because an extra night was
added at the time of stay)
Checks the consistency of the information in our systems at the property level
to determine whether the registration information is sufficient to fulfill the
requirements of the property's district. We do not recommend including this
field in the query because it does not provide the true value for some properties.
If false is returned for a unit, you can use the Product API to identify
active units, though false may be returned for inactive units that have
incorrect regulatory information.
Compliance status for mandatory requirements only (at the unit level)
according to the local jurisdiction's regulatory requirements. If invalid
information is provided for an optional regulatory requirement, or if
regulatory information is set in a jurisdiction that does not require
regulatory information, status: COMPLIANT is returned. For optional
requirements, a warning is returned in the warningStatus field of the
updateUnitRegistration mutation's payload.
Note: We strongly recommend that you include this field in your
implementation even though it is nullable. This field provides an audit trail
for reporting purposes.
Whether the jurisdiction requires registration information. Be aware that if a
jurisdiction requires a property owner to apply for a permit but there is no
requirement for us to collect or display the permit, this field will be set to
true (indicating that registration information is optional).
Registration requirement type. (This field provides the value that must be
specified in the
registration:details:registrationRecords:registrationNumberType field of the
updateUnitRegistration mutation.)
Category values for regulatory categories. Most of jurisdiction districts only
allow for two categories, HOTEL and VACATION_RENTAL, though more values
GRAPHQL_VALIDATION_FAILED are provided to satisfy local government requirements.
Name
Description
HOTEL
BED_AND_BREAKFAST
HOTEL_OR_BNB
PRIMARY_HOME
PRIMARY_HOME_WITH_EXCEPTION
SECONDARY_HOME
VACATION_RENTAL
LONG_TERM_ONLY
SHORT_TERM_RENTAL
MINPAKU
SIMPLE_LODGING
EVENT
SPECIAL
NO_LICENSE
HOTEL_RYOKAN
RYOKAN
PRIMARY_OR_SECONDARY
TRANSIENT_OCCUPANCY_RESIDENTIAL_STRUCTURE
MOTEL
HOME_SHARING_NUMBER
VACATION_RENTAL_OTHER
HOSTEL
CAMPING_SITES
RURAL_LODGING
APARTMENT_HOTEL
RegulatoryStatus
Enum
Values for regulatory status.
Name
Description
COMPLIANT
Unit meets all regulatory requirements.
COMPLIANT_ACTION_NEEDED
Unit meets requirements to remain listed but will need to provide
additional information (or other action) in order to not be delisted.
NOT_COMPLIANT
Unit does not meet all regulatory requirements and cannot be shown.
NOT_COMPLIANT_ACTION_NEEDED
Unit is not compliant, but enforcement hasn't started yet. Action should be
taken for the listing to be compliant after enforcement date.
NOT_ALLOWED
Platform does not allow units in this jurisdiction; no actions from partner can affect status.
NONE
Unit's status cannot be determined.
Reservation
Object
Reservation details.
Field
Description
accessibilityText
Accessibility requests made by the guest for the reservation. We strongly
recommend that you include this field in your implementation.
Timestamp of when the reservation was created (format: yyyy-mm-ddThh:mm:ssTZD,
where TZD is a time zone designator in the form +/-hh:mm). Compare this value
to that of lastUpdatedDateTime to determine if a reservation has been modified.
ID of message thread (conversation) associated with the reservation. This
requires implementation and certification of the messaging capability. If no
message threads exist for a reservation, null is returned.
ID of the rate/rate plan and the source of the ID. In the response, when
idSource is set to SUPPLIER, the id field returns the same value as
returned by the existing booking APIs. However, for Hotel Collect properties,
the A- prefix is no longer added to the source value and the A suffix is no
longer appended to the rate ID as was done by the booking APIs.
Source of the reservation. Refer to Booking sources
for the list of possible values (though \"A-\" is not included in Hotel
Collect sources returned by this API).
Value add promotion(s) used to book the reservation, which are additional
benefits that travelers receive based on loyalty tier status, chosen property,
and room type or rate plan they book. If a value add promotion was not used,
an empty array is returned. We strongly recommend that you include this field
in your implementation to ensure traveler-promised perks can be properly
fulfilled by suppliers.
For properties onboarded onto Expedia, this is the partner’s confirmation ID for the booking.
For properties onboarded onto Vrbo, this is the partner’s supplier ID. This ID
may be prefixed with “HA-” to indicate a platform reservation. Two scenarios
account for this:
If the lodging partner was a former platform PM and has upcoming
reservations that were made prior to their conversion to integrated lodging partner.
The lodging partner uses using a third-party calendar sync application, such
as Hospitable, which may create platform bookings. To resolve this, the
partner must disable the third-party application.
Date and time when the reservation was last updated. Compare this value to
that of creationDateTime to determine if a reservation has been
modified.Example:
Resolution status values, which indicate the API's ability to determine if a checkpoint is fulfilled.
Name
Description
RESOLVED
Checkpoint was successfully evaluated.
UNRESOLVED_PROPERTY_NOT_PROVISIONED
API could not determine a fulfilled value because the property is missing from
our internal system. Retry the operation; this is typically caused by a
transient internal error. If the error persists, contact your Technical
Relationship Manager.
UNRESOLVED_CHECKPOINT_SYSTEM_UNAVAILABLE
API could not determine a fulfilled value because of an internal problem.
Retry the operation; this is typically caused by a transient internal error.
If the error persists, contact your Technical Relationship Manager.
Restrictions
Object
Field
Description
bookingLocalDateTimeFrom
Beginning of the date range (inclusive) when the reservation can be made in
order for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in
the property’s local time zone.
End of the date range (inclusive) when the reservation can be made in order
for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in the
property’s local time zone.
Whether this promotion is applicable only to travelers booking on the mobile
device. This field is returned when querying for a single promotion only (by
specifying the promotion ID).
Checkpoint is fulfilled (fulfilled equal to true).
FAILED
Checkpoint is not fulfilled (fulfilled equal to false). This means the
content requirement has not been met. Verify that content is included in the
Listings integration file for processing.
UNRESOLVED
API could not determine the checkpoint's fulfilled value (resolutionStatus
equal to UNRESOLVED_*). Retry the operation; this is typically caused by a
transient internal error. If the error persists, contact your Technical
Relationship Manager.
Review
Object
Review content, including its source, localized text, and reservation information to which it pertains.
Discount that offers a percentage off a rate (such as 15% off).
Field
Description
memberOnlyAdditionalValue
Value of member-only discount applied. For example, if the regular discount is
10% and memberOnlyAdditionalValue is set to 5, a member will receive a 15%
discount and a non-member will receive a 10% discount.
Content requirement (checkpoint) that determines overall status. This field
provides an optional argument, checkpoints(filter: CheckpointFilterInput),
which enables you to filter the returned checkpoints by result. Refer to the
CheckpointFilterInput type for details.
Whether the checkpoint conditions were satisfied. If false, the content
requirement has not been met; verify that content is included in the Listings
integration file for processing.
Ordered list of parent checkpoint nodes in the status calculation tree. If you
need to reconstruct the tree, discover added context about a checkpoint, then
this information may be useful.
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Nightly rate with no additional taxes, fees, or surcharges.
EXTRA_GUEST_FEES
Fees that are included in the price that guests see when booking. They are
paid in advance for Expedia Collect reservations or upon arrival for Hotel
Collect reservations.
SERVICE_FEES
Fees that only apply to guests who make use of specific facilities or
services, such as resort fees, parking fees, or fees for rollaway beds.
RECONCILED_AMOUNT
Updated rate, which must be the commissionable value for the stay date.
Amounts for dates included in the original reservation cannot be modified to a
value of three times more than the commissionable rate applicable to that date.
SupplierLoyaltyPlanInfo
Object
Details about the frequent traveler reward program. This field identifies if the
traveler is a member of the supplier's loyalty program to ensure the supplier is
able to greet the guest accordingly and award loyalty points as needed.
Amenities available in the unit. You can filter by amenity name or whether
it's available (active) by specifying the filters argument (type:
AmenitiesFiltersInput).
Registration information for the unit or room type. You can specify the
locale argument to retrieve the results in a specific language; specify the
four-letter ISO code for language. Use a four-character code that indicates
language and region, such as fr_FR for French in France.