Amadeus API无法返回实际存在的直飞航班问题求助
排查Amadeus API直飞航班查询无结果的问题
1. 核对API核心参数配置
Amadeus用于航班搜索的常用端点是/v2/shopping/flight-offers,先确认关键参数是否正确设置:
- 必须添加
nonStop=true参数,这是筛选直飞航班的核心开关,漏加或设为false都会返回中转航班,甚至因参数缺失导致结果异常 - 日期格式
2024-03-02符合要求,但要注意API是否以出发地当地时间作为日期判断标准,部分跨时区航线可能存在日期边界问题 - 机场代码BUD、LHR都是标准IATA码,确认无拼写错误
2. 验证航空公司数据权限
Amadeus API的航班数据覆盖和Skyscanner不同,英国航空的航班可能不在你的API套餐权限内:
- 先去掉
nonStop=true参数发起请求,如果能返回含英航的中转航班,说明该航线在API内容库中,但直飞权限可能受限;如果完全没有英航数据,大概率是你的API密钥未获取该航司的授权 - 检查Amadeus开发者后台的套餐说明,确认是否包含英国航空的航班数据
3. 对比标准Python请求示例
如果你的代码存在参数遗漏,参考以下正确请求模板排查:
import requests url = "https://test.api.amadeus.com/v2/shopping/flight-offers" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN" } params = { "originLocationCode": "BUD", "destinationLocationCode": "LHR", "departureDate": "2024-03-02", "adults": 1, # 必填参数,缺失可能导致结果为空 "nonStop": "true", "currencyCode": "EUR" } response = requests.get(url, headers=headers, params=params) print(response.json())
重点确认代码中是否包含nonStop=true,以及adults这类必填参数是否正确赋值。
4. 考虑测试环境数据限制
Amadeus测试环境(test.api.amadeus.com)的航班数据是模拟或部分脱敏的,很多真实运营的航班不会在测试环境中展示:
- 切换到生产环境(
api.amadeus.com,需正式API密钥)重新查询,大概率能获取到真实的英航直飞航班 - 查看Amadeus测试环境文档,确认其数据覆盖范围的限制说明
5. 排查日期边界问题
部分凌晨起飞的航班可能存在日期判断偏差:
- 比如某航班UTC时间为2024-03-01 23:55从BUD起飞,对应布达佩斯当地时间是2024-03-02,若API以UTC时间判断日期,会归类到前一天,可尝试扩大日期范围(同时查询2024-03-01和2024-03-02)验证
内容的提问来源于stack exchange,提问作者hunsnowboarder
相关产品推荐
相关产品推荐

