ReferenceProperty API

Property resources

The Property API request message allows you to onboard property attributes, images, policies, and fees. Property API can also be used to update property content, policies, and fees after onboarding as well. This API can be utilized by partners using Availability and Rates API (AR) as well as our Availability, Rate and Inventory (ARI) partners. If you are an ARI partner, there is a small addition to the Onboarding Request - the property’s Brand Code and Chain Code must be defined as well. You can find details here

Property API is RESTful and all requests and responses must be sent over a secure connection. All request and response bodies, including errors are encoded in JSON. Partners wishing to try Product API can use the endpoints and suggested scripts below.

Set or update property details

This endpoint may be used to initiate onboarding for new properties or update existing properties. The request body will accept an array containing between 1 and 50 properties per request. Each property must have a unique Provider Property Id. When sending updates, a full overlay is required for each property.

Request syntax

PUT /properties/v1/{providerName}

Response

The Property API response message is returned synchronously and allows Expedia Group to update the property’s system with the status of the Property API request. The status can either be Success or Error.

The response body will echo back the values of the request received and will include the following additional attributes:

Attribute

Type

Description

expediaId

Int

Expedia Group's unique ID for the property

provider

String

Name of the provider associated with the property (this is your organization)

createdUtc

DateTime

DateTime the property was created in Expedia Group's system

modifiedUtc

DateTime

Last Modified time in Expedia Group's system

status

String

callback URL to get property status. See GET Property Status for more information

Here is an example:

1[
2 {
3 "providerPropertyId": "1289472",
4 "name": "Peach Inn",
5 "provider": "mycompany",
6 "latitude": "23.3752",
7 "longitude": "-81.3261",
8 "providerPropertyUrl": "http://example.org",
9 "structureType": "Hotel",
10 "isVacationRental": false,
11 "currencyCode": "USD",
12 "billingCurrencyCode": "USD",
13 "addresses": [
14 {
15 "line1": "123 Main St.",
16 "city": "B. Hills",
17 "state": "CA",
18 "postalCode": "90210",
19 "countryCode": "USA"
20 }
21 ],
22 "hideAddress": true,
23 "hideExactLocation": true,
24 "ratings": [
25 {
26 "score": 4.0,
27 "maxScore": 5.0,
28 "source": "AAA",
29 "description": "STARS"
30 }
31 ],
32 "contacts": {
33 "Property": {
34 "phoneNumbers": [
35 {
36 "phoneNumberType": "Phone",
37 "countryAccessCode": "1",
38 "areaCode": "123",
39 "number": "1234567"
40 }
41 ]
42 },
43 "ReservationManager": {
44 "firstName": "First",
45 "lastName": "Last",
47 "emails": ["abc@xyz.com"],
49 "phoneNumbers": [
50 {
51 "phoneNumberType": "Phone",
53 "countryAccessCode": "1",
55 "areaCode": "123",
57 "number": "4567890"
58 },
60 {
61 "phoneNumberType": "InternationalReservations",
63 "countryAccessCode": "1",
65 "areaCode": "123",
67 "number": "7890123"
68 }
69 ]
70 },
72 "AlternateReservationManager": {
73 "phoneNumbers": [
74 {
75 "phoneNumberType": "Phone",
77 "countryAccessCode": "1",
79 "areaCode": "123",
81 "number": "1234567"
82 }
83 ]
84 },
86 "GeneralManager": {
87 "firstName": "General",
89 "lastName": "Manager",
91 "emails": ["abc123@xyz.com"]
92 }
93 },
95 "contents": [
96 {
97 "locale": "en-US",
99 "name": "Localized Property Name",
101 "providerPropertyUrl": null,
103 "images": [
104 {
105 "url": "http://images.xyz.com/mainImage.jpg",
107 "categoryCode": "FEATURED_IMAGE",
109 "caption": "Main Image"
110 }
111 ],
113 "amenities": [
114 {
115 "code": "WIFI_INTERNET",
117 "detailCode": "SURCHARGE_PER_STAY",
119 "value": 10.99
120 }
121 ]
122 }
123 ],
125 "propertyCollectedMandatoryFees": [
126 {
127 "code": "RESORT_FEE",
129 "scope": "AMOUNT_PER_PERSON",
131 "duration": "PER_NIGHT",
133 "value": 25.99,
135 "startDate": null,
137 "endDate": null
138 },
140 {
141 "code": "DEPOSIT_OTHER",
143 "scope": "BREAKAGE",
145 "duration": "PER_DAY",
147 "startDate": "2019-09-20",
149 "endDate": "2019-09-28",
151 "value": "14.77"
152 }
153 ],
155 "taxes": [
156 {
157 "code": "VAT",
159 "detailCode": "PERCENT_PER_STAY",
161 "value": 20
162 }
163 ],
165 "policies": [
166 {
167 "code": "MINIMUM_CHECKIN_AGE",
169 "value": "18"
170 },
172 {
173 "code": "FORMS_OF_DEPOSIT_ACCEPTED",
175 "detailCode": "CREDIT_CARDS_ONLY",
177 "value": null
178 },
180 {
181 "code": "DEPOSIT_OTHER",
183 "detailCode": "CASH_ONLY",
185 "value": null
186 }
187 ],
189 "inventorySettings": {
190 "rateAcquisitionType": "NET_RATE",
192 "pricingModel": "PER_DAY",
194 "taxInclusive": false
195 },
197 "attributes": [
198 {
199 "code": "TOTAL_ROOMS",
201 "value": "8"
202 },
204 {
205 "code": "NUMBER_OF_BEDROOMS",
207 "value": "4"
208 },
210 {
211 "code": "NUMBER_OF_BATHROOMS",
213 "value": "3"
214 }
215 ]
216 }
217]

