Google Trendsには公式APIが存在しません。そのためPythonからGoogle Trendsを利用する場合、多くの開発者は非公式ライブラリPytrendsを利用します。しかし、
・Pytrendsはどのような仕組みで動くのか
・Google Suggestとの違いは何か
・取得したデータをRailsやPostgreSQLへ保存できるのか
実際にはここまで体系的に解説している記事は多くありません。本記事ではPytrendsの内部動作からPythonコードの意味、さらに個人版Google Trends基盤を構築する考え方まで詳しく解説します。
また、検索需要を継続的に収集し、自分専用のデータベースへ蓄積できれば、それは単なるトレンド確認ツールではなく「記事企画エンジン」へ発展します。RailsやPostgreSQLを活用している開発者なら、Google Trends・Google Suggest・Search Consoleなどを組み合わせることで、個人版Google Trendsとも呼べる分析基盤を構築できます。
本記事で最終的に作るもの Google Trends → Google Suggest →Search Console → Rails → PostgreSQL → 記事候補AI →SEO分析
Google Trends APIは存在しない
最初に多くの人が疑問に思うのが、
「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に
優先された判断だったのでしょう。
なぜその候補が表示されるのか
実のところGoogleは膨大な検索履歴を保有しています。その中から、
- よく検索される組み合わせ
- 最近増えている組み合わせ
- ユーザーが続きを入力しそうな組み合わせ
を推測して返しています。そのため、
AI → AI画像生成
という結果は、「AI」と検索する人が高い確率で
「画像生成」も調べていることを示しています。
検索意図の候補を取るとは何か
ここが最も重要です。技術ブログ運営で欲しいのは
検索数そのものではありません。ユーザーが何を知りたいのかです。
例えば、
Rails
だけでは曖昧です。しかし、
- Rails Docker
- Rails PostgreSQL
- Rails Sidekiq
- Rails AI
が出てくれば、ユーザーが抱える具体的な課題が見えてきます。
つまりGoogle Suggestは、検索数を取るのではなく、
検索意図を取る仕組みと言えます。
Google検索には4種類の「検索需要データ」が存在する
Google Suggestだけを取得していても、Google検索全体を理解したことにはなりません。実はGoogleは検索画面の中で、
異なる目的を持つ複数種類の検索需要データを表示しています。
これらを組み合わせることで、ユーザーが
何を知りたいのかをより立体的に分析できるようになります。
① Google Suggest(オートコンプリート)
最も有名なのがGoogle Suggestです。
検索ボックスへ文字を入力すると表示される候補であり、「オートコンプリート」とも呼ばれます。
例えば「Rails」と入力すると、
- Rails Docker
- Rails PostgreSQL
- Rails AI
- Rails Sidekiq
のような候補が表示されます。これはGoogleが大量の検索履歴から、
「続けて入力される可能性が高い検索語」を予測して返しています。
② 関連検索(Related Searches)
検索結果ページ最下部には「関連検索」が表示されます。
こちらは検索候補というよりも、
検索を終えたユーザーが次に調べたテーマを表しています。
つまりGoogle Suggestが
「検索前」の需要なら、
関連検索は
「検索後」の需要と言えます。
③ People Also Ask(他の人はこちらも質問)
検索結果には「他の人はこちらも質問(People Also Ask)」
という項目が表示されます。ここには検索ユーザーが
実際によく疑問に思う内容がまとめられています。
例えば
「Pytrends」
で検索すると、
- Pytrendsは公式APIですか?
- Google Trends APIはありますか?
- Pythonから取得できますか?
のような質問が表示されます。
これはGoogle自身が検索意図を整理しているデータとも言えます。
ブログ記事でQ&Aを作る際には非常に重要な情報源になります。
ここまでGoogle Suggestについて説明しましたが、
実はGoogle検索には他にも重要な検索需要データがあります。
それがトレンドデータです。
④ Google Trends
Google Trendsは少し性質が異なります。
Google Suggestや関連検索が「何を検索しているか」を示すのに対し、
Google Trendsは「検索需要がいつ増えたか」を示しています。
| 機能 | 取得できる内容 |
|---|---|
| Google Suggest | 入力途中の検索候補 |
| 関連検索 | 次に検索されやすいテーマ |
| People Also Ask | 検索ユーザーが抱く疑問 |
| Google Trends | 検索需要の推移(相対値) |
つまり、これらはすべてGoogleが保有する検索データを異なる形で
可視化したものです。PythonからGoogle Suggestを収集し、
Pytrendsで検索需要を取得し、さらにSearch Consoleの実際の
クリックデータを組み合わせれば、
自分専用の検索需要分析基盤を構築できます。
RailsやPostgreSQLへ保存していけば、記事企画から
SEO分析までを一元管理する「個人版Google Trends」
とも呼べるシステムへ発展させることができます。
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
【全体の纏め記事へ】

