Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to Get Google Flights Data with Python (There Is No Official API)

2026年10月07日に「Dev.to」が公開したITニュース「How to Get Google Flights Data with Python (There Is No Official API)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Google Flightsに公式APIはないが、PythonとApifyツールを使えば、フライトの価格、航空会社、CO2排出量など詳細なデータを取得できる。これにより、隠れた航空券オプションやGoogleの価格水準を把握し、料金追跡やアラートシステムを構築可能だ。初心者でも手軽にフライト情報を活用できる。

ITニュース解説

システムエンジニアを目指す初心者にとって、プログラムで様々なウェブサービスの情報を扱うことは、現代の開発において非常に重要なスキルとなる。ウェブサービスが提供する情報をプログラムから利用するための仕組みを「API」と呼ぶが、残念ながらGoogle Flightsには公式のAPIが存在しない。これは、航空券の価格追跡システムや、最適なフライトを提案する旅行ボット、あるいは航空運賃の傾向を分析するダッシュボードなどを構築しようとする際に、大きな課題となる。

かつてGoogleは「QPX Express」という航空券検索用の公式APIを提供していたが、これは2018年に提供を終了してしまった。そのため、現在ではGoogle Flightsのウェブサイトで閲覧できるフライト情報を、直接プログラムから簡単に取得する方法はないのが実情だ。しかし、この課題を解決し、Google Flightsの公開されている情報をプログラムで利用する手段は存在する。今回は、そのような情報の取得方法を具体的な手順とともに解説する。

この方法を利用すると、Google Flightsのウェブサイトで確認できるのと同等のフライトデータ、例えば航空券の価格、利用する航空会社、フライト番号、出発・到着時刻、経由地の数、乗り継ぎ時間、さらには二酸化炭素(CO₂)排出量、そしてGoogle独自の「現在の価格が安い・通常・高い」といった洞察まで、Pythonプログラムに取り込むことが可能となる。

具体的にどのようなデータが取得できるか見てみよう。取得されるデータはJSONという、データを整理して保存する形式で提供される。例えば、イスタンブールからベルリンへの往復フライトを検索した場合、以下のような情報が取得できる。

1{
2  "origin": "IST", // 出発地の空港コード
3  "destination": "BER", // 目的地の空港コード
4  "departureDate": "2026-11-20", // 出発日
5  "returnDate": "2026-11-27", // 帰着日
6  "tripType": "ROUND_TRIP", // 旅行タイプ(往復)
7  "price": 183, // 価格
8  "currency": "USD", // 通貨
9  "priceLevel": "typical", // 価格レベル(typicalは「通常」)
10  "typicalPriceLow": 160, // 通常価格帯の下限
11  "typicalPriceHigh": 255, // 通常価格帯の上限
12  "airline": "Air Serbia", // 航空会社名
13  "flightNumbers": ["JU423", "JU356"], // フライト番号
14  "departureTime": "2026-11-20T16:40", // 出発時刻
15  "arrivalTime": "2026-11-20T20:00", // 到着時刻
16  "durationText": "5h 20m", // 所要時間
17  "stops": 1, // 経由地の数
18  "layovers": [{ "airport": "BEG", "city": "Belgrade", "durationMinutes": 105 }], // 経由地の詳細
19  "co2EmissionsKg": 212 // CO₂排出量
20}

これらのデータの中でも、特にプログラムから取得するのが難しい、しかし非常に価値のある情報がいくつかある。一つは、Google Flightsのウェブサイトでは通常、上位約20件の「おすすめフライト」しか表示されず、残りのフライトオプションは「さらに表示」をクリックしなければ見ることができない点だ。しかし、この方法を使えば、全てのフライトオプション、例えばニューヨークJFK空港からロンドンヒースロー空港への特定日のフライトが100件以上ある場合でも、それら全てを一度に取得できる。

また、Google独自の「価格の洞察(priceLevel)」は非常に有用だ。これは、現在の航空券価格がその路線において「安い」「通常」「高い」のどのレベルにあるかを教えてくれるもので、過去約60日間の価格履歴も一緒に取得できるため、購入のタイミングを判断する上で重要な情報となる。さらに、各フライト区間や乗り継ぎに関する詳細情報、例えば使用される航空機の種類、座席の足元スペース、区間ごとのCO₂排出量なども取得できる。

それでは、Pythonを使ってこれらのデータを取得する具体的な手順を見ていこう。この方法では、「Apify」というウェブデータを収集・自動化するためのプラットフォームを利用する。

Step 1: クライアントのインストール まず、Apifyの無料アカウントを作成し、Apify Console(管理画面)の「Settings」→「API & Integrations」からAPIトークンという専用の鍵を取得する必要がある。これはApifyのサービスをプログラムから利用するための認証情報だ。次に、PythonからApifyを利用するためのライブラリをインストールする。Pythonのパッケージ管理ツールであるpipコマンドを使って、以下のように実行する。

1pip install apify-client

これで、PythonプログラムからApifyの機能を使える準備が整う。

Step 2: Pythonからフライトを検索する 次に、Pythonコードを記述してフライト検索を実行する。ApifyのGoogle Flights Scraperというツール(Apify上で動作する特定のプログラム)を呼び出して、検索条件を渡す形だ。