Get property details

Presents your view of the property, which can be used by the Property API client to construct an update overlay message. The response does not necessarily show any fields that have been moderated (modified) by Expedia Group, such as star rating, taxes, latitude/longitude coordinates, or address.

Request syntax

GET /properties/v1/{providerName}/{propertyId}

Response example
1{
2 "entity": {
3 "providerPropertyId": "1234",
5 "provider": "mycompany",
7 "expediaId": 11632,
9 "name": "The Grand Inn",
11 "latitude": "53.3322239619385",
13 "longitude": "-3.1883265505371",
15 "createdUtc": "2015-11-26T12:29:54.311Z",
17 "modifiedUtc": "2015-11-30T22:06:27.865Z",
19 "providerPropertyUrl": "www.thegrandinn.com",
21 "structureType": "HOTEL",
23 "isVacationRental": false,
25 "currencyCode": "GBP",
27 "billingCurrencyCode": null,
29 "addresses": [
30 {
31 "line1": "12 Ires Road",
33 "line2": "",
35 "city": "Glasgow",
37 "state": "",
39 "postalCode": "G12 8NN",
41 "countryCode": "GBR"
42 }
43 ],
45 "hideAddress": true,
47 "hideExactLocation": true,
49 "ratings": [
50 {
51 "score": 5.0,
53 "maxScore": 5.0,
55 "source": "Visit Scotland",
57 "description": "5 STARS"
58 }
59 ],
61 "contacts": {
62 "Property": {
63 "phoneNumbers": [
64 {
65 "phoneNumberType": "Phone",
67 "countryAccessCode": "44",
69 "areaCode": "",
71 "number": "1211234269"
72 },
74 {
75 "phoneNumberType": "InternationalReservations",
77 "countryAccessCode": "44",
79 "areaCode": "",
81 "number": "121336311"
82 }
83 ]
84 },
86 "ReservationManager": {
87 "firstName": "John",
89 "lastName": "Doe",
91 "phoneNumbers": [
92 {
93 "phoneNumberType": "Phone",
95 "countryAccessCode": "44",
97 "areaCode": "",
99 "number": "1212231567"
100 },
102 {
103 "phoneNumberType": "Mobile",
105 "countryAccessCode": "44",
107 "areaCode": "",
109 "number": "1217634321"
110 }
111 ]
112 },
114 "AlternateReservationManager": {
115 "firstName": "John",
117 "lastName": "Doe",
119 "phoneNumbers": [
120 {
121 "phoneNumberType": "Phone",
123 "countryAccessCode": "44",
125 "areaCode": "",
127 "number": "1911934967"
128 },
130 {
131 "phoneNumberType": "Mobile",
133 "countryAccessCode": "44",
135 "areaCode": "",
137 "number": "1996534321"
138 }
139 ]
140 }
141 },
143 "airports": [
144 {
145 "code": "GLA",
147 "name": "Glasgow"
148 }
149 ],
151 "contents": [
152 {
153 "locale": "en-US",
155 "name": null,
157 "providerPropertyUrl": null,
159 "images": [
160 {
161 "url": "https://images.mycompany.com/1234/1234main.jpg",
163 "categoryCode": "FEATURED_IMAGE",
165 "caption": "Main Image"
166 },
168 {
169 "url": "https://images.mycompany.com/1234/1234double.jpg",
171 "categoryCode": "GUESTROOM",
173 "caption": "Double Room Image"
174 }
175 ],
177 "amenities": [
178 {
179 "code": "WIFI",
181 "detailCode": "FREE",
183 "value": 0
184 },
186 {
187 "code": "BREAKFAST",
189 "detailCode": "FREE",
191 "value": null
192 },
194 {
195 "code": "SELF_PARKING",
197 "detailCode": "FREE",
199 "value": 0
200 },
202 {
203 "code": "POOL_INDOOR",
205 "detailCode": null,
207 "value": null
208 },
210 {
211 "code": "PLAYGROUND",
213 "detailCode": null,
215 "value": null
216 },
218 {
219 "code": "GARDEN",
221 "detailCode": null,
223 "value": null
224 }
225 ]
226 }
227 ],
229 "propertyCollectedMandatoryFees": [
230 {
231 "code": "RESORT_FEE",
233 "scope": "AMOUNT_PER_PERSON",
235 "duration": "PER_NIGHT",
237 "value": 25.99,
239 "startDate": null,
241 "endDate": null
242 }
243 ],
245 "taxes": [
246 {
247 "code": "VAT",
249 "detailCode": "PERCENT_PER_STAY",
251 "value": 20
252 }
253 ],
255 "policies": [
256 {
257 "code": "ACCEPTS_VISA",
259 "detailCode": null,
261 "value": null
262 },
264 {
265 "code": "ACCEPTS_MASTERCARD",
267 "detailCode": null,
269 "value": null
270 },
272 {
273 "code": "CHECKIN_START_TIME",
275 "detailCode": null,
277 "value": "11:00 AM"
278 },
280 {
281 "code": "CHECKIN_END_TIME",
283 "detailCode": null,
285 "value": "11:00 PM"
286 },
288 {
289 "code": "CHECKOUT_TIME",
291 "detailCode": null,
293 "value": "10:00 AM"
294 },
296 {
297 "code": "BOOKING_CUTOFF_TIME",
299 "detailCode": null,
301 "value": "1:00 PM"
302 },
304 {
305 "code": "BOOKING_CUTOFF_DAY",
307 "detailCode": null,
309 "value": "SAME_DAY"
310 },
312 {
313 "code": "CANCELLATION_CUTOFF_TIME",
315 "detailCode": null,
317 "value": "2:00 PM"
318 },
320 {
321 "code": "MINIMUM_CHECKIN_AGE",
323 "detailCode": null,
325 "value": "18"
326 },
328 {
329 "code": "SMOKING_POLICY",
331 "detailCode": "SMOKE_FREE_PROPERTY",
333 "value": null
334 },
336 {
337 "code": "CATERS_TO",
339 "detailCode": "NO_BACHELOR_PARTIES",
341 "value": null
342 },
344 {
345 "code": "CATERS_TO",
347 "detailCode": "NO_BACHELORETTE_PARTIES",
349 "value": null
350 }
351 ],
353 "inventorySettings": {
354 "rateAcquisitionType": "SELL_LAR",
356 "pricingModel": "PER_DAY",
358 "onStopSell": true
359 },
361 "attributes": [
362 {
363 "code": "TOTAL_ROOMS",
365 "value": "8"
366 },
368 {
369 "code": "NUMBER_OF_BEDROOMS",
371 "value": "4"
372 },
374 {
375 "code": "NUMBER_OF_BATHROOMS",
377 "value": "3"
378 }
379 ],
381 "status": {
382 "href": "/properties/v1/mycompany/10/status"
383 }
384 }
385}

