ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Google Trends とは
Google Trends は Google 検索の人気度を可視化する無料サービスです。「特定キーワードが、ある期間にどれだけ検索されたか」を相対値で見られます。SEO 調査 / 季節性把握 / 競合分析 / ニュース解析で広く使われます。
ただし公式 API は提供されていません。データを自動取得するには、非公式ライブラリやサードパーティ API を使う必要があります。
主な取得手段の比較
| 手段 | 言語 | 料金 | SLA | 用途 |
|---|---|---|---|---|
| pytrends | Python | 無料 (OSS) | 無し | 研究 / PoC / 個人 |
| SerpAPI | 多言語 SDK | $50/月〜 | あり (99.9%) | 商用 / 安定稼働 |
| Glimpse | Web UI / API | 有料 | あり | 絶対検索回数推定が必要な場合 |
| TrendsAPI Pro | REST | $15/月〜 | あり | 安価で大量取得 |
| 直接スクレイピング | 自前 | 無料 | 無し | 非推奨 (BAN リスク) |
pytrends (Python 非公式ライブラリ)
最も普及している Python ライブラリ。内部的に Google Trends の非公式 JSON エンドポイントを叩いて整形してくれます。
pip install pytrendsfrom pytrends.request import TrendReq
# hl=表示言語, tz=タイムゾーン (分単位、東京は -540)
pytrends = TrendReq(hl='ja-JP', tz=-540)
# キーワード設定 (最大5語まで同時比較可)
kw_list = ['Python', 'Ruby', 'PHP', 'Go']
pytrends.build_payload(
kw_list,
cat=0, # カテゴリ (0=All, 5=Computers)
timeframe='today 12-m', # 過去12ヶ月
geo='JP', # 国コード (JP=日本)
gprop='' # 検索プロパティ (''=Web, 'news', 'images', 'youtube')
)
# 1. 時系列トレンド
trend_df = pytrends.interest_over_time()
print(trend_df.head())
# Python Ruby PHP Go isPartial
# 2024-06-09 82 18 45 61 False
# 2. 地域別関心度
region_df = pytrends.interest_by_region(resolution='COUNTRY')
print(region_df.sort_values('Python', ascending=False).head())
# 3. 関連クエリ
related = pytrends.related_queries()
print(related['Python']['top']) # トップ関連
print(related['Python']['rising']) # 急上昇関連
# 4. 関連トピック
related_topics = pytrends.related_topics()
# 5. 急上昇キーワード(日次)
trending = pytrends.trending_searches(pn='japan')
print(trending.head(10))
注意: 相対値 (0〜100) であること
pytrends も Web UI も絶対検索回数を返しません。値は次のように正規化されます:
- 期間内 / 指定キーワード群の中で「最も検索された地点」を 100 とする
- 他の地点・他のキーワードは、その 100 に対する相対値 (0〜100)
- 「100」は絶対値ではなく、「ピーク時点」を示すだけ
つまり:
「Python」単独で 100 = ピーク時 100% 検索された
「Python」と「Ruby」を比較して Python=80, Ruby=10
→ Python は Ruby の 8 倍検索された (期間ピーク基準)
絶対検索回数の推定が必要なら Glimpse / Keyword Planner を併用。
SerpAPI 経由 (商用おすすめ)
SerpAPI は Google Trends を含む各種 Google サービスを REST API で叩けます。SLA とサポート付きで商用利用しやすい。
curl "https://serpapi.com/search?engine=google_trends&q=Python,Ruby&date=today+12-m&geo=JP&api_key=YOUR_KEY"from serpapi import GoogleSearch
params = {
"engine": "google_trends",
"q": "Python,Ruby,PHP",
"data_type": "TIMESERIES", # TIMESERIES / GEO_MAP / RELATED_TOPICS / RELATED_QUERIES
"date": "today 12-m",
"geo": "JP",
"api_key": "YOUR_SERPAPI_KEY",
}
results = GoogleSearch(params).get_dict()
print(results["interest_over_time"]["timeline_data"][:3])
非公式エンドポイント直叩き (上級者向け)
pytrends も内部でこれを使っています。仕組み理解のみ:
1. https://trends.google.com/trends/api/explore?req=...&tz=...&hl=...
→ トークン (widgets) を取得
2. https://trends.google.com/trends/api/widgetdata/multiline?...&token=...
→ 時系列データ取得 (先頭5バイト ")]}'," を捨てて JSON パース)
ハマりどころ:
- NID クッキーが無いと 429 になりやすい
- レスポンス先頭の XSSI プレフィックス ")]}'," を除去必須
- 短時間多発で IP 単位の一時 BAN
- 仕様が予告なく変わる
レート制限と対策
| 症状 | 原因 | 対策 |
|---|---|---|
| 429 Too Many Requests | 短時間多発 | 1〜5 秒のスリープ、指数バックオフ |
| ResponseError 数日継続 | IP 単位の BAN | プロキシローテーション or SerpAPI 移行 |
| 空のデータフレーム | マイナーすぎるキーワード | キーワード変更 or 期間延長 |
| キーワード5語超でエラー | 1リクエスト最大5語 | 5語ずつバッチ化し基準語で正規化 |
SEO 調査での実践例
# 5語を超える比較は、共通の基準語を入れてバッチ化+正規化
import pandas as pd
from pytrends.request import TrendReq
pytrends = TrendReq(hl='ja-JP', tz=-540)
keywords = ['Python','Ruby','PHP','Go','Rust','Java','TypeScript','Kotlin','Swift']
anchor = 'Python' # 全バッチに共通で入れる基準語
dfs = []
for i in range(0, len(keywords), 4):
batch = [anchor] + [k for k in keywords[i:i+4] if k != anchor]
pytrends.build_payload(batch, timeframe='today 12-m', geo='JP')
df = pytrends.interest_over_time().drop(columns=['isPartial'])
dfs.append(df)
# anchor の値で正規化
merged = dfs[0]
for df in dfs[1:]:
scale = merged[anchor].mean() / df[anchor].mean()
df = df * scale
merged = merged.join(df.drop(columns=[anchor]), how='outer')
print(merged.tail())
FAQ
Q: Google Cloud に Trends の API は無いの?
A: 2026 年現在ありません。Google は公式 API を公開していません。BigQuery 公開データセットにも Trends は含まれません。
Q: pytrends が突然動かなくなった
A: Google が内部仕様を変えるとよくあります。GitHub の最新版 (master) を入れ直すか、SerpAPI に切り替えるのが安定です。
Q: 検索回数の「実数」を知りたい
A: Trends は相対値しか返しません。Glimpse(推定実数を返す商用サービス)か、Google 広告の キーワードプランナー を併用してください。
Q: 利用規約上問題ないか
A: Google の規約はスクレイピングを禁止しています。商用や本番では SerpAPI 等の正規 API を経由するのが安全です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?