2026年11月9日
2026年11月9日
エゴサる Suggest API でサジェストを一括取得し、記事の見出しと FAQ に使う方法(無料枠・202 の扱い・Python 例)
検索窓に言葉を入れたときに出る候補(サジェスト)は、「その言葉の次に、人が何を知りたがっているか」を示す一次情報です。エゴサる Suggest API は、Google・Bing・YouTube・Amazon・楽天市場・Yahoo! JAPAN・DuckDuckGo・百度・Yandex・Naver・Daum のサジェストを、五十音や A〜Z の展開込みで JSON として返す HTTP API です。無料プランから使え、API キーは誰でも発行できます(2026年11月現在)。
結論を先に書くと、使い方は次の 4 点に集約されます。
- gstudio1.com でユーザー登録し、ユーザーメニュー「API」で
gsk_で始まるキーを発行する。 GET https://gstudio1.com/api/v1/{source}/suggest?q=語&lang=ja&flat=1を、Authorization: Bearer キーを付けて呼ぶ。- 未取得の語は 202 が返るので、
retry_after_secondsだけ待って同じリクエストを再送する。 - 無料プランは 30 回/分・1,000 回/日・新規の語は 1 日 20 件(取得元ごと)。超えると 429 が返る。
この記事は、ワードプレス博士の記事企画で実際に使っている手順を一般化したものです。エゴサるは当サイトと同じライトセンド株式会社が運営しています。
エゴサる Suggest API とは
エゴサる Suggest API とは、各検索サービスが公開しているサジェスト(検索候補)の応答を集め、1 つのキーワードについて「語そのもの」「語+あ〜ん」「語+A〜Z」「語+0〜9」の展開結果をまとめて返す JSON API です。日本語(lang=ja)では五十音で展開し、ほかの言語ではスペース+その言語の文字で展開します。対応言語はサイトと同じ 20 言語です。
取得元(source) |
対象 | 補足 |
|---|---|---|
google |
Google サジェスト | 既定 |
bing |
Bing サジェスト | country の指定に強く従う |
youtube |
YouTube サジェスト | — |
amazon |
Amazon のサジェスト | lang と country で市場(Amazon.co.jp・Amazon.com など)を選ぶ |
rakuten |
楽天市場(日本向け) | — |
yahoo |
Yahoo! JAPAN(zh-tw は Yahoo奇摩) |
— |
duckduckgo |
DuckDuckGo | lang=ja は日本向け候補 |
baidu |
百度 | zh・ja・en |
yandex |
Yandex | ru・tr |
naver / daum |
Naver / Daum | ko |
ebay / shopee |
eBay / Shopee | 対応する lang・country のみ |
検索ボリューム(月間検索数)は返しません。サジェストは「需要の有無と言い回し」を知るためのもので、量を測るには別の道具(Search Console や有料のキーワードツール)が必要です。
API キーを発行する
- gstudio1.com のユーザー登録でアカウントを作ります。
- ログインし、ユーザーメニューの「API」を開いて API キーを発行します。キーは
gsk_で始まる文字列です。 - キーはサーバー側のプログラムから使います。ブラウザの JavaScript や公開リポジトリに埋め込むと第三者に使われます(公式のキー取得ページにも同じ注意があります)。
ご利用には利用規約への同意が必要です。送信したキーワード・IP アドレス・API キーは運営側のログに記録されます(プライバシーポリシー)。
リクエストの形
エンドポイントは 1 本です。
GET https://gstudio1.com/api/v1/{source}/suggest?q=キーワード&lang=ja&flat=1
Authorization: Bearer gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
| パラメータ | 必須 | 内容 |
|---|---|---|
q |
必須 | キーワード(1〜60 文字)。全角・半角、大文字・小文字、空白は正規化されます |
lang |
任意 | 言語コード。既定は ja(明示が推奨されています)。en・ko・zh など 20 言語 |
country |
任意 | 国・市場(ISO 3166-1 の 2 文字)。en なら us(既定)・gb・au など。Amazon・Bing・DuckDuckGo はこの指定に強く従い、Google・YouTube は取得元の地域の影響が残ることがあります |
group |
任意 | all(既定)、または itself,nihongo,native,alphabet,number のカンマ区切り。展開の種類を絞ります |
flat |
任意 | 1 にすると、重複を除いた suggestions の配列だけを返します。記事企画の用途ではこれが扱いやすい形です |
応答と 202(取得待ち)の扱い
取得済みのキーワードは 200 で即座に返ります。
{ "ok": true, "status": "ready", "query": "ランニング", "source": "google", "lang": "ja", "country": "jp",
"fetched_at": "2026-10-24T01:02:03Z", "stale": false, "count": 412,
"suggestions": ["ランニング シューズ", "..."] }
まだ取得されていないキーワードは、取得に数十秒かかるため、まず 202 でキューに入ります。
{ "ok": true, "status": "queued", "source": "google", "lang": "ja", "country": "jp",
"queue_position": 3, "retry_after_seconds": 24 }
retry_after_seconds 秒後に同じリクエストを再送すると、取得が済んでいれば 200 で返ります。取得済みのデータは 7 日間キャッシュされ、期限切れ後も再取得中は "stale": true を付けて古いデータを返します。キャッシュは source・q・lang の組ごとに独立しています。
再送は「無料枠の新規キーワード」を消費しません。新規として数えられるのは、まだキャッシュに無い語を初めて頼んだときだけです。
curl と Python の例
curl で 1 語だけ試す例です(キーワードは URL エンコードします)。
KEY=gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
curl -H "Authorization: Bearer $KEY" \
"https://gstudio1.com/api/v1/google/suggest?q=wordpress%20%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84&lang=ja&flat=1"
Python で複数の語を取り、202 なら待って再送し、結果をファイルに残す例です。標準ライブラリだけで動きます。
import json, time, urllib.parse, urllib.request, urllib.error
API = "https://gstudio1.com/api/v1"
KEY = "gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 環境変数などから読む。コードに直書きしない
def suggest(q, source="google", lang="ja", max_wait=120):
url = f"{API}/{source}/suggest?q={urllib.parse.quote(q)}&lang={lang}&flat=1"
waited = 0
while True:
req = urllib.request.Request(url, headers={"Authorization": "Bearer " + KEY})
try:
with urllib.request.urlopen(req, timeout=40) as r:
code, body = r.getcode(), json.load(r)
except urllib.error.HTTPError as e:
if e.code == 429: # 上限。Retry-After に従う
wait = int(e.headers.get("Retry-After", "60"))
time.sleep(wait); continue
raise
if code == 200 and body.get("status") == "ready":
return body["suggestions"]
wait = int(body.get("retry_after_seconds", 20)) # 202: 取得待ち
if waited + wait > max_wait:
return None # 今回はあきらめ、次回の実行で取る
time.sleep(wait); waited += wait
seeds = ["wordpress ログインできない", "wordpress 白い画面"]
results = {}
for s in seeds:
results[s] = suggest(s)
time.sleep(2) # 30回/分の枠に収める
json.dump(results, open("suggest.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1)
同じ語を何度も頼まないよう、取得した JSON は保存して再利用してください。ワードプレス博士では 6 日以内のキャッシュがあれば API を呼ばない作りにしています。
無料プランの上限と 429
| 項目 | 上限(無料プラン) |
|---|---|
| リクエスト / 分 | 30 |
| リクエスト / 日(JST) | 1,000 |
| 新規(未キャッシュ)キーワード / 日 | 20(取得元ごとに数え、取得済みの語は消費しない) |
上限を超えると 429 と Retry-After ヘッダーが返ります。すべての応答に X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset と X-Daily-Limit / X-Daily-Remaining が付くので、残量を見ながら送ってください。上限は予告なく変更されることがあります。より多く取る有料プランは料金ページに載っています。
その他のエンドポイントは次の 2 つです。
GET /api/v1/usage— 自分のキーの過去 30 日の利用状況とプランの上限(要認証)GET /api/v1/status— キューの深さとワーカーの稼働状況(認証不要)
エラーの意味
| HTTP | コード | 意味 |
|---|---|---|
| 400 | invalid_query / invalid_lang / invalid_country / invalid_group / source_not_offered |
パラメータの誤り。その言語で提供していない取得元を指定した場合を含む |
| 401 | invalid_api_key |
キーが無い、または無効 |
| 404 | not_found |
source やパスの誤り |
| 429 | rate_limited / daily_quota_exceeded / new_keyword_quota_exceeded |
上限超過。Retry-After を参照 |
| 502 | upstream_failed |
取得元からの取得に失敗。1 時間後に再試行できる |
| 503 | queue_full |
混雑中。Retry-After を参照 |
取ったサジェストを記事の見出しと FAQ に使う手順
サジェストは「並べて眺める」だけでは記事になりません。ワードプレス博士で使っている手順は次のとおりです。
- シード=記事の主題を 1 語に決める。 例として「wordpress ログインできない」を Google で取ると、2026年11月現在 65 件の候補が返りました。
- 候補を意図で分ける。 返ってきた語を「症状の細分(404・403・リダイレクト・くるくる・cookie)」「環境(xserver・conoha・さくら・お名前.com・local)」「操作(url 変更・再インストール・phpmyadmin・プラグイン)」のように分けます。この分け方が、そのまま h2 の候補です。
- h2・h3 に落とす。 「症状の細分」は原因別の見出しに、「操作」は手順の見出しに、「環境」はレンタルサーバーごとの注意に使います。全部を入れる必要はなく、自分が正確に書ける範囲だけを採ります。
- FAQ の質問文に使う。 「wordpress ログインできない メールアドレス」のような語は、そのまま「よくある質問」の h3 の質問文になります。検索語と質問文が一致していると、検索結果や AI の回答に引かれやすくなります。
- 既存記事と突き合わせる。 同じ語を狙う記事が自分のサイトにすでにあれば、新しく書かずに加筆します。同じ主題の記事が複数あると、互いに評価を奪い合います。
- 検索量は別に測る。 サジェストは需要の有無を示しますが量は示しません。公開後は Search Console で表示回数と順位を見て、見出しを直します。
| サジェストの例 | 意図 | 記事での置き場所 |
|---|---|---|
| wordpress ログインできない 404 | 症状の細分 | h2「ログイン画面が 404 になる場合」 |
| wordpress url 変更 ログインできない | 操作が原因 | h2「サイト URL を変えた後に入れなくなった場合」 |
| xserver wordpress ログインできない | 環境 | h3 または注意書き(サーバー固有の設定) |
| wordpress ログインできない メールアドレス | 質問 | FAQ「メールアドレスでログインできますか」 |
WordPress の編集画面から使うなら
1 語ずつ調べる用途なら、API を直接呼ぶより WordPress プラグイン「Egosaru Suggest」のほうが手軽です。投稿の編集画面にパネル(またはボックス)が出て、同じ API から候補を取り、クリックでコピーできます。導入と設定はWordPress の編集画面でサジェストを調べる無料プラグイン「Egosaru Suggest」の使い方にまとめています。
利用にあたっての注意
- データは各サービスの公開サジェスト応答に基づくもので、正確性や継続性(SLA)は保証されていません。
- 送信したキーワード、IP アドレス、API キーは運営側に記録されます。社外秘の語を送らないでください。
- 上限の引き上げや商用利用の相談、不具合の報告は、API ドキュメントに記載の連絡先(Telegram・X の DM・お問い合わせフォーム)で受け付けています。
よくある質問
サジェストと検索ボリュームは何が違いますか
サジェストは検索サービスが候補として出している言い回しで、「そう検索する人がいる」ことを示します。検索ボリュームは月あたりの検索回数の推定値で、別の道具で測ります。この API が返すのはサジェストだけです。
202 が返ったあと、どのくらい待てばよいですか
応答の retry_after_seconds の値だけ待ってから、同じリクエストを再送してください。公式ドキュメントでは、未取得の語の取得に数十秒かかるとされています。
同じ語を毎日取り直すと無料枠を使いますか
取得済み(7 日間のキャッシュ内)の語は「新規キーワード」の枠を消費しません。リクエスト回数(30 回/分・1,000 回/日)の枠は使います。
WordPress のサイトで使うとき、キーはどこに置けばよいですか
サーバー側(PHP の wp_remote_get やサーバーのスクリプト)から呼び、キーは環境変数や wp_options に保存します。テーマの JavaScript に書くと、ページを見た人全員にキーが渡ります。
まとめ
エゴサる Suggest API は、無料キーを発行して GET を 1 本送るだけで、11 の取得元のサジェストが JSON で手に入ります。未取得の語は 202 で待ち、同じリクエストを再送する点と、無料プランの「新規キーワード 1 日 20 件」の枠を意識して、取った結果は保存して使い回してください。サジェストは量ではなく意図を知る道具です。見出しと FAQ の言い回しに落とし、公開後は Search Console で確かめる、という流れで使うと記事の質が上がります。