Get property status

The onboarding process is an asynchronous workflow, so this endpoint should be polled no more than once per hour to retrieve the most recent status of the property and its assigned Expedia ID.

Note: Product API cannot be called to add new room types/rate plans until after a property has reached the OnboardingSucceeded status. Similarly, property status resources are accessible only after property creation is completed in our systems.
Request syntax

GET /properties/v1/{providerName}/{propertyId}/status

Response example
1{
2 "entity": {
3 "provider": "mycompany",
5 "providerPropertyId": 1234,
7 "expediaId": null,
9 "code": "OnboardingFailed",
11 "reasonCodes": ["InvalidLatLong", "MissingPhoneNumber"],
13 "timestampUtc": "2015-08-26T00:01:06.055Z",
15 "messages": [
16 "Invalid latitude/longitude: 0.0/0.0.",
18 "No valid phone numbers found."
19 ]
20 }
21}

A complete list of reason codes can be found on the code list page.

Update a property by Expedia property ID

Updating a property that is already onboarded is a similar operation to the original onboarding - a full overlay of a single property is required. It is recommended that you GET the property details first, modify the fields that you'd like to change (and/or add new), then send the entire JSON document as a PUT request to update the property. The full overlay must include images as well.

Example: If there are 10 images loaded via Property API and then another PUT was sent with 4 Images, then 6 images would be removed. If an overlay is sent with an empty image array in the PUT, then all 10 will be removed. To ensure images are not removed, partners should trigger a GET by Expedia ID prior to the update and ensure the images piece is retained in the update. Partners may find the functionality ofImage API easier for image management if properties often update content or images.

