ショッピング
Shopping API を使用して、世界中の 700,000 か所の施設の最新の料金と空室状況にアクセスできます。
概要
指定した施設 (1 回のリクエストで最大 250 施設) のすべての客室タイプの料金と空室状況が Shopping API から返されます。応答には、プロモーション、料金が払い戻し可能かどうか、キャンセル料金、該当する市場での料金表示条件を満たす完全な料金内訳など、料金に関する詳細が表示されます。
occupancy
パラメータのインスタンスを複数組み込む形で、同じタイプの客室を複数リクエストすることもできます。同じリクエストで同じ定員が複数回リクエストされた場合、応答にはその定員の 1 つの料金セットのみが含まれます。最大 8 部屋までを一度にリクエストできます。一度に8室以上のご予約が必要な場合は、担当のアカウントマネージャーまでご連絡ください。お客様のご要望をお聞かせください。
価格表示に関する変更
現地規制による最近の変更にご注意ください:
- カリフォルニア州価格表示規制 (カリフォルニア州議会法案 537) 2024-07-01 から発効
- ミネソタ州価格表示規制(第111章--H.F.No.3438) 、2025-01-01より発効。
このほかにも規制はあると思いますが、その都度このページを更新するつもりはありません。
なぜ変更したのですか?
一部の管轄区域では、旅行者に料金を表示する方法を義務付ける法律が施行されています。各法律は微妙に異なりますが、私たちが実施した変更により、個別のコンプライアンスが可能になります。
エクスペディアグループは、APIパートナーが様々な方法で価格を表示できるようにAPIに変更を加えました。ただし、最終的には、エクスペディア グループの API を使用する各パートナーは、エクスペディアの旅行情報と価格を表示する方法が法律に準拠していることを確認する責任を負います。
変更点は何ですか?
Expedia は Rapid API を強化し、基本料金、Expedia と宿泊施設によって徴収されるすべての手数料と税金を含む合計料金を含む新しいフィールド property_inclusive を追加しました。この合計価格のストライク・スルー・バージョンは、新しいフィールドでも利用可能ですproperty_inclusive_strikethrough
。新しいプロパティの包括的な表示フィールドに加えて、税金と手数料がAPIレスポンスで分割される方法を再編成しました。エクスペディアが徴収する料金はすべて、1 泊および滞在property_fee
の料金内訳の一部です。また、エクスペディアが徴収する税金はすべて、1 泊および滞在tax_and_service_fee
の料金内訳の一部です。
エクスペディア コレクト レートの場合、billable_currency
およびproperty_inclusive
フィールドのproperty_inclusive_strikethrough
は、エクスペディア グループとサプライヤーとの契約で指定された通貨 (通常は物件の現地通貨) になります。これは、request_currency
に関係なく、property_inclusive
とproperty_inclusive_strikethrough
フィールドには、現地通貨で物件で徴収された料金が含まれている可能性があるためです。この動作は、inclusive
およびinclusive_strikethrough
フィールドとは異なります。エクスペディア コレクト料金のbillable_currency
は、request_currency
と同じになります。
Shop レスポンスでは、収集されたプロパティの金額は、Content レスポンスで提示された金額とは異なるグループ分けがされている可能性があります。それでも合計は正しく一致するはずです。
この変更は、全プロパティに対して実施されたグローバルな変更です。この変更に関するご質問は、担当のアカウントマネージャーにお問い合わせください。
ロイヤルティポイント
エクスペディアのビジネスレートプログラムに参加しているロイヤルティプログラムがある宿泊施設では、宿泊でホテルのロイヤルティポイントが貯まる機会をビジネス旅行者に提供しています。パートナーは Shopping 応答の amenities ノードを使用することで、旅行者から会員情報を取得する前にロイヤルティの対象となるかどうかを確認し、対象となるかどうかを表示できます。
Shopping API リクエストで loyalty
値フィルターを使用することで、ロイヤルティ対象のビジネスレートに絞って検索することもできます。
注 : ホテルに以前からロイヤルティプログラムがある場合に限り、ビジネスレートでもロイヤルティポイントを獲得できます。
例 :
ロイヤルティポイントの対象となるホテルビジネスレートには、検索の応答の amenities
ノードの下に以下のパラメーターがあります。
{
"id": "2096",
"name": "Eligible for hotel loyalty points"
}
コミッションインセンティブ
Rapid API パートナーは、指定された宿泊予約日や滞在期間に対して宿泊施設のマージンがより高くなる追加のコミッション インセンティブを利用できます。有効なコミッション インセンティブを提供する宿泊施設を特定するには、Rapid Shopping API リクエストの include
パラメーターで rooms.rates.marketing_fee_incentives
の値を使用してください。リクエストされた滞在期間のすべてまたは一部にコミッション インセンティブが提供される料金には、Shopping API レスポンスの marketing_fee_incentives
オブジェクトにインセンティブの提供元や影響を受ける宿泊部分などの追加の詳細情報が含まれています。在庫の並べ替えと選定プロセスで、この内容と既存のmarketing_fee
フィールド、つまり利用可能なすべてのインセンティブを含むマーケティング手数料の概算について検討することができます。
例
宿泊施設 19248 は、12 月の宿泊に高いマージンを提供しています。ショッピングAPIリクエスト 物件 19248 にリクエストしてください。ショッピングAPIのmarketing_fee_incentives
レスポンスのオブジェクトでは、12月22日から12月31日までのリクエストされた宿泊の一部に対して利用可能なインセンティブがあることがわかります。 これは14泊のうち10泊に相当します。
リクエストの例
curl -X GET "https://test.ean.com/v3/properties/availability\
?checkin=2023-12-22\
&checkout=2024-01-05\
¤cy=USD\
&country_code=US\
&language=en-US\
&occupancy=2\
&property_id=19248\
&rate_plan_count=1\
&sales_channel=website\
&sales_environment=hotel_only\
&include=rooms.rates.marketing_fee_incentives\
&travel_purpose=leisure" \
-H "accept: application/json, application/json"\
-H "accept-encoding: gzip"\
-H "authorization: EAN apikey=abcd1234,signature=090a77e7ddd7779980231,timestamp=1697664047"\
-H "user-agent: TravelNow/3.30.112"
レスポンスの例
[
{
"property_id": "19248",
"rooms": [
{
"id": "123abc",
"room_name": "Fancy Queen Room",
"rates": [
{
"id": "333abc",
...
"marketing_fee_incentives": [
{
"source": "property",
"start": "2023-12-22",
"end": "2023-12-31"
}
],
"occupancy_pricing": {
"2": {
"nightly": [ ... ],
"stay": [ ... ],
"totals": {
"inclusive": { ... },
"exclusive": { ... },
"inclusive_strikethrough": { ... },
"strikethrough": { ... },
"marketing_fee": {
"billable_currency": {
"value": "276.36",
"currency": "USD"
},
"request_currency": {
"value": "276.36",
"currency": "USD"
}
},
"gross_profit": { ... },
"minimum_selling_price": { ... },
"property_fees": { ... }
},
"fees": { ... }
}
}
}
]
}
]
}
]
旅行の目的
travel_purpose
パラメータを使用すると、旅行の目的がビジネスなのかレジャーなのかを指定できます。2024 年 4 月 1 日以降、ビジネス料金で購入できるパートナーは、ショップリクエストで travel_purpose=business
を使用して、ショップ応答でビジネス料金を受け取る必要があります。リクエストに travel_purpose
パラメータが指定されていない場合はレジャーとみなされ、ビジネス料金は返されません。
例
Availability API リクエストに 24 文字追加するだけで、お客様がビジネス目的で旅行する意向であることを簡単に指定できます。
&travel_purpose=business
取消線でお得感をアピールした料金表示
strikethrough
フィールドには、ホテルが資金提供する割引が適用される前の税抜合計金額が表示されます。通常は検索結果に税金や手数料を含まない基本価格を表示する、米国などのロケールでこのフィールドを使用する必要があります。inclusive_strikethrough
フィールドには、税金と手数料を含む、割引前の合計金額が表示されます。オールインクルーシブ価格 (基本価格、税金、手数料) を表示するロケールに適用される割引をより明確に表示できるようにこのフィールドは設計されています。このフィールドは、請求可能な通貨とリクエストされた通貨の両方で値を返します。
例
[
{
"property_id": "19248",
"rooms": [
{
"id": "123abc",
"room_name": "Fancy Queen Room",
"rates": [
{
"id": "333abc",
...
"occupancy_pricing": {
"2": {
"nightly": [ ... ],
"stay": [ ... ],
"totals": {
"inclusive": { ... },
"exclusive": { ... },
"inclusive_strikethrough": {
"billable_currency": {
"value": "726.63",
"currency": "CAD"
},
"request_currency": {
"value": "549.60",
"currency": "USD"
}
},
"strikethrough": {
"billable_currency": {
"value": "650.00",
"currency": "CAD"
},
"request_currency": {
"value": "491.64",
"currency": "USD"
}
},
"marketing_fee": { ... },
"gross_profit": { ... },
"minimum_selling_price": { ... },
"property_fees": { ... }
},
"fees": { ... }
}
}
}
]
}
]
}
]
プロモーションおよび割引価格の表示
Availability API と Price Check API で提供されるプロモーションや取り消し線に基づいて割引された額を表示する場合、販売拠点によっては、通常料金 (つまり、割引の計算に使用される料金) についての詳細を示す必要があります。使用する表現については以下の文を参照してください。
EU : 通常料金の詳細を明確に示します (例 : 「この料金は、検索内容に基づき施設によって示された通常料金です」)。
イタリア : 次の表現を使用します : “Questo prezzo è basato sulla tariffa generalmente applicabile fornita dalla struttura per questa camera e per queste date”。
払い戻しオプション
current_refundability
フィールドでは、パートナーはすべての払い戻しオプションを表示することができ、旅行者に料金の透明性と柔軟性を提供します。
選択肢は3つ:
refundable
non_refundable
partially_refundable
一部払い戻しとはどういう意味ですか?
一部払い戻しとは、以下のような料金を指します:
- キャンセルのペナルティ は、0以上予約総額未満です。
または
- 滞在期間内でも返金不可の日程があります。
**** current_refundability
フィールドを活用することは、払い戻し可能なブール値フラグを単独で使用するよりもどのように良いのでしょうか?
refundable
のブール値フラグは、料金が全額払い戻し可能かどうかを示しますが、一部払い戻し可能な料金についてはfalse
の結果が返されるため、旅行者の誤解を招きます。current_refundability
フィールドは、料金の払い戻し可能性に関するより正確な情報を提供する、より微妙なオプションを提供します。
ショップのレスポンスで current_refundability
フィールドをパートナーが受け取るにはどうすればよいですか?
パートナーは、ショップリクエストのcurrent_refundability
パラメータの下にあるinclude
フィールドをリクエストする必要があります。
例
"property_id": "23060",
"status": "available".
"rates": [
{
"id": "201392692",
"status": "available",
...
...
...
...
"current_refundability": partially_refundable,
"cancel_penalties":[
{
"start": "2024-10-08T23:59:00.000+02:00",
"end": "2024-10-09T23:59:00.000+02:00",
"nights":"1",
"currency": "EUR"
}
]
}
]
利用不可理由
unavailable_reason
機能を使用すると、設定された滞在 (滞在期間と宿泊者数) で宿泊施設が完全に利用できない理由に関する実用的な情報をリクエストできます。この情報を応答で受け取るには、ショッピング時にオプションのリクエストパラメーター include=unavailable_reason
を含める必要があります。ただし、利用できないすべての宿泊施設に、予約できないことに関する不適切な理由があるわけではありません。これらの宿泊施設は応答では返されません。
ショップ応答には、空室がある宿泊施設とそうでない宿泊施設が混在する場合があります。利用できない宿泊施設には property_id
、score
、unavailable_reason
セクションが含まれます。このセクションには、利用できない宿泊施設に関する簡単な説明 (英語) がある code
と、宿泊施設 / 客室 / 料金プランを利用可能にするためにリクエストで調整できる追加情報の data
が含まれます。たとえば、unavailable_reason
code
が adults_exceed_threshold
の場合、data
内の 2 は、その客室 / 料金で許可される最大人数が大人 2 名であることを意味し、宿泊者数が 2 名を超える場合はエラーが返されます。
注 : 宿泊施設には複数の制限を適用できますが、返される unavailable_reason
は 1 つだけです。
例
[
{
"property_id": "824739",
"score": 12345,
"unavailable_reason": {
"code": "adults_exceed_threshold",
"data": "2"
}
}
]
返されるコードの完全なリストについては、こちらを参照してください。
設備 / サービスフィルター
必要に応じて、amenity_category
リクエストパラメータと 1 つ以上の特定の設備 / サービスを使用して、Rapid Shop 応答で返された宿泊施設を絞り込むことができます。
応答の絞り込みに使用できる設備 / サービスのリストについては、こちらにある「コンテンツリファレンスリスト」の「アメニティカテゴリ」セクションを参照してください。
例
単一の設備 / サービスフィルター :
&amenity_category=free_breakfast
複数の設備 / サービスフィルター :
&amenity_category=free_breakfast&amenity_category=free_airport_transfer&amenity_category=casino
レート制限
トラフィックの最適化は、パートナーにレート制限を適用することによって実現します。これらのレート制限により、安定した保守可能なサービスをパートナーに継続的に提供できると同時に、Expedia Group システムの効率的な使用を確保できます。ショップのトラフィックの場合、負荷を決定する重要な要素は、各リクエストで検索される宿泊施設の数、客室の数、滞在期間です。
レート制限の詳細については、 こちらを参照してください。
Price Check
Shop の応答で返された料金を確定します。予約を行う前にこの API を使用して、以前に選択した料金が現在も有効であることを確認します。料金が一致する場合、応答には予約をリクエストするためのリンクが返されます。料金が変更されている場合、応答には新たな料金の詳細とその新料金での予約リンクが返されます。料金が適用されなくなった場合は別の料金で再度検索するよう、応答には新たなショップリクエストのリンクが返されます。
PriceCheck
、totals.property_fees
、fees
に表示される請求金額には、前回のShop対応と比較して、約0.1%(1室×人数×泊数)の若干の変動がある可能性があり、これにはゼロに調整された金額が含まれる可能性があります。エクスペディア コレクト料金の場合、request_currency
とbillable_currency
が異なるため、宿泊料金に差異が生じます。API機能はこの不一致の影響を受けません。
Hold と Resume 機能
一部の在庫は保留および再開の対象外です。ホールド&レジュームを利用しているパートナーは、ホールド不可料金のショッピング指標を採用することで、これらの追加料金を利用することができます。詳細はこちら をご覧ください。
支払いオプション
エクスペディアがエンド トラベラー (EPS MOR) から支払いを受けている、利用可能な支払いオプションを返します。この API を使用して支払いページを開き、有効な支払いフォームを表示して、予約をスムーズに進めることができます。
重要な注意事項
language
では、ハイフンでつながった一対の 2 桁の言語と国のコードのみを使用できます。コードを使用する前にサポート対象言語を確認してください。- この 2 桁の
country
コードは旅行者の販売地点を設定するもので、ローカライズされたコンテンツには影響しません。 - 静的データ (名称、星評価、地理情報など) は返されません。空室状況と料金に関連したデータのみが提供されます。
- トークン化されたリクエストリンクは短期間で失効します。トークンリンクが HTTP 503 エラーを返す場合、リンクが失効している可能性があります。ショップの応答を更新して新たな料金チェックまたはデポジットのリンクを取得し、再度お試しください。長期の使用を目的として、リンクの値を保存しないでください。
- Rapid API では、施設のコンテンツをいつでも更新できます。最新の情報をお客様にお伝えするようお願いいたします。Shop API で、空室状況と料金についてできる限り最新の情報を提供できます。この応答にはない施設レベル、客室レベル、料金レベルの情報をさらに得るには、Property Content API を使用します。
- API では 1 部屋にのみ基づいて料金を提示します。複数の客室を予約する場合は、追加の計算を自分で行う必要があります。ローンチ必要条件の一部として、統合環境では、旅行を予約するステップでエンドユーザに料金の詳細な内訳を表示する必要があります。この内訳は、セキュリティで保護されたドキュメントのリンクで確認できます。
このサービスのテスト リクエストを実行するには、「テストリクエスト」ドキュメントを参照してください。
変動税金および手数料
例えば、日本やコロンビアなど一部の市場では、滞在中のアクティビティによって変動する料金や、宿泊税が変動する場合があります。これらの変動税および手数料の計算方法に関する情報は、Content APIで提供されます。この情報は、旅行者に目立つように表示されるべきです。
API の詳細
このページでショッピング関連のエンドポイント定義を調べてから、API Explorer または別のテストソフトウェアを使用して、例とスキーマ定義が実際の出力とどのように比較されるかを理解します。
その他のリソース
すべての Rapid API エンドポイントを試してみたい場合でも、OpenAPI 仕様や Postman コレクションをダウンロードしたい場合でも、必要なリソースが用意されています。