选购

选购 API 向您提供全球 70 万处住宿的实时房价和房态信息的访问权限。

概述

选购 API 返回有关指定住宿所有房型的房价和房态信息(每个请求最多返回 250 家住宿的信息)。响应包含各种房价详细信息(例如促销、房价是否可退款、取消手续费以及完整的价格明细),以符合您所在市场的价格显示要求。

可通过包含 occupancy 参数的多个实例,请求提供同一类型的多间客房。如果在同一个请求中多次请求相同的入住人数,响应将仅包含该入住人数的一组房价。单次请求不得超过 8 间客房。如果您需要一次预订 8 间以上客房,请咨询您的客户经理,了解我们的团体预订合作伙伴关系。

价格显示更改

由于《加利福尼亚州价格显示规定》(《伯尔曼法》)从 2024 年 7 月 1 日起生效,请留意即将发生的变动。

这个法律是什么?

该法律禁止宣传、显示或提供不包括入住短期住宿所需的所有费用或收费的房价,但政府对住宿征收的税费除外。该法案还要求短期住宿场所应在消费者预订住宿前将政府对住宿征收的所有税费计入应支付的总价中。“短期住宿”是指任何酒店、汽车旅馆、住宿加早餐旅馆或其他临时住宿,包括短租或出租给访客连续不超过 30 天的住宅。 如需了解更多信息,请参阅《加利福尼亚州第 537 号众议院法案》

Expedia Group 正在对其 API 进行修改,以使 API 合作伙伴能够以多种方式显示定价。但最终,每个使用 Expedia Group API 的合作伙伴都有责任确保其显示 Expedia 旅行信息和定价的方式符合法律规定。

即将发生哪些变化?

Expedia 正在增强 Rapid API 的功能,使其包含一个新字段 property_inclusive,该字段包含总价,即包括基础房价及整个住宿期间 Expedia 和住宿接待方收取的所有费用和税款。这个总价的删除线格式也将在一个新字段 property_inclusive_strikethrough 中显示。除了新的住宿全包显示字段外,我们还重新调整了 API 响应中细分税费的方式。Expedia 收取的所有费用将作为 nightlystay property_fee 价格明细类型的一部分,Expedia 收取的所有税款将作为 nightlystay tax_and_service_fee 价格明细类型的一部分。

由于这将是对所有住宿实施的全球性变更,因此发布日期已改为 2024 年 5 月 29 日,以确保顺利采用和理解变更。如对变更有任何疑问,请联系您的客户经理。

会员积分

加入 Expedia 商务房价计划的住宿提供会员计划,让商务旅客有机会通过其住宿获得酒店会员积分。在获取旅客的会员身份详细信息之前,合作伙伴可以使用选购响应的“amenities”节点来识别和展示会员资格。

合作伙伴可以在其选购 API 请求中使用“loyalty”值进行筛选,专门搜索有资格获得会员积分的商务房价。

**注:**旅客在拥有会员计划的住宿中预订商务房价才可以获得会员积分。

示例:

符合会员积分条件的酒店商务房价将在 amenities 节点下的搜索响应中具有以下参数:

{
  "id": "2096",
  "name": "Eligible for hotel loyalty points"
}

佣金奖励

作为 Rapid API 合作伙伴,如果住宿为指定的预订和入住日期提供了更高的利润,那么您就可以获得额外的佣金奖励。要识别出提供了有效佣金奖励的住宿,只需在 Rapid 选购 API 请求中为 include 参数使用 rooms.rates.marketing_fee_incentives 值。在选购 API 响应的 marketing_fee_incentives 对象中,为所请求的全部或部分入住期限提供佣金奖励的房价将带有更多详细信息,包括奖励来源和受到影响的入住时间。然后,您在库存排序和选择过程中可以考虑这一对象和现有的 marketing_fee 字段,该字段是对包括所有可用奖励在内的营销费用的估算。

示例

住宿 19248 为 12 月份的入住提供了更高的利润。您针对住宿 19248 在 12 月 22 日至 1 月 5 日期间的入住提出了选购 API 请求。在选购 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\
&currency=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 参数,则系统将假定这是休闲旅行,并且不会返回商务价格。

示例

指定旅客出于商务目的旅行非常简单,只需在房态 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": { ... }
              }
            }
          }
        ]
      }
    ]
  }
]

促销及折扣价格显示

在显示基于促销或在可订空房和价格检查 API 中提供的折扣优惠金额时,某些销售网站要求提供有关标准房价的详细信息(即:计算折扣的基础价格)。请参考以下说明,了解应该使用的声明。

**欧盟:**提供有关标准房价的明确详细信息,例如“此价格是住宿根据您的搜索提供的标准房价”。