Note: PATCH is not supported at this time. A complete overlay is required for updates. This includes any images submitted with Property API. See Update a property by Expedia Property ID for more details.
Request syntax

PUT /properties/v1/{ExpediaPropertyId}

Response example
1{
2 "providerPropertyId": "1289472",
4 "name": "Peach Inn",
6 "provider": "mycompany",
8 "latitude": "23.3752",
10 "longitude": "-81.3261",
12 "providerPropertyUrl": "http://example.org",
14 "structureType": "Hotel",
16 "isVacationRental": false,
18 "currencyCode": "USD",
20 "billingCurrencyCode": "USD",
22 "addresses": [
23 {
24 "line1": "123 Main St.",
26 "city": "B. Hills",
28 "state": "CA",
30 "postalCode": "90210",
32 "countryCode": "USA"
33 }
34 ],
36 "hideAddress": true,
38 "hideExactLocation": true,
40 "ratings": [
41 {
42 "score": 4.0,
44 "maxScore": 5.0,
46 "source": "AAA",
48 "description": "STARS"
49 }
50 ],
52 "contacts": {
53 "Property": {
54 "phoneNumbers": [
55 {
56 "phoneNumberType": "Phone",
58 "countryAccessCode": "1",
60 "areaCode": "123",
62 "number": "1234567"
63 }
64 ]
65 },
67 "ReservationManager": {
68 "firstName": "First",
70 "lastName": "Last",
72 "emails": ["abc@xyz.com"],
74 "phoneNumbers": [
75 {
76 "phoneNumberType": "Phone",
78 "countryAccessCode": "1",
80 "areaCode": "123",
82 "number": "4567890"
83 },
85 {
86 "phoneNumberType": "Mobile",
88 "countryAccessCode": "1",
90 "areaCode": "123",
92 "number": "7890123"
93 }
94 ]
95 },
97 "AlternateReservationManager": {
98 "phoneNumbers": [
99 {
100 "phoneNumberType": "Phone",
102 "countryAccessCode": "1",
104 "areaCode": "123",
106 "number": "1234567"
107 }
108 ]
109 },
111 "GeneralManager": {
112 "firstName": "General",
114 "lastName": "Manager",
116 "emails": ["abc123@xyz.com"]
117 }
118 },
120 "contents": [
121 {
122 "locale": "en-US",
124 "name": "Localized Property Name",
126 "providerPropertyUrl": null,
128 "images": [
129 {
130 "url": "http://images.xyz.com/mainImage.jpg",
132 "categoryCode": "FEATURED_IMAGE",
134 "caption": "Main Image"
135 }
136 ],
138 "amenities": [
139 {
140 "code": "WIFI_INTERNET",
142 "detailCode": "SURCHARGE_PER_STAY",
144 "value": 10.99
145 }
146 ]
147 }
148 ],
150 "propertyCollectedMandatoryFees": [
151 {
152 "code": "RESORT_FEE",
154 "scope": "AMOUNT_PER_PERSON",
156 "duration": "PER_NIGHT",
158 "value": 25.99,
160 "startDate": null,
162 "endDate": null
163 },
165 {
166 "code": "DEPOSIT_OTHER",
168 "scope": "BREAKAGE",
170 "duration": "PER_DAY",
172 "startDate": "2019-09-20",
174 "endDate": "2019-09-28",
176 "value": "14.77"
177 }
178 ],
180 "taxes": [
181 {
182 "code": "VAT",
184 "detailCode": "PERCENT_PER_STAY",
186 "value": 20
187 }
188 ],
190 "policies": [
191 {
192 "code": "MINIMUM_CHECKIN_AGE",
194 "value": "18"
195 },
197 {
198 "code": "FORMS_OF_DEPOSIT_ACCEPTED",
200 "detailCode": "CREDIT_CARDS_ONLY",
202 "value": null
203 },
205 {
206 "code": "DEPOSIT_OTHER",
208 "detailCode": "CASH_ONLY",
210 "value": null
211 }
212 ],
214 "inventorySettings": {
215 "rateAcquisitionType": "NET_RATE",
217 "pricingModel": "PER_DAY",
219 "taxInclusive": false
220 },
222 "attributes": [
223 {
224 "code": "TOTAL_ROOMS",
226 "value": "8"
227 },
229 {
230 "code": "NUMBER_OF_BEDROOMS",
232 "value": "4"
233 },
235 {
236 "code": "NUMBER_OF_BATHROOMS",
238 "value": "3"
239 }
240 ]
241}

