ルフトハンザドイツ航空 (LH) は Lufthansa Open API を公開しています。この API を利用することで、航空便に関する様々な情報を手軽に取得することができます。
なお、本記事では API の動作検証にあたっては Postman を利用しておりますが、cURL や任意のプログラミング言語を用いても同様の結果が得られます。
利用登録とトークンの取得
アカウント登録
https://developer.lufthansa.com/docs/read/API_basics を確認し、アカウント登録を行いましょう。
なお、180日以上ログインがない場合、メールアドレスによる再認証が必要になります。
アプリケーション登録
https://developer.lufthansa.com/apps/register からアプリケーションの登録を行います。
アクセストークンの取得
アクセストークンは一定時間で失効します。
POST https://api.lufthansa.com/v1/oauth/token
Request Body
-
client_id
: 取得したKey -
client_secret
: 取得したSecret -
grant_type
:client_credentials
Response Body
アクセストークンと有効時間(秒)が取得できます。
{"access_token":"XXXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":21600}
航空データの取得
では、実際に航空便データを取得してみましょう。ここでは主要なAPIのみ紹介します(随時加筆していきます)。
また、https://developer.lufthansa.com/io-docs でインタラクティブに試すこともできるので活用しましょう。
共通事項
情報を取得する場合、Request Header に以下の内容を設定してください。いずれも必須です。
Key | Value |
---|---|
Accept |
application/json or application/xml
|
Authorization |
Bearer 取得したトークン (例: Bearer b2d5h7n4chvpun2f4pu7jh36 ) |
また、GETのパラメータでは以下のキーを用いることができます。
-
limit
: リクエストごとに返されるレコード数。(デフォルト:20、最大値:100) -
offset
: スキップするレコード数。(デフォルト:0)
静的情報
空港情報
空港の座標および都市コード、国コード、多言語での空港名、タイムゾーンなどが取得できます。
GET https://api.lufthansa.com/v1/mds-references/airports/空港コード?LHoperated=0
-
空港コード
: IATAコード(3レターコード)。 -
LHoperated
:1
にすると、ルフトハンザドイツ航空が就航している空港に限った結果を返します。デフォルトは0
です。
Response Body の例
{
"AirportResource": {
"Airports": {
"Airport": {
"AirportCode": "HND",
"Position": {
"Coordinate": {
"Latitude": 35.5522,
"Longitude": 139.7797
}
},
"CityCode": "TYO",
"CountryCode": "JP",
"LocationType": "Airport",
"Names": {
"Name": [{
"@LanguageCode": "DE",
"$": "Tokio Haneda"
}, {
"@LanguageCode": "EN",
"$": "Tokyo Haneda"
}, {
"@LanguageCode": "ES",
"$": "Tokio Haneda"
}, {
"@LanguageCode": "FR",
"$": "Tokyo Haneda"
}, {
"@LanguageCode": "IT",
"$": "Tokio Haneda"
}, {
"@LanguageCode": "JA",
"$": "東京"
}, {
"@LanguageCode": "KO",
"$": "도쿄"
}, {
"@LanguageCode": "PL",
"$": "Tokio Haneda"
}, {
"@LanguageCode": "PT",
"$": "Tóquio Haneda"
}, {
"@LanguageCode": "RU",
"$": "Токио "
}, {
"@LanguageCode": "ZH",
"$": "东京"
}]
},
"UtcOffset": "+09:00",
"TimeZoneId": "Asia/Tokyo"
}
},
"Meta": {
"@Version": "1.0.0",
"Link": [{
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/HND?limit=20&offset=0&LHoperated=0",
"@Rel": "self"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/cities/TYO",
"@Rel": "related"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/countries/JP",
"@Rel": "related"
}, {
"@Href": "http://travelguide.lufthansa.com/de/de/{cityCode}/HND",
"@Rel": "alternate"
}, {
"@Href": "http://travelguide.lufthansa.com/de/en/{cityCode}/HND",
"@Rel": "alternate"
}, {
"@Href": "http://travelguide.lufthansa.com/de/es/{cityCode}/HND",
"@Rel": "alternate"
}, {
"@Href": "http://travelguide.lufthansa.com/de/fr/{cityCode}/HND",
"@Rel": "alternate"
}]
}
}
}
}
航空会社情報
ICAOコード(3レターコード)、航空会社の名称を取得できます。ルフトハンザに限らず他社の情報も取得できます。
GET https://api.lufthansa.com/v1/mds-references/airlines/航空会社コード
-
航空会社コード
: IATA航空会社コード(2レターコード)
Response Body の例
{
"AirlineResource": {
"Airlines": {
"Airline": {
"AirlineID": "7G",
"AirlineID_ICAO": "SFJ",
"Names": {
"Name": {
"@LanguageCode": "EN",
"$": "Star Flyer"
}
}
}
},
"Meta": {
"@Version": "1.0.0",
"Link": {
"@Href": "https://api.lufthansa.com/v1/mds-references/airlines/7G?limit=20&offset=0",
"@Rel": "self"
}
}
}
}
機種情報
IATA航空機コードを渡すと、ICAO航空機コードと機種名を取得できます。
GET https://api.lufthansa.com/v1/mds-references/aircraft/機種コード
-
機種コード
: IATA航空機コード(3レターコード)
Response Body の例
{
"AircraftResource": {
"AircraftSummaries": {
"AircraftSummary": {
"AircraftCode": "AT7",
"Names": {
"Name": {
"@LanguageCode": "EN",
"$": "ATR 72"
}
},
"AirlineEquipCode": "AT72"
}
},
"Meta": {
"@Version": "1.0.0",
"Link": {
"@Href": "https://api.lufthansa.com/v1/mds-references/aircraft/AT7?limit=20&offset=0",
"@Rel": "self"
}
}
}
}
動的情報
フライト情報
ルフトハンザが運航するフライトの情報が取得できます。
ルフトハンザ便名が付与されているコードシェア便の情報も取得できるほか、ルフトハンザと提携関係にある航空会社(NHなど)の便名は取得することができました。
GET https://api.lufthansa.com/v1/operations/flightstatus/便名/YYYY-MM-DD
-
便名
: IATA航空会社コードによる便名表記(例:LH16
) -
日付
: YYYY-MM-DDの形式で、出発地での日付
Response Body の例
{
"FlightStatusResource": {
"Flights": {
"Flight": [{
"Departure": {
"AirportCode": "FRA",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T14:30"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T12:30Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T14:24"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T12:24Z"
},
"TimeStatus": {
"Code": "FE",
"Definition": "Flight Early"
},
"Terminal": {
"Name": "1",
"Gate": "A22"
}
},
"Arrival": {
"AirportCode": "HAM",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T15:35"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T13:35Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T15:23"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T13:23Z"
},
"TimeStatus": {
"Code": "FE",
"Definition": "Flight Early"
},
"Terminal": {
"Name": "2"
}
},
"MarketingCarrier": {
"AirlineID": "LH",
"FlightNumber": "016"
},
"OperatingCarrier": {
"AirlineID": "LH",
"FlightNumber": "016"
},
"Equipment": {
"AircraftCode": "32N",
"AircraftRegistration": "DAINE"
},
"FlightStatus": {
"Code": "LD",
"Definition": "Flight Landed"
},
"ServiceType": "Passenger"
}]
},
"Meta": {
"@Version": "1.0.0",
"Link": [{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/LH16/2020-04-01",
"@Rel": "self"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}]
}
}
}
同一便をNH便名で取得した場合。コードシェア便で取得する場合に比べて機材の番号など、より詳細な情報が取得できます。 ただし、ルフトハンザと直接提携のない航空会社が運航している便については正確な航空会社が取得できません。Response Body の例(コードシェア便の例)
{
"FlightStatusResource": {
"Flights": {
"Flight": [
{
"Departure": {
"AirportCode": "FUK",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T09:35"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T00:35Z"
},
"TimeStatus": {
"Code": "OT",
"Definition": "Flight On Time"
},
"Terminal": {
"Name": "D"
}
},
"Arrival": {
"AirportCode": "HND",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T11:15"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T02:15Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T10:59"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T01:59Z"
},
"TimeStatus": {
"Code": "FE",
"Definition": "Flight Early"
},
"Terminal": {
"Name": "2"
}
},
"MarketingCarrier": {
"AirlineID": "LH",
"FlightNumber": "4877"
},
"OperatingCarrier": {
"AirlineID": "NH",
"FlightNumber": "246"
},
"Equipment": {
"AircraftCode": "767"
},
"FlightStatus": {
"Code": "LD",
"Definition": "Flight Landed"
},
"ServiceType": "Passenger"
}
]
},
"Meta": {
"@Version": "1.0.0",
"Link": [
{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/LH4877/2020-04-01",
"@Rel": "self"
},
{
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}
]
}
}
}
{
"FlightStatusResource": {
"Flights": {
"Flight": [
{
"Departure": {
"AirportCode": "FUK",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T09:35"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T00:35Z"
},
"TimeStatus": {
"Code": "OT",
"Definition": "Flight On Time"
},
"Terminal": {
"Name": "D"
}
},
"Arrival": {
"AirportCode": "HND",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T11:15"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T02:15Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T10:59"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T01:59Z"
},
"TimeStatus": {
"Code": "FE",
"Definition": "Flight Early"
},
"Terminal": {
"Name": "2"
}
},
"MarketingCarrier": {
"AirlineID": "NH",
"FlightNumber": "246"
},
"OperatingCarrier": {
"AirlineID": "NH",
"FlightNumber": "246"
},
"Equipment": {
"AircraftCode": "767",
"AircraftRegistration": "JA606A"
},
"FlightStatus": {
"Code": "LD",
"Definition": "Flight Landed"
},
"ServiceType": "Passenger"
}
]
},
"Meta": {
"@Version": "1.0.0",
"Link": [
{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/NH246/2020-04-01",
"@Rel": "self"
},
{
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}
]
}
}
}
以下はスターフライヤー7G89便をNH3889便として取得した際も OperatingCarrier
は NH
となります。{
"FlightStatusResource": {
"Flights": {
"Flight": [
{
"Departure": {
"AirportCode": "HND",
"ScheduledTimeLocal": {
"DateTime": "2020-04-02T20:30"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-02T11:30Z"
},
"TimeStatus": {
"Code": "OT",
"Definition": "Flight On Time"
},
"Terminal": {
"Name": "1"
}
},
"Arrival": {
"AirportCode": "KKJ",
"ScheduledTimeLocal": {
"DateTime": "2020-04-02T22:10"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-02T13:10Z"
},
"TimeStatus": {
"Code": "OT",
"Definition": "Flight On Time"
}
},
"MarketingCarrier": {
"AirlineID": "NH",
"FlightNumber": "3889"
},
"OperatingCarrier": {
"AirlineID": "NH",
"FlightNumber": "3889"
},
"Equipment": {
"AircraftCode": "320"
},
"FlightStatus": {
"Code": "NA",
"Definition": "No status"
},
"ServiceType": "Passenger"
}
]
},
"Meta": {
"@Version": "1.0.0",
"Link": [
{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/NH3889/2020-04-02",
"@Rel": "self"
},
{
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}
]
}
}
}
顧客向けフライト情報(Customer Flight Information)
通常のフライト情報と概ね同じですが、フライトインフォメーションボードなどで旅客に表示するようなデータが取得できます。
また、コードシェア便情報もより詳細に取得できます。
GET https://api.lufthansa.com/v1/operations/customerflightinformation/便名/YYYY-MM-DD
-
便名
: IATA航空会社コードによる便名表記(例:LH16
) -
日付
: YYYY-MM-DDの形式で、出発地での日付
フライト情報(Flight Status)ではコードシェアの「親」情報しか取得できませんが、顧客向けフライト情報(Customer Flight Information)では「親」となる便を指定してもResponse Body の例
MarketingCarrierList
として「子」となる便名の一覧を取得できます。{
"FlightInformation": {
"Flights": {
"Flight": {
"Departure": {
"AirportCode": "FUK",
"Scheduled": {
"Date": "2020-04-01",
"Time": "09:35"
},
"Actual": {
"Date": "2020-04-01",
"Time": "09:35"
},
"Terminal": {
"Name": "D"
},
"Status": {
"Code": "OT",
"Description": "Flight On Time"
}
},
"Arrival": {
"AirportCode": "HND",
"Scheduled": {
"Date": "2020-04-01",
"Time": "11:15"
},
"Actual": {
"Date": "2020-04-01",
"Time": "10:59"
},
"Terminal": {
"Name": "2"
},
"Status": {
"Code": "LD",
"Description": "Flight Landed"
}
},
"MarketingCarrierList": {
"MarketingCarrier": [{
"AirlineID": "AZ",
"FlightNumber": "5150"
}, {
"AirlineID": "LH",
"FlightNumber": "4877"
}]
},
"OperatingCarrier": {
"AirlineID": "NH",
"FlightNumber": "246"
},
"Equipment": {
"AircraftCode": "767"
},
"Status": {
"Code": "OT",
"Description": "Flight On Time"
}
}
},
"Meta": {
"@Version": "1.0.0",
"Link": [{
"@Href": "https://api.lufthansa.com/v1/operations/customerflightinformation/LH4877/2020-04-01",
"@Rel": "self"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}]
}
}
}
路線運航情報
路線単位でのフライト情報。他社便しか運航していない区間も取得できる場合があります。
GET https://api.lufthansa.com/v1/operations/flightstatus/route/出発地空港コード/目的地空港コード/YYYY-MM-DD?serviceType=all
-
出発地空港コード
: IATA空港コード(3レターコード) -
目的地空港コード
: IATA空港コード(3レターコード) -
日付
: 出発地の現地時間における日付。(YYYY-MM-DD の形式) -
serviceType
:cargo
,paasenger
,all
(デフォルトはpassanger
)
NRT-FRA の JL便など、ルフトハンザと提携がないエアラインのフライトも取得できる場合があります。Response Body の例
{
"FlightStatusResource": {
"Flights": {
"Flight": [{
"Departure": {
"AirportCode": "JFK",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T00:30"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T04:30Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T01:26"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T05:26Z"
},
"TimeStatus": {
"Code": "DL",
"Definition": "Flight Delayed"
}
},
"Arrival": {
"AirportCode": "FRA",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T13:50"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T11:50Z"
},
"ActualTimeLocal": {
"DateTime": "2020-04-01T15:08"
},
"ActualTimeUTC": {
"DateTime": "2020-04-01T13:08Z"
},
"TimeStatus": {
"Code": "DL",
"Definition": "Flight Delayed"
}
},
"MarketingCarrier": {
"AirlineID": "LH",
"FlightNumber": "8163"
},
"OperatingCarrier": {
"AirlineID": "LH",
"FlightNumber": "8163"
},
"Equipment": {
"AircraftCode": "M1F",
"AircraftRegistration": "DALCK"
},
"FlightStatus": {
"Code": "LD",
"Definition": "Flight Landed"
},
"ServiceType": "Cargo"
}]
},
"Meta": {
"@Version": "1.0.0",
"Link": [{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/route/JFK/FRA/2020-04-01?serviceType=all",
"@Rel": "self"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}],
"TotalCount": 1
}
}
}
HND-FUKのNHコードシェアのLH便は取得できませんが、NRT-FUKのNH便は取得できるなど、取得可能路線の定義は不明です。{
"FlightStatusResource": {
"Flights": {
"Flight": [{
"Departure": {
"AirportCode": "NRT",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T11:25"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T02:25Z"
},
"TimeStatus": {
"Code": "NO",
"Definition": "No status"
},
"Terminal": {
"Name": "2"
}
},
"Arrival": {
"AirportCode": "FRA",
"ScheduledTimeLocal": {
"DateTime": "2020-04-01T16:30"
},
"ScheduledTimeUTC": {
"DateTime": "2020-04-01T14:30Z"
},
"TimeStatus": {
"Code": "NO",
"Definition": "No status"
},
"Terminal": {
"Name": "2"
}
},
"MarketingCarrier": {
"AirlineID": "JL",
"FlightNumber": "407"
},
"OperatingCarrier": {
"AirlineID": "JL",
"FlightNumber": "407"
},
"Equipment": {
"AircraftCode": "789"
},
"FlightStatus": {
"Code": "CD",
"Definition": "Flight Cancelled"
},
"ServiceType": "Passenger"
}]
},
"Meta": {
"@Version": "1.0.0",
"Link": [{
"@Href": "https://api.lufthansa.com/v1/operations/flightstatus/route/NRT/FRA/2020-04-01?serviceType=all",
"@Rel": "self"
}, {
"@Href": "https://api.lufthansa.com/v1/mds-references/airports/{airportCode}",
"@Rel": "related"
}],
"TotalCount": 1
}
}
}