# マネージド機能のインストール(初回のみ実行)
pip install --upgrade google-api-python-client
pip install oauth2client

# ライブラリの読み出し
import pandas as pd
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
from datetime import datetime, date, timedelta
## サーチコンソールへのアクセス設定を行う
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] ## 固定設定
KEY_FILE_LOCATION = 'xxxxxxx.json' ## 自分のgoogle search console上で作成したjsonの認証情報を設定する
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES) 
webmasters = build('webmasters', 'v3', credentials=credentials)

domain = 'https://xxxxxx.com' ## 自分のgoogle search consoleに登録してあるサイトのURL 
dimensions = ['query', 'page']

## 取得データは直近90日分に絞る
today = datetime.today()
startDate = (today - timedelta(days=90)).strftime('%Y-%m-%d') ## 実行日の90日前を指定
endDate = today.strftime('%Y-%m-%d') ## データ取得終了日は処理日を指定
rowLimit = 5000 # 取得レコード数の最大値を設定

body = {
    'startDate': startDate,
    'endDate': endDate,
    'dimensions': dimensions,
    'rowLimit': rowLimit
}

## ここでデータ取得
response = webmasters.searchanalytics().query(siteUrl=domain, body=body).execute()
df = pd.json_normalize(response['rows'])

## 取得したデータの整形
for i, d in enumerate(dimensions):
    df[d] = df['keys'].apply(lambda x: x[i])

## google search consoleの3ヶ月の平均掲載順位を取得
df_positonMarge = df.loc[df.groupby('page')['position'].idxmin()] ## pageでgroupbyした結果で最もpositionが小さい値を取得
print(df_positonMarge["position"].mean().round(2))

> 19.79  # 上記コードの実行結果

手動設定必要なコード

3行目:自分のgoogle search console上で作成したjsonの認証情報を設定する
7行目:自分のgoogle search consoleに登録してあるサイトのURL

pythonコード作成前に、GCPのプロジェクト作ったり、search console apiを有効化したり、アクセスのためのアカウントや認証キーの作成が必要ですが、その辺りは以下サイトに詳細書いてありますので、そちらを参照ください。

参考サイト:https://toukei-lab.com/api#Google_search_consoleAPI

おすすめの記事