Deactivate a property

Sending a DELETE for an onboarded property will deactivate the property in Expedia Group's system. Content will not be deleted and the property's state will be changed to inactive. The property can later be re-enabled using the Set Property Details API call. A success response to the delete request will be a 200/OK and the response will echo back the details of the property which was just deleted.

Request syntax

DELETE /properties/v1/{providerName}/{propertyId}

Response example
1{
2 "entity": [
3 {
4 "providerPropertyId": "1234",
6 "provider": "mycompany",
8 "expediaId": null,
10 "name": "Property Name",
12 "latitude": "21.3752",
14 "longitude": "-88.3261",
16 "createdUtc": "2015-11-20T00:16:16.819Z",
18 "modifiedUtc": "2015-11-20T15:42:28.605Z",
20 "providerPropertyUrl": "http://example.org",
22 "structureType": "Hotel",
24 "isVacationRental": false,
26 "currencyCode": "GBP",
28 "billingCurrencyCode": "GBP",
30 "addresses": [
31 {
32 "line1": "Address Line 1",
34 "line2": null,
36 "city": "City",
38 "state": "State or Province",
40 "postalCode": "77780",
42 "countryCode": "IRL"
43 }
44 ],
46 "ratings": [
47 {
48 "score": 4.0,
50 "maxScore": 5.0,
52 "source": "AAA",
54 "description": "4 STARS"
55 }
56 ],
58 "hideAddress": true,
60 "hideExactLocation": true,
62 "contacts": {
63 "Property": {
64 "phoneNumbers": [
65 {
66 "phoneNumberType": "Phone",
68 "countryAccessCode": "1",
70 "areaCode": "123",
72 "number": "1234567"
73 }
74 ]
75 },
77 "ReservationManager": {
78 "firstName": "First",
80 "lastName": "Last",
82 "emails": ["abc@xyz.com"],
84 "phoneNumbers": [
85 {
86 "phoneNumberType": "Phone",
88 "countryAccessCode": "1",
90 "areaCode": "123",
92 "number": "4567890"
93 },
95 {
96 "phoneNumberType": "Mobile",
98 "countryAccessCode": "1",
100 "areaCode": "123",
102 "number": "7890123"
103 }
104 ]
105 },
107 "AlternateReservationManager": {
108 "phoneNumbers": [
109 {
110 "phoneNumberType": "Phone",
112 "countryAccessCode": "1",
114 "areaCode": "123",
116 "number": "1234567"
117 }
118 ]
119 },
121 "GeneralManager": {
122 "firstName": "General",
124 "lastName": "Manager",
126 "emails": ["abc123@xyz.com"]
127 }
128 },
130 "contents": [
131 {
132 "locale": "en-US",
134 "name": "Localized Property Name",
136 "providerPropertyUrl": null,
138 "images": [
139 {
140 "url": "images.xyz.com/mainImage.jpg",
142 "categoryCode": "FEATURED_IMAGE",
144 "caption": "Main Image"
145 }
146 ],
148 "amenities": [
149 {
150 "code": "BREAKFAST",
152 "detailCode": "FREE",
154 "value": null
155 },
157 {
158 "code": "WIFI",
160 "detailCode": "SURCHARGE_PER_STAY",
162 "value": 10.99
163 }
164 ]
165 }
166 ],
168 "propertyCollectedMandatoryFees": [
169 {
170 "code": "RESORT_FEE",
172 "scope": "AMOUNT_PER_PERSON",
174 "duration": "PER_NIGHT",
176 "value": 25.99,
178 "startDate": null,
180 "endDate": null
181 }
182 ],
184 "taxes": [
185 {
186 "code": "VAT",
188 "detailCode": "PERCENT_PER_STAY",
190 "value": 20
191 }
192 ],
194 "policies": [
195 {
196 "code": "MINIMUM_CHECKIN_AGE",
198 "detailCode": null,
200 "value": "18"
201 },
203 {
204 "code": "CHECKIN_TIME",
206 "detailCode": null,
208 "value": "2:00 PM"
209 },
211 {
212 "code": "CHECKOUT_TIME",
214 "detailCode": null,
216 "value": "11:00 AM"
217 },
219 {
220 "code": "CANCELLATION_CUTOFF_TIME",
222 "detailCode": null,
224 "value": "6:00 PM"
225 }
226 ],
228 "attributes": [
229 {
230 "code": "TOTAL_ROOMS",
232 "value": "8"
233 },
235 {
236 "code": "NUMBER_OF_BEDROOMS",
238 "value": "4"
239 },
241 {
242 "code": "NUMBER_OF_BATHROOMS",
244 "value": "3"
245 }
246 ]
247 }
248 ]
249}

