Blog
サーチコンソールの1,000行制限を突破する方法まとめ
検索パフォーマンスのクエリ一覧を下までスクロールしていくと、あるところで表が終わります。まだ続きがありそうなのに、そこで止まる——。
これは表示の都合ではありません。Google Search Console(サーチコンソール)の画面に出るのは、各タブの上位1,000行までと決まっています。エクスポートしても同じです。
ただし、この記事でいちばん伝えたいのは次のことです。1,000行より下のデータが存在しないわけではありません。 Google側にはちゃんとあります。見る手段が限られているだけです。
つまりこれは、諦める話ではなく取り出し方の話です。以下、外側を見る方法を難易度順に4つ、限界も含めて正直に整理します。
まず自分のサイトで確かめる(30秒)
読み進める前に、自分のサイトが上限にぶつかっているかを確認しておくと、以降の話が具体的になります。
- サーチコンソールで「検索パフォーマンス」→「検索結果」を開く
- 期間を長め(過去3ヶ月〜16ヶ月)に設定する
- 下の表で「クエリ」タブを選び、表の右下にある1ページあたりの行数を最大にする
- ページを最後まで送る
合計1,000行ぴったりで終わっていれば、上限にぶつかっています。 999行以下で終わったなら、そのタブは今のところ上限内です。
「エクスポートすれば全部出るのでは」と思うところですが、エクスポートも同じ1,000行までです。画面に出ないものはファイルにも出てきません。ここを勘違いしたまま「CSVを取ったから全部保存できた」と考えてしまうのが、いちばん危ないパターンです。
事実: 1,000行制限の正確な仕様
誤解のないよう、範囲を正確にしておきます。
- 上限がかかるのは画面表示とエクスポートです
- タブごとに各1,000行です。クエリで1,000行、ページで1,000行、国で1,000行、というように別々に数えます
- 期間を変えても上限は変わりません。期間を短くすれば、その期間内での上位1,000行になります
- 上限に達したという通知は出ません。表が終わったように見えるだけです
そして最も大事な点をもう一度。制限の外側にデータ自体は存在します。 Googleが持っていないのではなく、この画面がそこまでしか出さない、という話です。だからこそ、取り出し口を変えれば手が届きます。
16ヶ月を過ぎてGoogle側から削除されたデータは取り戻せませんが(サーチコンソールのデータは16ヶ月で消える — 消える前にやるべき保存設定)、1,000行の外側はそれとは別の話です。消えているのではなく、見えていないだけです。
外側を見る方法(難易度順に4つ)
上から順に、簡単なものから並べています。自分が続けられそうなところまでで構いません。
1. エクスポートを最大限に使う
先に正直に書いておくと、エクスポートで上限そのものは変わりません。それでも、使い方次第で手元に残る行数は増やせます。
- タブごとに書き出す: クエリ・ページ・国・デバイス・検索での見え方は別々に1,000行ずつです。まとめて1回ではなく、タブごとに取れば合計の行数は増えます
- 期間を短く区切って複数回取る: 16ヶ月を一度に取ると全期間の上位1,000行しか出ませんが、月ごとに区切れば「その月の上位1,000行」が月数ぶん取れます。ロングテールは月によって顔ぶれが変わるので、結果として拾える種類は増えます
手順自体は簡単です。検索パフォーマンスの画面右上にあるエクスポートから、CSVかGoogleスプレッドシートを選ぶだけです。書き出すと、画面のタブがそのままシートに分かれて出てきます。「日付」タブも一緒に取っておくと、あとで期間をまたいで比べるときに効きます。
もう1つ、地味ですが効く工夫があります。フィルタをかけた状態でエクスポートすると、その絞り込み結果の1,000行が書き出されます。 つまり次の「2. フィルタで母集団を分割する」と組み合わせれば、1回あたり1,000行という枠を何度も使えます。
手数はかかりますが、今日ゼロ円で始められて、確実に手元に残るのが利点です。
2. フィルタで母集団を分割する
上限は「絞り込んだ結果ごと」にかかります。ここを利用します。
たとえばサイトが複数のディレクトリに分かれているなら、ページのフィルタで /blog/ に絞れば、その中の上位1,000行が見えます。/service/ に絞れば、また別の1,000行です。サイト全体では埋もれていた行が、絞り込んだ母集団の中では上位に浮かび上がります。
同じことがクエリ側でもできます。「〜とは」を含むクエリ、「方法」を含むクエリ、というように分割していけば、それぞれで1,000行の枠を使えます。
- 無料で、今日できます
- 分割の切り口を自分で決められるので、知りたい領域を狙って掘れます
使えるフィルタは、クエリ・ページ・国・デバイス・検索での見え方・日付です。実際にはページ(ディレクトリ)で切るのがいちばん扱いやすいはずです。サイトの構造とそのまま対応するので、切り口を思いつきやすく、後から「どこを見たか」を管理しやすいためです。
たとえば全体では1,000行で頭打ちになっていたサイトでも、/blog/ /service/ /news/ の3つに割れば、それぞれで1,000行ずつの枠が使えます。ディレクトリの中でさらに階層が深いなら、もう一段割ることもできます。
一方で限界もはっきりしています。網羅は保証されません。 自分で思いついた切り口の外側は、やはり見えないままです。どこまで分割すれば全部を覆えたのか、確かめる方法もありません。
それに、分割した結果を単純に足し合わせることもできません。クエリ側のフィルタで割った場合、1つのクエリが複数の絞り込みに入ることがありますし、絞り込みごとに指標が再計算されるためです。「気になるところを深く見る」には向いていて、「取りこぼしなく全部を持つ」には向いていない——この線引きを理解して使うぶんには、十分に強力な手段です。
3. Search Console API を使う
ここからが本命です。1,000行の制限は画面側の制限であって、APIには別の考え方が適用されます。
APIでは、1回のリクエストで返せる行数に上限があるかわりに、開始位置をずらしながら繰り返し呼ぶことで、APIで取得できるすべての行を順に取り出せます。画面で言えば「1,001行目から先も続けて読める」ということです。
取得の考え方は次のようになります。
- 期間と、取り出したい切り口(クエリ、ページ、あるいはクエリ×ページの組み合わせ)を指定する
- 1回目のリクエストで先頭から取る
- 返ってきた行数が上限ぴったりなら「まだ続きがある」とみなし、開始位置をずらして次を取る
- 返ってきた行数が上限に満たなくなったら、そこで終わり
この繰り返しを日付ごとに回して自分の手元に貯めれば、画面の制限からは解放されます。クエリ×ページの組み合わせのように、画面より細かい単位で取れるのも利点です。
貯め方で1つだけ、後から効いてくる注意があります。日付を持たせて追記していくことです。「最新の期間をまとめて取り直して上書きする」形にすると、16ヶ月を過ぎた古い側が手元からも消えていきます。それでは自分で貯める意味が半分なくなります。日付ごとの行として足していけば、手元には期間の制限なく積み上がります。
必要になるのは、Google Cloud プロジェクトの用意、OAuth 認証の設定、そしてページング処理の実装です。プログラムを書く前提の手段になります。
4. BigQuery バルクエクスポート
Googleが公式に提供している、唯一の完全な全量エクスポート手段です。サーチコンソールの設定から一括データエクスポートを有効にすると、以後の検索パフォーマンスデータが毎日BigQueryへ書き出されます。
これがAPIとも決定的に違う点が1つあります。匿名化クエリが行として存在することです。検索数がごく少ないなどの理由でGoogleが匿名化したクエリは、APIでは行として返ってきません。BigQueryなら、検索語そのものは伏せられたまま、行としては存在します。
ただし前提があります。Google Cloud プロジェクトと課金アカウントが必要で、BigQueryは従量課金です。そして見るにはSQLを書きます。さらに、有効にした日から先のデータしか書き出されません。過去に遡って埋めてはくれないので、ここでも「早く始めた分だけ貯まる」という性質があります。
それぞれの限界(正直に)
4つとも実際に使えますが、詰まり方が違います。
| 方法 | 費用 | 必要な知識 | 主な限界 |
|---|---|---|---|
| エクスポートを最大限使う | 無料 | 不要 | 上限そのものは変わらない。手作業の回数が増える。取り忘れた期間は後から埋められない |
| フィルタで分割 | 無料 | 不要 | 手作業で、網羅が保証されない。思いつかなかった切り口の外側は見えないまま。どこまで覆えたかを確かめる方法もない |
| Search Console API | 無料 | プログラミング・OAuth | 実装と保守が要る。匿名化クエリは行として取得できない。貯める先も自分で用意する |
| BigQuery バルクエクスポート | 従量課金 | SQL・Google Cloud の設定 | 設定のハードルが高い。費用が事前に読みにくい。有効化した日から先のみで、過去は埋まらない |
とくに混同されやすいのが、APIとBigQueryの「全部見える」の意味の違いです。APIで見えるのはAPIで取得できるすべての行であって、匿名化クエリはそこに含まれません。この違いは、後から数字が合わない原因になります。
1,000行の外側に何があるのか
そもそも、上位1,000行では足りないのはなぜでしょうか。
「上位1,000件も見れば十分だろう」と感じるかもしれません。実際、クリック数の多い順に並べれば、上の方に主要な流入は集まります。ただしサイトによっては、クリックの合計の多くが1,000行より下の長い裾野から来ています。1語1語は月に数クリックでも、種類が数千・数万あれば、合計は無視できない量になります。
この裾野が見えないと、次のようなことが起こります。
- 記事を書き直したあと、どの語での流入が消えたのかを追えない。上位は変わっていないのに合計が減っている、という状況で手がかりが無い
- 実際に読者が使っている言い回し(上位には出てこない、しかし確かに検索されている語)を拾えない
- 新しく入り始めた語に気づけない。入り始めの語は、必ず下位から現れます。表示回数が数回の段階では上位1,000行に入らないので、育ってから初めて存在に気づくことになります
そして厄介なのは、この裾野は記録しておかないと後から復元できないことです。1,000行の外側は「今は見えていないだけ」ですが、16ヶ月を過ぎればGoogle側から消えます。見えないまま消えるので、失ったことにも気づきません。
だからこそ、完璧な仕組みを作る前に、まず何か取り出して残し始めることに意味があります。
この手間をなくすツールを開発中です
ここまでの4つは、どれも実際に使える方法です。一方で、無料の手段は手作業が続き、強力な手段は技術と費用の壁があります。
この部分を引き受けるサービスとして、サチモリを開発しています。
- Googleアカウントで接続すると、サーチコンソールのデータを毎日自動で保存します
- 1,000行の壁の外側まで、APIで取得できる範囲すべてを検索・並べ替えできます(匿名化クエリは含まれません)
- 接続は読み取り専用の権限のみで行います
SQLもスクリプトも必要ありません。
そのうえで申し添えると、今日から何かを始めるなら、この記事の「2. フィルタで母集団を分割する」からでも十分に始められます。無料で、登録も要らず、今開いている画面でできます。まずそこから始めて、手作業が続かないと感じたときに他の手段を検討する、という順番で構いません。
現在開発中で、サチモリ(サーチコンソールデータ保存・監視サービス)では事前登録を受け付けています。
よくある質問
1,000行より下のデータは存在しないのですか?
存在します。1,000行はあくまで画面表示とエクスポートの上限で、Google側にはその外側のデータもあります。見る手段が限られているだけです。フィルタで母集団を分割する、Search Console APIを使う、BigQueryバルクエクスポートを使う、のいずれかで外側に手が届きます。
APIなら全部見えますか?
「画面に出ない残りのクエリ・ページ」という意味では、APIで取得できるすべての行を順に取り出せます。ただし匿名化クエリは含まれません。検索数がごく少ないなどの理由でGoogleが匿名化したクエリは、APIでは行として返ってこないためです。行として匿名化クエリを扱えるのはBigQueryバルクエクスポートだけです。
エクスポートの上限を増やす設定はありますか?
ありません。1,000行はGoogleが定めた仕様で、設定で変更することはできません。上限そのものを動かすのではなく、フィルタで母集団を分割するか、APIやBigQueryといった別の取り出し口を使うことになります。
この手間をなくすツールを開発中です → 事前登録で完成時に最初のご案内
事前登録して、完成したら最初に案内を受け取る