**意大利:**使用以下措辞:“Questo prezzo è basato sulla tariffa generalmente applicabile fornita dalla struttura per questa camera e per queste date”。

不可预订的原因

借助 unavailable_reason 功能,您可以请求必要的信息,了解住宿在设定的住宿条件(住宿日期和入住人数)下完全不可预订的原因,便于您采取行动。选购时必须包含可选的请求参数 include=unavailable_reason,才能在响应中接收此信息。然而,并非所有不可预订的住宿都提供了便于您采取行动的不可预订的理由。不会在响应中返回这些住宿。

选购响应可以同时包括可以预订和不可预订的住宿。不可预订的住宿将包括 property_idscoreunavailable_reason 部分,其中包含 code 和对该住宿不可预订的简短说明(以英文提供),以及 data 以获得其他信息,您可以请求调整这些信息以便使住宿/客房/房价计划可以预订。例如,如果 unavailable_reason codeadults_exceed_threshold,则 data 中的 2 表示该客房/房价允许的最大人数为 2 名成人,任何大于 2 的入住人数都会返回错误。

**注意:**住宿可以应用多个限制,但只会返回一个 unavailable_reason

示例

[
  {
    "property_id": "824739",
    "score": 12345,
    "unavailable_reason": {
      "code": "adults_exceed_threshold",
      "data": "2"
    }
  }
]

请参阅此处,获取返回代码的完整列表。

服务设施筛选条件

或者,您可以使用 amenity_category 请求参数以及一项或多项特定服务设施来筛选 Rapid 选购响应中返回的住宿。

请点击此处,参阅内容参考列表中的服务设施类别部分,了解可用于筛选响应的服务设施列表。

示例

单个服务设施筛选条件:

&amenity_category=free_breakfast

多个服务设施筛选条件:

&amenity_category=free_breakfast&amenity_category=free_airport_transfer&amenity_category=casino

速率限制

通过对合作伙伴应用速率限制来实现流量优化。这些速率限制可确保向合作伙伴持续提供稳定且便于维护的服务,同时也可以保证 Expedia Group 系统的高效使用。对于 Shop 流量,决定负载的重要因素是每个请求中搜索的住宿数量、客房数量和住宿天数。

有关速率限制的更多信息,请参阅此处。

价格检查

确认选购响应返回的价格。使用此 API 可在预订前验证之前选择的房价是否仍然有效。如果价格匹配,响应会返回请求预订的链接。如果价格已变更,响应将返回新价格详细信息和新价格的预订链接。如果无法继续获取该房价,响应将会返回新选购请求链接,以再次搜索不同的房价。

PriceCheck 上针对 totals.property_feesfees 显示的计账金额与之前的选购响应相比,可能会有大约 0.1%(每间客房 × 每人 × 每晚)的细微差别。只有当预付价格的 request_currencybillable_currency 不同时,才可能出现这种到店支付费用的潜在差异。在这种情况下,API 在运行时不会出现任何错误。

付款方式

返回已接受的付款方式。使用此 API 可向付款页面提供支持并显示有效的付款方式,以确保顺利完成预订。以住宿收款形式提供的房价将返回住宿接受的卡类型。所有其他房价类型将返回 Expedia 接受的付款方式。

重要说明

  • language 仅使用连字符连接的一对两位语言和国家/地区代码。在集成任何代码之前,请查看支持的语言
  • 由两个字母组成的 country 代码用于设置旅客的销售网站,不会影响已经本地化的内容。
  • 不会返回静态数据(名称、星级、地理信息等)。仅提供与房态和房价有关的数据。
  • 经过一段较短的时间后,标记化请求链接将失效。如果令牌链接返回 HTTP 503 错误,则该链接可能已失效。请从全新的选购响应中获取新的价格检查或押金链接,然后再次尝试。请勿存储链接值以供长期重复使用。
  • Rapid API 允许住宿随时更新其内容。我们要求您尽量向客户提供最新信息。选购 API 提供有关房态和房价的最新信息。如需获取此响应中未返回的住宿、客房以及房价级别的其他信息,请使用我们的住宿内容 API
  • API 只提供一间客房的价格,多间客房的预订需要您自己另行计算。作为上线要求的一部分,您的集成应在预订过程的某些步骤向最终用户展示详细的价格明细。点击此安全文档链接,即可了解价格明细。

如需针对此服务执行测试请求,请参阅测试请求文档。

API 详情

查看此页面上与选购相关的端点定义,然后使用 API Explorer 或其他测试软件来了解示例和模式定义与实际输出的比较。


其他资源

无论您是想尝试所有 Rapid API 端点还是下载其 OpenAPI 规范或我们的 Postman 集合,我们都能满足您的需求。



您觉得这个页面有用吗?
我们该如何改进这些内容?
感谢您帮助我们改进!