Definitions

property

Attribute

Type

Required for Onboarding

Updatable?

Notes

providerPropertyId

String

Yes

No

Unique ID for the property from the Provider's system. Allowable characters include ASCII a-z, A-Z,0-9, underscore, dash.

name

String

Yes

Yes

Default Property Name. Must be submitted in Western European Character set.

provider

String

Yes

No

Provider Name; should be same as the one used in the Set Property Details endpoint

latitude

String

Yes

No

Property Latitude, use ISO-6709. May be modified by Expedia Group and updates submitted after initial onboarding will not be processed.

longitude

String

Yes

No

Property Longitude, use ISO-6709. May be modified by Expedia Group and updates submitted after onboarding will not be processed.

providerPropertyUrl

String

No

Yes

URL for property's website, must be submitted in Western European Character set.

structureType

String

Yes

Yes

Must use predefined structureType code. See code list

isVacationRental

Boolean

No

Yes

Used to specify if the property onboarded is categorized Vacation Rental or not

currencyCode

String

Yes

No

Expedia Group uses the currencyCode for pricing purposes, please submit an ISO-4217 code for both currencyCode. Note that if the property is on Expedia Collect or Expedia Traveler Preference business model, currencyCode and billingCurrencyCode must match or onboarding will fail.

billingCurrencyCode

