Amadeus航班查询返回空结果,实际存在有效航班(含日期/时间窗问题)
Amadeus v2/shopping/flight-offers 返回空结果(data为空数组)的排查与解决
问题描述
- 调用Amadeus v2/shopping/flight-offers接口时,返回
data为空数组、meta.length=0,但实际存在有效航班(已通过谷歌航班验证) - 此前请求正常,移除
originRadius和destinationRadius参数后出现该问题 - 查询需求:伦敦所有机场(LON)往返曼彻斯特机场(MAN),日期范围为指定日期±3天(I3D),覆盖当日全时段
问题分析
移除originRadius和destinationRadius后,接口会严格匹配指定的城市/机场代码——虽然LON是伦敦的城市代码,但Amadeus接口在没有半径参数时,可能不会自动扩展到城市下的所有机场,而是仅匹配代码完全一致的节点。另外当前时间窗口设置为12:00开始的12小时,只覆盖了半天,也可能漏掉上午的有效航班。
解决方案
1. 修复时间窗口,覆盖当日全时段
把departureDateTimeRange里的time改为00:00:00,timeWindow改为24H,确保覆盖全天航班:
"departureDateTimeRange": { "date": "2023-05-14", "dateWindow": "I3D", "time": "00:00:00", "timeWindow": "24H" }
2. 恢复半径参数,触发多机场搜索
LON作为城市代码,需要通过originRadius/destinationRadius触发接口搜索城市下的所有机场,设置合理半径值(比如50英里)即可:
"originDestinations": [ { "id": "1", "originLocationCode": "LON", "destinationLocationCode": "MAN", "originRadius": "50MI", "destinationRadius": "50MI", "departureDateTimeRange": { "date": "2023-05-14", "dateWindow": "I3D", "time": "00:00:00", "timeWindow": "24H" } }, // 返程同理 { "id": "2", "originLocationCode": "MAN", "destinationLocationCode": "LON", "originRadius": "50MI", "destinationRadius": "50MI", "departureDateTimeRange": { "date": "2023-05-19", "dateWindow": "I3D", "time": "00:00:00", "timeWindow": "24H" } } ]
3. 调整搜索条件,避免结果过滤过度
- 关闭
oneFlightOfferPerDay: true,防止每日仅返回1个结果导致有效航班被过滤 - 提高
maxFlightOffers的值(比如设为20),确保能获取足够多的结果
修改后的完整请求体示例
{ "currencyCode": "USD", "originDestinations": [ { "id": "1", "originLocationCode": "LON", "destinationLocationCode": "MAN", "originRadius": "50MI", "destinationRadius": "50MI", "departureDateTimeRange": { "date": "2023-05-14", "dateWindow": "I3D", "time": "00:00:00", "timeWindow": "24H" } }, { "id": "2", "originLocationCode": "MAN", "destinationLocationCode": "LON", "originRadius": "50MI", "destinationRadius": "50MI", "departureDateTimeRange": { "date": "2023-05-19", "dateWindow": "I3D", "time": "00:00:00", "timeWindow": "24H" } } ], "travelers": [ { "id": "1", "travelerType": "ADULT" } ], "sources": ["GDS"], "searchCriteria": { "maxFlightOffers": 20, "oneFlightOfferPerDay": false, "flightFilters": { "cabinRestrictions": [ { "cabin": "ECONOMY", "coverage": "ALL_SEGMENTS", "originDestinationIds": ["1", "2"] } ], "connectionRestrictions": { "maxNumberOfConnections": 1 } } } }
额外排查点
- 查看接口返回的
warnings字段,是否有关于机场匹配、日期范围或过滤条件的提示 - 若涉及低成本航空公司,可尝试在
sources数组中添加"LCC",因为部分廉航不在GDS渠道中
内容的提问来源于stack exchange,提问作者Rory McDonald
相关产品推荐
相关产品推荐