1from apify_client import ApifyClient
2
3# 取得したApifyのAPIトークンを設定
4client = ApifyClient("YOUR_APIFY_TOKEN")
5
6# Google Flights Scraperを呼び出し、検索条件を設定
7run = client.actor("dataspace/google-flights-scraper").call(run_input={
8    "searches": [
9        "JFK-LHR +30",                    # 片道フライト、今日から30日後
10        "IST-BER 2026-11-20 2026-11-27",  # 往復フライト、特定の日付
11        "NYC-PAR +45",                    # 都市コード指定(NYCの全空港からPARの全空港へ)、今日から45日後
12    ],
13    "currency": "USD",                      # 使用する通貨
14    "maxStops": "1",                        # 最大経由地数(1ストップまたは直行)
15    "sortBy": "price",                      # 価格でソート
16    "maxResultsPerSearch": 50,              # 1検索あたりの最大結果数
17    "includePriceInsights": True,           # 価格洞察を含めるか
18})
19
20# 検索結果が格納されたデータセットからアイテムを取得
21items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
22# 取得したアイテムからフライト情報と検索概要情報をそれぞれ抽出
23flights = [i for i in items if i["type"] == "flight"]
24insights = [i for i in items if i["type"] == "searchSummary"]
25
26# 抽出したフライト情報の一部を表示
27for f in flights[:5]:
28    print(f'{f["origin"]}-{f["destination"]} {f["price"]} {f["currency"]} '
29          f'{f["airline"]} {f["durationText"]} stops={f["stops"]}')
30
31# 抽出した検索概要情報を表示
32for s in insights:
33    print(f'{s["origin"]}-{s["destination"]}: cheapest {s["cheapestPrice"]}, '
34          f'typical {s["typicalPriceLow"]}-{s["typicalPriceHigh"]}, prices are {s["priceLevel"]}')

このコードでは、ApifyClientを初期化し、自身のAPIトークンを渡している。次に、client.actor("dataspace/google-flights-scraper").call()メソッドを呼び出し、run_inputという辞書形式で検索条件を指定している。「searches」では、出発地と目的地、そして日付(特定の日付または今日からの相対日数)を指定する。通貨、最大経由地数、結果のソート順、取得するフライトの最大数、価格洞察を含めるかどうかなども設定できる。

call()メソッドが実行されると、Apify上でフライト検索が開始され、その結果はApifyのデータセットに保存される。コードの後半では、そのデータセットからフライト情報(flights)と検索概要(insights)を抽出し、それぞれを標準出力に表示している。特に検索概要に含まれるpriceLevelは、「現在の価格が高いから、もう少し待った方が良いかもしれない」といった購入判断に直結する重要な情報となる。

Step 3: 運賃アラートに変える この仕組みを利用すれば、特定の条件を満たしたときに通知する「運賃アラート」も簡単に作成できる。例えば、目標とする価格を下回るフライトが見つかった場合に通知する、といったものだ。

1TARGET = 300  # 目標価格(USD)
2
3# 目標価格以下のフライトを抽出
4cheap = [f for f in flights if f["price"] and f["price"] <= TARGET]
5if cheap:
6    # 最も安いフライトを見つける
7    best = min(cheap, key=lambda f: f["price"])
8    print(f'Deal: {best["origin"]}-{best["destination"]} for {best["price"]} USD '
9          f'({best["airline"]}, {best["departureTime"]})')
10    # ここにSlack、Telegram、またはEメールで通知を送信するコードを追加できる

このコードは、前のステップで取得したフライトデータから、設定したTARGET価格以下のフライトを探し出し、もし見つかれば最も安いフライトの情報を表示する。さらに、この部分にSlack、Telegram、Eメールなどの通知機能を連携させることで、条件を満たしたフライトが発見された際に自動的に通知を受け取ることができる。

このような運賃アラートを毎日自動で実行したい場合、自前でサーバーを用意する必要はない。Apify Consoleのスケジュール機能を使えば、この検索処理を毎日(例えば相対日付の「+30日」「+60日」を指定して)自動で実行できる。そして、その実行結果をWebhookや「Make」「Zapier」といった自動化ツールと連携させることで、プログラムの実行結果を各種通知サービスに送ることが可能となる。

他にも、フライト検索には便利なオプションが用意されている。「flexibleDays」を使えば、指定した日から数日間の範囲で最も安い日を探してくれる。「adults」「children」「cabinClass」では、搭乗者数や座席クラス(エコノミー、プレミアム、ビジネス、ファースト)を指定できる。「airlines」では、特定の航空会社や航空アライアンス(スターアライアンスなど)で絞り込むことも可能だ。「country」「currency」で販売国や通貨を指定すると、国によって異なる価格設定に対応できる場合もある。「maxPrice」「sortBy」を使えば、価格の上限設定や、結果のソート順を細かく制御できる。

このようなデータ取得には費用が発生するが、ApifyのGoogle Flights Scraperは、1,000フライトオプションあたり0.50ドルの料金がかかる(これに加えて、1回の実行あたり0.00005ドルの費用が発生する)。一般的な検索では20〜150オプションが返されるため、1回の検索にかかる費用は約0.05ドル程度となる。Apifyには月間のプラットフォームクレジットが含まれる無料プランがあり、小規模なプロジェクトであれば、月に約10,000フライト結果分の取得をこの無料プランでまかなえる。

最後に、このデータ利用における責任について触れておく。このデータは、誰でもログインなしでアクセスできる公開されたGoogle Flightsのウェブページから取得している。そのため、価格調査、分析、アラートといった目的での利用に適している。しかし、過剰なリクエスト量にならないように注意し、利用する国の法律やサービス提供者の利用規約に適合しているかを確認することは、利用者自身の責任となる。

関連コンテンツ

関連IT用語

関連ITニュース