String

Yes

No

Use ISO-4217. billingCurrencyCode is used for invoicing and has to be one of the currencies set up by your Expedia Group Technical Relationship Manager for billing. Cannot be updated after initial onboarding. Note that if the property is on Expedia Collect or ExpediaTraveler Preference business model, currencyCode and billingCurrencyCode must match or onboarding will fail.

addresses

Array of Address objects

Yes

No

See Address below.

hideAddress

Boolean

No

Yes

Determines whether or not the property should have the address shown pre-booking on the live site

hideExactLocation

Boolean

No

Yes

Determines whether or not the property should be using an obfuscated lat/long pre-booking

ratings

Array of Rating objects

No

No

See Rating below.

contacts

Dictionary of Contact objects

Yes

Yes

See Contact below.

contents

Array of Content

Yes

Yes

See Content below.

propertyCollectedMandatoryFees

Array of PropertyCollectedMandatoryFee

No

Yes

See PropertyCollectedMandatoryFee below.

policies

Array of Policy

No

Yes

See Policy below.

inventorySettings

Array of InventorySettings

No

Yes

See InventorySettings below.

taxes

Array of Tax

No

Yes

See Tax below. Though not required for the property data to successfully pass to Expedia Group, properties cannot go live without this information.

attributes

Array of Attribute

No

Yes

See Attributes - property specifics below. Note that for vacation rental properties, the NUMBER_OF_BEDROOMS and NUMBER_OF_BATHROOMS are required as part of the minimum content requirements. See Set property details codes for information about whether Expedia Group considers a property type to be conventional lodging or a vacation rental structure type.

address

Attribute

Type

Required

Notes

line1

String

Yes

  • Number and Civic address.
  • This is the address used by travelers to reach your property.
  • Refrain from using informal instructions like “(across from the mall)”.
  • Minimum 5 Characters Required. If your address is longer than 40 characters, we recommend you continue with Line2.
  • You will not produce a validation error for longer addresses, but the value may be parsed inaccurately.

line2

String

No

city

String

Yes

Town/City

state

String

No

State/Province

postalCode

String

No

ZIP/Postal Code

countryCode

String

Yes

Use ISO 3166-1 alpha-2 or alpha-3. Stored in Expedia Group's system as alpha-3.

Rating

Only star rating is displayed for a property. Rating data submitted will be reviewed and subject to revision by Expedia Group.

Attribute

Type

Required

Notes

score

Decimal

Yes

Normalized Score, e.g. 4.0

maxScore

Decimal

Yes

The maximum score possible for the rating scale, e.g. 5.0 if the highest rating is 5 stars.

description

String

Yes

Only supported value is "Stars"

source

String

No

More descriptive information about the star rating. Indicate here if national or non-national rating and affiliation.

contact

Contact set data are represented as a dictionary, with the following dictionary keys (strict checking against the key name).

Dictionary Key

Required

Notes

Property

Yes

Contact Info for the physical property

ReservationManager

Yes

firstName, lastName, and an email address is required. Property will fail onboarding if this information is not submitted. The firstName, lastName must be between 2 and 25 characters, inclusive, without whitespace-padding. Cannot contain Unicode.

AlternateReservationManager

Yes

Phone number required - used as emergency (24hour) contact for customer booking issues. Property will fail onboarding if this information is not submitted. FirstName and LastName values are obtained from ReservationManager, if not provided. Prefix of "24hr- " is added to FirstName if the field is not provided. The firstName, lastName must be between 2 and 25 characters, inclusive, without whitespace-padding. Cannot contain Unicode.

GeneralManager

No

If a phone number is provided, telesales inquiries about property amenities will be directed to this number instead of contacting the property directly.

PropertyExtranetUser

No

First Name, Last Name, email address required. An account for Partner Central will be created during the onboarding process and credentials will be sent to the email address submitted. This Partner Central account can be used by the property to read and respond to user reviews and reports for the property. Any content updates submitted with Partner Central can be overwritten by an update submitted with the Property API.

Description of contact info accepted

Attribute

Type

Required

Notes

firstName

String

Yes

