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

【ITニュース解説】Monitor Google Trends on a schedule (and stop fighting 429s)

2026年10月28日に「Dev.to」が公開したITニュース「Monitor Google Trends on a schedule (and stop fighting 429s)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Google Trendsのデータ取得は「429エラー」で困難だが、Apifyのツールを使えば安定して自動化できる。キーワードの関心度や急上昇クエリを毎日自動で監視し、トレンドの変化を確実に検知する仕組みをPythonで簡単に作れる。データ取得失敗時も通知し、見逃しを防ぐ。

ITニュース解説

Google Trendsは、インターネット上で特定のキーワードがどれくらい検索されているかの人気度や、関連する検索キーワードを調べられる非常に便利なツールだ。しかし、このデータをプログラムから自動的に取得しようとする際に、多くのシステムエンジニア志望の初心者や経験者が直面する大きな課題がある。それは、「429 Too Many Requests」というエラーに頻繁に遭遇することだ。

このエラーがなぜ起こるのかというと、Google Trendsには開発者が自由に利用できる公式のAPI(Application Programming Interface)が提供されていないためだ。APIとは、プログラムが別のプログラムの機能を利用するための窓口のようなものだが、それが存在しないため、多くの人はGoogle Trendsのウェブサイトが内部的に利用しているデータ取得の仕組み(エンドポイント)を直接叩いてデータを集めようとする。この行為は一般に「スクレイピング」と呼ばれている。Googleは、このようなスクレイピングに対して非常に厳しい制限を設けている。具体的には、短時間で同じIPアドレスやウェブブラウザのクッキー情報を使って多数のリクエストを送ると、すぐに「429 Too Many Requests」(リクエストが多すぎる)というエラーを返してくる。これは、Googleのサーバーへの過度な負荷を防ぎ、自動化された不正なデータ収集を阻止するための仕組みである。特に、データセンターのような専門的なIPアドレスからのアクセスは、一般のユーザーからのアクセスよりも厳しく監視され、すぐにブロックされる傾向がある。

これまで、この問題に対処するために、プログラムのリクエストとリクエストの間に少し時間を空けるtime.sleep()という処理を挟んだり、エラーが起きた場合に何度かリトライ(再試行)したりする一般的な対策が試されてきた。しかし、これらの方法はあくまで一時的なものであり、毎日や決まった時間にデータを取得するような自動化された処理(cronジョブなど)では、同じIPアドレスを使い続ける限り、最終的にはGoogleの厳しい制限に引っかかってしまい、データの取得に失敗してしまう。スクリプトがエラーで空のファイルを生成し続けても、しばらく誰も気づかないといった事態も珍しくない。

このようなGoogle Trendsのデータ取得における困難を解決するために、Apifyというサービスが提供する「atlasdata/google-trends-scraper-reliable」という「Actor」(特定の一連の処理を実行するプログラムの単位)が非常に有効な解決策となる。このActorを利用することで、ユーザー自身が複雑な対策を講じることなく、信頼性の高いGoogle Trendsデータを自動で取得するシステムを構築できるようになる。

Apify Actorがどのようにして429エラーを回避し、安定したデータ取得を実現するのか、その仕組みを具体的に見ていこう。まず、このActorはデータ取得を試みるたびに、毎回新しいクッキーセッションを使用する。これにより、過去のリクエストでGoogleから制限がかかってしまったセッションが再利用されるのを防ぎ、常に新鮮な状態でデータ取得を試みることが可能になる。さらに、データ取得が失敗してリトライが必要な場合には、「指数関数的バックオフ」という戦略を採用している。これは、リトライの間隔を徐々に長くしていくことで、Googleのサーバーへの負荷を軽減しつつ、データ取得が成功するまで粘り強く試行する手法だ。加えて、このリトライの際には新しいIPアドレスを割り当てる。IPアドレスが変わることで、Googleのレート制限を回避しやすくなる。Actorには「自動プロキシフォールバック」という機能も備わっている。これは、現在の接続がGoogleによってブロックされ続ける場合、利用可能な複数のプロキシ(代理サーバー)を自動的に切り替えて接続を試みる仕組みだ。Apifyが提供するデータセンタープロキシや、より信頼性の高いレジデンシャルプロキシ(一般家庭のIPアドレスを利用したプロキシ)などが状況に応じて使用される。これらの技術的工夫により、ユーザーは自身のサーバーインフラを用意したり、複雑な回避策を講じたりすることなく、Googleの厳しい制限を乗り越えてデータを安定して取得できる。

また、このActorは単にデータが取得できるだけでなく、運用面でもいくつかの優れた点がある。一つは、ユーザー自身のマシンを常に稼働させておく必要がないことだ。ActorはApifyのクラウド上で動作するため、インターネットに接続された環境であればどこからでも利用できる。さらに、データ取得の成否を検索語句ごとに詳細にレポートしてくれるため、取得結果が空だった場合に「データが取得できなかったのか」「そもそもデータが存在しなかったのか」といった区別を明確に判断できる。これは、プログラムが静かに失敗して誰も気づかないといった事態を防ぎ、問題発生時に迅速に対応できることを意味する。そして、Apifyでは「最大利用料金」を設定できるため、プログラムの誤動作や意図しない大量リクエストによって、想定外の費用が発生するリスクを未然に防ぎ、安心して利用できる。

