Webサイト運用に必須のSearch Console(旧ウェブマスターツール)。
その中の検索アナリティクスを使うことで、WebサイトがGoogleにどのように表示されたのかを知ることが出来ます。
Webサイトがどのようなキーワードで何位に表示され、何人のユーザーがクリックし、どれくらいのユーザーがスルーしているのか。
これらの情報を分析することでWebサイト改善のヒントが得られることも少なくありません。
検索アナリティクス999件までしか表示できない問題
このように便利な検索アナリティクスなのですが、管理画面からは最大で1度に999件までしか検索クエリを確認することが出来ません。
表示回数の少ないロングテールキーワードの確認には物足りないことがあるかもしれません。
しかし、この問題を解消する手段がGoogleから公開されています。
[Google ウェブマスター向け公式ブログ: 検索アナリティクス API のご紹介]
http://googlewebmastercentral-ja.blogspot.jp/2015/08/introducing-search-analytics-api.html
この検索アナリティクスAPI(Search Console API)を利用することで、管理画面では999件までしか表示されない検索クエリを1度に1,000件以上取得することが出来るようになります。
今回はC#を使ってこのAPIを利用して1,000件以上の検索クエリを取得する方法をご紹介します。
Search Console APIを使ってデータを取得する
Google Client Libraryのインストール
visual studioが利用できる場合はNuGetのパッケージマネージャーコンソールからインストールすることで、関連ライブラリも併せてインストールできるので便利です。
Install-Package Google.Apis.webmasters.v3
Oauth認証
ライブラリのインストールが終わったら、まずはSearch Console APIに接続するための認証を行います。
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = "クライアントID", ClientSecret = "クライアントシークレット" },
new[] { WebmastersService.Scope.Webmasters },
"ユーザー名",
CancellationToken.None,
new FileDataStore("search analytycs report download")).Result;
WebmastersService service = new WebmastersService(new BaseClientService.Initializer() {
HttpClientInitializer = credential,
ApplicationName = "search console download"});
認証に必要な「クライアントID」と「クライアントシークレットは」Google Developers ConsoleにてSearch Console APIの利用登録を行い取得してください。
検索アナリティクスからデータを取得する
続いて検索クエリを取得するためリクエストを投げます。
SearchAnalyticsQueryRequest body = new SearchAnalyticsQueryRequest();
body.StartDate = "2016-07-02"; //取得開始日[yyyy-mm-dd]
body.EndDate = "2016-07-02"; //取得終了日[yyyy-mm-dd]
body.RowLimit = 5000; //データ取得件数(MAX5,000件)
body.StartRow = 0; //データ取得開始位置
body.SearchType = "web";
body.Dimensions = new List() { "query" };
SearchAnalyticsQueryResponse response = service.Searchanalytics.Query(body, サイトURL).Execute();
Console.WriteLine("クエリ件数:" + response.Rows.Count);
foreach (ApiDataRow row in response.Rows)
{
string ww = row.Keys[0].PadRight(40 -
(Encoding.GetEncoding("Shift_JIS").GetByteCount(row.Keys[0]) - row.Keys[0].Length));
Console.WriteLine(ww + $"{row.Clicks, 6}{row.Impressions, 8} {row.Ctr,-20}
{row.Position,-20}");
}
データ取得のリクエストで指定できるパラメータは下記になります。
一度に取得可能なクエリ数は5,000件までですが、APIのパラメータで取得開始位置(startrow)を指定することで5,000件以上の取得も可能です。
例えば[startrow=5,001, rowlimit=5,000]とすることで5,001件目~10,000件目までのデータを取得することも可能です。
取得結果を確認する
管理画面の表示内容と同じものが出力されていることを確認。
検索クエリの件数も無事1,000件以上取得できています。
最後に
今回、検索アナリティクスAPIを使って1,000件以上の検索クエリを取得する方法をご紹介しました。
この他にも検索アナリティクスAPIを活用することで、ページ別の検索クエリ取得や3ヵ月しか保存期間がない検索クエリの自動保存など人手では手間な作業をプログラムで自動化することが可能になります。
サイト運用に有用な検索アナリティクスですが、検索アナリティクスAPIを使うことでその機能を最大限に活用できるようになります。
是非ご活用ください。
