Pytrends完全解説|PythonでGoogle Trendsを取得する方法・Google Suggest・Rails連携まで【2026年版】

New Challenge

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

全体の纏め記事へ】

雑記の纏め記事に戻る

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