Flights by Aircraft(航空機毎のフライト履歴情報)OpenSky REST API

1.Flights by Aircraft(航空機毎のフライト履歴情報)とは

Flights by Aircraft(航空機毎のフライト履歴情報)はOpenSky REST APIの1つのエンドポイントです。
特定の航空機のフライト履歴情報を取得します。

2.機能

このエンドポイントは、特定の航空機の特定の時間範囲内のフライト履歴情報をJSON形式で返します。

3.オペレーション

GET /flights/aircraft

4.リクエスト

以下が要求パラメータです。

プロパティタイプ詳細
icao24string機体固有の24ビットICAOアドレス(小文字)。
beginintegerフライト情報取得のための開始時刻(検索開始時刻)。Unix時間。
endintegerフライト情報取得のための終了時刻(検索終了時刻)。Unix時間。

検索期間は2日を超えてはいけません。

5.レスポンス

応答は以下のプロパティを持つJSONオブジェクトです。
一般的なAPIのように「配列の0番目がICAO24、1番目が…」といったインデックス形式(CSV的な構造)ではなく、キーと値がペアになったオブジェクト形式です。

プロパティタイプ詳細
icao24string機体固有の24ビットICAOアドレス(小文字)。
firstSeeninteger最初に観測された時刻(Unix Timestamp)。通常は離陸時刻に相当。
estDepartureAirportstring出発空港のICAOコード。特定できない場合は null。
lastSeeninteger最後に観測された時刻(Unix Timestamp)。通常は着陸時刻に相当。
estArrivalAirportstring到着空港のICAOコード。特定できない場合は null。
callsignstringコールサイン(8文字以内)。
estDepartureAirportHorizDistanceinteger出発空港からの水平距離(メートル)。
estDepartureAirportVertDistanceinteger出発空港からの垂直距離(メートル)。
estArrivalAirportHorizDistanceinteger到着空港からの水平距離(メートル)。
estArrivalAirportVertDistanceinteger到着空港からの垂直距離(メートル)。
departureAirportCandidatesCountinteger出発空港の候補数。
arrivalAirportCandidatesCountinteger到着空港の候補数。

6.プログラム例(Python)

Pythonによるプログラム例を示します。
日本航空の特定の航空機(ICAOアドレス:850E36)について、現在時刻から遡って25時間前から1時間前までのフライト履歴情報を取得するプログラム例です。

import requests
import time
from datetime import datetime


# 1. 航空機を設定、取得範囲の時間を設定(UNIXタイムスタンプ)
# 特定の航空機のICAOアドレスを指定
icao24 = "850e36" #日本航空 Boeing 737-846

# 現在時刻から遡って指定(例: 25時間前から1時間前まで)
now = int(time.time())
end_time = now - 3600    # 1時間前
begin_time = end_time - 86400  # さらにその24時間前(24時間の間隔)

# 2. APIエンドポイントとパラメータ
url = "https://opensky-network.org/api/flights/aircraft"
params = {
    'icao24': icao24,
    'begin': begin_time,
    'end': end_time
}

# 3. データ取得
begin_str = datetime.fromtimestamp(begin_time).strftime('%H:%M:%S')
end_str = datetime.fromtimestamp(end_time).strftime('%H:%M:%S')

print(f"データ取得中... ({begin_str} から {end_str})")

response = requests.get(url, params=params)
        
flights = response.json()

# 4. 結果の表示(最初の10件)
print(f"{'ICAO24':<10} | {'便名':<10} | {'出発空港':<10} | {'到着空港':<10}")
print("-" * 50)

for f in flights[:10]:
    icao24 = f.get('icao24', 'N/A')
    callsign = (f.get('callsign') or 'N/A').strip()
    est_dep = f.get('estDepartureAirport') or 'Unknown'
    est_arr = f.get('estArrivalAirport') or 'Unknown'

    print(f"{icao24:<10} | {callsign:<10} | {est_dep:<10} | {est_arr:<10}")

出力例

引用:The OpenSky Network API documentation
https://openskynetwork.github.io/opensky-api/rest.html#flights-by-aircraft