Python×Google Trends完全解説|Pytrendsの仕組みから個人版Google Trends構築まで【Rails・PostgreSQL連携】

New Challenge

技術ブログを書いていると、「次に何を書けばよいのか」「どの技術分野が伸びているのか」という問題に必ず直面します。Google Trendsは検索需要の変化を観測するための強力なツールですが、実際にどのような仕組みで動いているのか、PythonライブラリであるPytrendsとは何が違うのかを理解している人は意外と多くありません。

また、検索需要を継続的に収集し、自分専用のデータベースへ蓄積できれば、それは単なるトレンド確認ツールではなく「記事企画エンジン」へ発展します。RailsやPostgreSQLを活用している開発者なら、Google Trends・Google Suggest・Search Consoleなどを組み合わせることで、個人版Google Trendsとも呼べる分析基盤を構築できます。

本記事では、Google TrendsとPytrendsの関係、Google Suggestが返す検索候補の意味、実際のPythonコードが何をしているのかを一行ずつ解説します。さらに、将来的にURL収集や記事分析へ発展させるための考え方まで整理していきます。

Google TrendsとPytrendsは何が違うのか

最初に多くの人が疑問に思うのが、「Google Trends」と「Pytrends」は別物なのかという点です。

結論から言えば、Google TrendsはGoogleが提供する公式サービスであり、Pytrendsはそのデータ取得を自動化するために第三者が開発した非公式ライブラリです。

つまり、

  • Google Trends → Google公式サービス
  • Pytrends → 非公式Pythonライブラリ

という関係になります。

Google Trendsには公式APIが存在しない

Google Search ConsoleやGoogle Analyticsには公式APIがあります。しかしGoogle Trendsには現在も公式APIが提供されていません。

そのためGoogleは開発者向けドキュメントを公開しておらず、安定した取得方法も保証していません。

Google Trendsの画面で表示されるグラフは、ブラウザ内部でGoogleのサーバーへ問い合わせを行い、その結果を描画しています。

つまり内部的にはAPIのような通信が存在しますが、それは一般公開されていない内部仕様です。

Pytrendsは内部通信を解析して作られた

Pytrendsの開発者はGoogle社の社員ではありません。

ブラウザの通信内容を解析し、Google Trendsが利用している内部リクエストをPythonから再現できるようにしたものがPytrendsです。

そのためGoogleとPytrends開発者の間で公式なやり取りが行われたわけではありません。

イメージとしては、

人間
 ↓
Google Trends画面
 ↓
内部API

Pytrends
 ↓
内部API

という構造です。

同じデータ源へアクセスしていますが、Google公認ではない点が重要です。

なぜ突然動かなくなることがあるのか

Pytrendsを利用していると、突然429エラー(Rate Limit)に遭遇することがあります。

これはGoogleが公式利用として認めているAPIではないためです。

Google側で内部仕様が変更されれば、

  • 通信形式変更
  • レスポンス形式変更
  • アクセス制限強化

などが発生する可能性があります。

企業システムではSearch Console APIを主軸にし、Google Trendsは補助情報として利用するケースが多い理由もここにあります。

Google Suggestは何を返しているのか

あなたのコードの中で最も重要なのが次の部分です。

related = get_suggestions(seed)

一見すると単なる補助処理に見えますが、実際には検索意図を抽出する重要なステップです。

Google Suggestは検索候補データベース

例えば次のような入力を行ったとします。

AI

するとGoogleは以下のような候補を返します。

  • AIとは
  • AI画像生成
  • AIツール
  • AIエージェント
  • AI副業

これはGoogle Trendsではありません。

Google検索窓のオートコンプリート機能そのものです。

なぜその候補が表示されるのか

Googleは膨大な検索履歴を保有しています。

その中から、

  • よく検索される組み合わせ
  • 最近増えている組み合わせ
  • ユーザーが続きを入力しそうな組み合わせ

を推測して返しています。

そのため、

AI → AI画像生成

という結果は、「AI」と検索する人が高い確率で「画像生成」も調べていることを示しています。

検索意図の候補を取るとは何か

ここが最も重要です。

技術ブログ運営で欲しいのは検索数そのものではありません。

ユーザーが何を知りたいのかです。

例えば、

Rails

だけでは曖昧です。

しかし、

  • Rails Docker
  • Rails PostgreSQL
  • Rails Sidekiq
  • Rails AI

が出てくれば、ユーザーが抱える具体的な課題が見えてきます。

つまりGoogle Suggestは、

検索数を取るのではなく、検索意図を取る仕組み

と言えます。

Pythonコードを一行ずつ読むと何が起きているのか

ここからは実際のコードの動きを追いながら理解していきます。

for seed in seed_keywords の本当の意味

for seed in seed_keywords:

これは単なるループではありません。

例えばDBから次のデータを取得したとします。

AI
Rails
PostgreSQL

すると処理は次のようになります。

AI
 ↓
関連語取得
 ↓
トレンド取得

Rails
 ↓
関連語取得
 ↓
トレンド取得

PostgreSQL
 ↓
関連語取得
 ↓
トレンド取得

つまり、この一行は「探索の起点」を順番に処理する仕組みです。

build_payloadは何をしているのか

pytrends.build_payload([kw])

ここはGoogle Trendsへの問い合わせ準備です。

具体的には、

  • 調べたいキーワード
  • 期間
  • 地域
  • カテゴリ

などを内部的に設定しています。

まだデータ取得は行っていません。

SQLで例えると、

SELECT *
FROM trends
WHERE keyword='Rails'

を書いた段階です。

実際の取得は次の行です。

df = pytrends.interest_over_time()

interest_over_timeが返すもの

ここで初めてGoogle Trendsへ問い合わせが行われます。

日付          スコア
2026-01-01   12
2026-01-08   20
2026-01-15   37

このデータは検索回数ではありません。

期間内で最も人気だった時点を100とした相対スコアです。

だからこそ、

  • 急上昇している技術
  • 勢いが落ちている技術
  • 長期的に伸びている技術

を把握できます。

これをPostgreSQLへ蓄積していくことで、将来的には自分専用のGoogle Trends基盤へ発展していきます。

〆最後に〆

以上、間違い・ご意見は
次のアドレスまでお願いします。
最近は全て返信出来てませんが
適時、返信して改定をします。

nowkouji226@gmail.com

全体の纏め記事へ】

雑記の纏め記事に戻る

タイトルとURLをコピーしました