実際にこのGoogle Trends監視システムを構築する手順は以下の通りだ。

まず、Pythonのapify-clientというライブラリをインストールし、Apifyのウェブサイトで取得したAPIトークンを環境変数に設定する。これがApifyのサービスとPythonプログラムを連携させるための最初の準備となる。

次に、「何を監視するか」を定義する。これはPythonの辞書形式で設定する。例えば、"searchTerms": ["chatgpt", "claude ai", "gemini ai", "perplexity"]のように、監視したいキーワードのリストを指定する。"geo": "US"で対象地域を米国に設定し、"timeRange": "now 7-d"で過去7日間のデータを取得するように指定できる。その他にも、関心度の推移、関連クエリ、関連トピックなどの含める情報や、出力形式などを細かく設定できる。"maxRetries": 8のように、最大リトライ回数を設定することで、取得の信頼性をさらに高めることも可能だ。

これらの設定を元に、Apify上で「タスク」と「スケジュール」を作成する。タスクとは、Actorを実行する際の入力設定を保存したものだ。例えば、特定のキーワードリストと地域設定でGoogle Trendsデータを取得するという一連の処理がタスクとして定義される。そしてスケジュールは、このタスクをいつ、どのくらいの頻度で実行するかを指定するものだ。"cron_expression="0 7 * * *"という記述は、毎日午前7時(UTC)にタスクを実行するように設定していることを意味する。max_total_charge_usdパラメータで1回の実行にかかる最大費用を制限しておくことで、想定外の課金を防ぐことができるのは非常に安心だ。また、is_exclusive=Trueと設定することで、前回の実行がまだ終わっていない場合に次の実行をスキップし、処理が重複して積み重なることを防ぐ。

タスクとスケジュールが設定されれば、Apifyのクラウド上で毎日自動的にGoogle Trendsデータの取得が開始される。あとは、その最新の実行結果を読み込んで分析する処理を作成するだけだ。client.task(task.id).last_run(status="SUCCEEDED").get()というコードは、特定のタスクの、最新の「成功した」実行結果だけを取得することを意味する。これにより、万が一取得が失敗した日のデータがレポートに影響することを避けられる。

取得したデータは、項目ごとの「関心度の推移」(interestOverTime)や「関連クエリ」(relatedQuery)といった種類(recordType)で格納されている。このデータを使って、プログラムは自動で以下のような分析を行う。

一つ目は、「関心度の推移」データの分析だ。監視対象の各検索語句について、最新24時間の平均関心度と、過去7日間の全体平均関心度を比較する。もし最新24時間の平均が7日間の平均よりも大幅に(例えば1.3倍以上)高ければ、そのキーワードの人気が急上昇していると判断し、「<-- up」というフラグを付ける。これにより、日々変動するトレンドの中で、特に注目すべきキーワードを自動で発見できる。

二つ目は、「関連クエリ」の分析だ。Google Trendsでは、メインの検索語句と一緒に検索されることが多い関連キーワードも表示される。このActorは、特に「rising」(急速に上昇中)とマークされた関連クエリを抽出し、さらにGoogleが「Breakout」(突発的な急上昇、5000%以上の増加)と表示するキーワードも検出する。これらのクエリは、メディアで話題になったり、新しい現象が起こったりしていることを示唆しているため、非常に価値のある情報となる。抽出された関連クエリは、その上昇率やBreakoutであるかどうかに基づいてソートされ、上位のものが表示される。

例えば、記事の出力例では「chatgpt」「claude ai」といったAI関連のキーワードを監視した結果、最新の24時間平均が7日間平均より若干高くなっていることがわかる。そして、「Breakout / fast-rising related queries:」のセクションでは、「claude duet」が「Breakout」として複数表示され、特定のAIアシスタントに関する関心が急激に高まっていることが一目でわかる。このように、取得されたデータから意味のある情報を自動で抽出し、分かりやすい形でレポートしてくれるのだ。

万が一、データ取得が失敗したり、一部のデータしか取得できなかったりした場合でも、このシステムはそれを明確に通知する仕組みを備えている。Actorの実行結果には、各検索語句のステータス(成功、一部成功、データなし、失敗)が詳細に記録されているため、それを確認することで、問題が発生したことを確実に把握できる。

このレポートは、Pythonスクリプトから直接コンソールに出力するだけでなく、さまざまな方法で活用できる。Apifyのウェブフック機能を使って、データ取得が成功した際にSlackなどのチャットツールに自動で通知を送ったり、取得したデータをCSV形式でダウンロードしてスプレッドシートやBIツール(ビジネスインテリジェンスツール)に連携し、より詳細な分析を行ったりすることも可能だ。

このように、ApifyのGoogle TrendsスクレイパーActorを活用することで、システムエンジニアを目指す初心者でも、Googleの厳しいレート制限に悩まされることなく、手間なく信頼性の高いトレンドデータを自動で取得・監視できる強力なシステムを構築できる。これは、コンテンツ戦略の立案、市場調査、競合分析など、多岐にわたるビジネスシーンで大いに役立つだろう。

関連コンテンツ

関連IT用語