Required for ReservationManager and PropertyExtranetUser, optional for others. Data type: string, 2-25 characters, inclusive, without whitespace-padding. Cannot contain Unicode.

lastName

String

Yes

Required for ReservationManager and PropertyExtranetUser, optional for others. Data type: string, 2-25 characters, inclusive, without whitespace-padding. Cannot contain Unicode.

phoneNumbers

Array of PhoneNumbers

See Notes

Phone required for Property, ReservationManager, AlternateReservationManager

emails

Array of Strings

See Notes

Email required for ReservationManager. Must be well-formed Internet format and cannot contain Unicode. For all contact types other than Property, only one email address is permitted.

phoneNumber

Attribute

Type

Required

Notes

phoneNumberType

String

No

Strict checking against this list of phone number types. If no type is submitted, then the default of 'Undefined' will be used.

countryAccessCode

String

No

Country Calling Code. Use ITU standard E.123/E.164.

areaCode

String

No

Use Telephone numbering plan standards.

number

String

Yes

Include the country and area code within the submitted number.

content

Attribute

Type

Required

Notes

locale

String

Yes

en-US must be used, no other language tag is supported

name

String

No

Property name for specified locale, e.g. en-US. If none is provided, then the default property name will be used.

images

Array of Image

Yes

See Image below.

amenities

Array of Amenity

Yes

See Amenity below.

Image

We recommend all partners to abide to the Expedia Group standards for images to ensure good content:

  • Photo Quantity: A minimum of 3 images per property. For better conversion to bookable units, Expedia Group suggests sending at least 20 property photos.
  • GuestRoom Coverage: 4 or more photos for each room type and 1 photo of the bathroom
  • Photo Quality: Photos should be high resolution, or 2,880 pixels or higher on the longest edge, with a maximum file size of 15 MB. Images below 650x650 pixels will be rejected. Photos must be in one of the following file formats:
    • JPG
    • PNG
    • BMP

When updating images, note that updates are full overlay.

Example: If there are 10 images loaded via Property API and then another PUT was sent with 4 Images, then 6 images would be removed. If an overlay is sent within an empty photo in the PUT, then all 10 will be removed.

Note: Property API does not send error messages when an image is rejected. To find out what images are currently associated with a property, use Image API or the GET by Expedia ID functionality.

Attribute

Type

Required

Notes

url

String

Yes

The image URL. Please note, Expedia Group first has to whitelist your image host domains. Contact us to have this completed.

categoryCode

String

No

See Image category code list. Expedia Group strongly recommends sending the image code categories. If not provided, Expedia Group will provide categorization, but images may not display optimally until this is completed.

name

String

No

Image Caption

amenity

Attribute

Type

Required

Notes

code

String

Yes

See the code list. Expedia requires at least 10 amenities to be sent per property

detailCode

String

See code list

See code list

value

Numeric

See code list

See code list

PropertyCollectedMandatoryFee

Attribute

Type

Required

Notes

code

String

Yes

See code list.Used to define Fees collected at the time of guest check-in. Please refrain from using this Property level fee attribute for fees that are to be collected at the time of booking.

If there are fees collected at the time of booking, please utilize the Rate plan level Service Fees (Refer to Product API documentation for further details).

scope

String

Yes

See code list

duration

String

Yes

See code list

value

Decimal

Yes

Fee amount in the property's currency. Example: 24.99

startDate

String

No

If fee is only offered on specific days during the year, provide a recurring start and end date. If no dates are provided, it would be considered for Year round. The date range (yyyy-mm-dd format) can only be for 365 days and startDate year should be current year

endDate

String

No

policy

Attribute

Type

Required

Notes

code

String

Yes

See code list

value

String

Yes

inventorySettings

Attribute

Type

Required

Notes

rateAcquisitionType

String

No

See code list

pricingModel

String

No

See code list

distributionModels

Array

No

See code list

taxInclusive

Boolean

No

Please note, you would have to specify this at Rate plan level as well when you create them using Product API.

tax

Attribute

Type

Required

Notes

code

String

Yes

See code list

detailCode

String

See code list

See code list

value

Number

Yes

Tax value of 0 (zero) is also accepted.