\ 最大10%ポイントアップ! /

【画像解説】Search Console API✕PythonでSEOデータ取得

【画像解説】Search Console API✕PythonでSEOデータ取得

ウェブサイトの検索パフォーマンスを本気で分析したいあなたへ

Google Search Console APIの使い方がわかれば、SEO施策が一気に進化します。

Google Search Consoleは多くのサイト運営者にとって必須ツールですが、その機能はAPI経由で使うことで真価を発揮します。手動で画面を操作する手間がなくなり、検索アナリティクス・サイトマップ・インデックス確認などをすべて自動化できます。

この記事では、Google Search Console APIの利用開始手順から、Pythonによる初回実装例・認証方法・活用法・注意点まで、完全に網羅して解説します。


こんな悩みを持つ方にぴったりです👇

APIって難しそうで手が出せない
複数のサイトデータを一括取得したい
Search Consoleのデータを自社のBIツールと連携したい
定期的にレポートを自動生成したい
検索順位の異変にリアルタイムで気づきたい


読み進めることで、以下のような力が身につきます👇

Google Search Console APIの概要とできることが明確になる
OAuth 2.0認証・クライアントIDの設定方法がわかる
Pythonでの基本的なAPIリクエスト実装ができるようになる
クォータ制限やエラー対応などの運用ノウハウを習得できる
自動化によるSEO改善スピードを加速できる

この記事は、初心者でもわかるステップバイステップ形式で進行し、実務にそのまま使えるコード付きで構成しています。
Google Search Console API 利用開始のベストな第一歩を、今ここで踏み出しましょう。


目次

Google Search Console APIとは?|できること・導入メリットを解説

検索パフォーマンスを自動で可視化・管理できる、SEOの最強パートナー🔍

Google Search Console APIは、Googleが提供する公式ツールで、ウェブサイトの検索状況を自動的に取得・分析できる強力なインターフェースです。

手作業でのデータ収集や確認作業に限界を感じている方にとって、APIの導入は大きな飛躍につながります。

AOI345.com

WEBサイトのGoogle Search Consoleの表示内容を自作のプログラムに組み込むことができるようするものがAPIです。


🔧 Search Console APIでできる|検索アナリティクス・サイトマップ送信・URL検査

検索アナリティクスデータ(クエリ・クリック数・CTR・掲載順位)を自動取得
サイトマップの送信・取得・エラー確認をスクリプトで管理
URL検査によるインデックス状況・モバイル対応・構造化データの状態を一括チェック
ウェブインターフェースでは実現しづらいスケーラブルなSEO分析と監視が可能

これにより、日次や週次でのレポート作成、異常検知、パフォーマンス改善の施策立案までを自動化し、SEO運用のスピードと精度を大幅にアップ⏫できます。


Search Console APIの導入前に必要な準備|アカウント・サイト登録の確認

Google Search Console APIを使い始めるには、最低限の準備が必要です🛠️

APIを活用するには、まずSearch Consoleに登録されたサイト情報とGoogleアカウントの整備が不可欠です。技術的な前提条件をクリアしておけば、後の設定もスムーズに進みます。

AOI345.com

APIを使う前に🔗 Google Search ConsoleWEBサイトのサービスを使っていればこの章の事前準備は完了しています。
Google Search Consoleは無料です。

Google Search Console

✅ 利用前に確認すべき3つの必須条件|アカウント・サイト・権限設定

Googleアカウントを保有しており、Search Consoleに対象サイトが登録済みであること
◉ サイトの所有権がSearch Console上で確認済みになっていること
◉ Search Consoleに不慣れな場合は、まずウェブUI(管理画面)で基本機能を把握しておくと安心

特に所有権の確認はAPI操作において非常に重要なステップです。操作対象となるサイトであっても、アカウントに必要な権限がないとAPIリクエストが失敗します⚠️

また、Search Consoleの画面操作に慣れておくことで、APIで何が自動化できるのか、直感的に理解しやすくなります。


GCPプロジェクトの作成方法とSearch Console APIの有効化手順

Google Search Console APIを使うには、まずGCPの設定が欠かせません🔑

🔗 Google Cloud Platform(GCP)は、Googleの各種APIを使うための基盤です。ここでプロジェクトを作成し、Search Console APIの利用を明示的に有効化する必要があります。

設定自体はシンプルですが、今後の運用効率やクォータ管理にも関わるため、丁寧に進めていきましょう。


✅ 初心者向け|GCPプロジェクト作成〜API有効化のステップ一覧

1️⃣ 🔗 Google Cloud Platform(GCP)にアクセスし、新しいプロジェクトを作成

2️⃣ ナビゲーションメニューから「APIとサービス」を開く

APIとサービス

3️⃣ 左のメニューから「ライブラリ」を開く

ライブラリ

4️⃣ 検索バーで「Google Search Console API」を入力し、表示されたAPIを「選択」

Search Console API

5️⃣ 「有効にする」を選んでAPIを有効化する

APIを有効にする

この設定を行うことで、プロジェクト単位でAPIが利用できる状態になります。


さらに、このプロジェクトでは次のような管理が可能になります👇

◉ APIの利用上限(クォータ)の確認・調整
◉ 利用量に応じた請求管理(基本無料範囲あり)

◉ 認証情報(クライアントIDやAPIキー)の一元管理

Search Console APIは基本的に無料で使えますが、GCP側ではプロジェクトの請求設定を求められることがあります。これは将来的に他のGoogle APIを併用する際の拡張性にもつながるため、安心して登録しておきましょう。


OAuth 2.0認証の設定方法と同意画面の作成手順【Search Console API用】

Search Console APIを使うには、Googleアカウントとの安全な連携が必要です🔐

そのためには、Googleが提供するOAuth 2.0認証を活用し、ユーザーの同意を得たうえでデータにアクセスできるように設定を行います。
このステップでは、認証フローを構成し、アプリとしての基本情報や権限を定義します。

✅ OAuth認証ステップ完全ガイド|Google Cloud Consoleでの設定方法

1️⃣ 右上に表示されている「認証情報の作成」を選択

認証情報の作成

2️⃣ 認証情報の種類を選ぶ画面では「ユーザーデータ」を選択して、「次へ」を押します。

ユーザーデータ

3️⃣ OAuth同意画面でアプリ名・サポートメール・デベロッパーの連絡先情報を入力し、保存して次へ

OAuth 同意画面

4️⃣ スコープは省略可なので、とりあえず省略し「保存して次へ」

スコープ

5️⃣ OAuth クライアント IDではアプリケーションの種類と名前を設定し、「作成」

6️⃣ 作成された情報はJSON形式でダウンロードしておき、Pythonスクリプトなどから利用

ダウンロード

7️⃣ 作成された情報はJSON形式でダウンロードしておき、Pythonスクリプトなどから利用します

AOI345.com

ダウンロードできるjsonファイルの入手Google Cloud Platformで実施すべき内容です。
ファイル名を「client_secret.json」に変えて「ユーザー名フォルダ」に置いておくと、後に出てくるテストプログラムを実行しやすいです。


OAuthスコープの選択は非常に重要で、必要最小限の権限だけを指定するのがセキュリティ的にもベストです👇

スクロールできます
スコープURI内容主な用途
https://www.googleapis.com/auth/webmasters.readonly読み取り専用アクセスパフォーマンスデータ取得などに最適
https://www.googleapis.com/auth/webmasters読み取り+書き込みアクセスサイトマップ送信なども行う場合に必要

認証情報ファイル(*.json)は、APIにアクセスするための鍵のようなもの。セキュリティ上非常に重要なので、外部に漏れないよう厳重に保管してください。

さらに、認証後に得られるアクセストークンやリフレッシュトークンは、別途安全な形式で保存して再利用できるようにしておくと便利です✨


OAuth 2.0のテストユーザーを追加する方法|審査なしでAPIを試すには?

Googleが提供するOAuth 2.0認証で、Googleの審査プロセスを完了せずにテストプログラムを動作させるには「テストユーザー」の追加が必要です。

自分のGoogleアカウントのメールアドレスをテストユーザーに追加することで審査プロセスを完了していないプログラムを実行できるようになります。

テストユーザーに追加していない場合のプログラム実行時

Googleの審査プロセス

✅ テストユーザーの登録手順|審査不要で動かすための設定

1️⃣ 🔗 Google Cloud Platform(GCP)にアクセスします

2️⃣ ナビゲーションメニューから「APIとサービス」を開く

APIとサービス

3️⃣ 左のメニューから「OAuth 同意画面」を開く

OAuth 同意画面

4️⃣ 左のメニューから「対象」を選択

5️⃣ テストユーザー内の「+Add users」を選ぶ

テストユーザー +Add users

6️⃣ 右側に出てくるポップアップに「自分のGoogleアカウントのメールアドレス」を記載して「保存」

7️⃣ テストユーザー内に追加されていれば成功です

テストユーザー

PythonでGoogle APIを使うための環境構築手順【Search Console対応】

PythonからGoogle Search ConsoleのAPIを呼び出すプログラムを実行してみます。
そのためには、パソコンにPythonの実行環境が入っている必要があります。

下記のサイトからPythonの実行環境のファイルがダウンロードできますのでインストールしましょう。

🔗 Welcome to Python.org

Pythonダウンロード

1️⃣ Pythonプログラムをインストールしたら「ターミナル」を起動します。

ターミナルを起動

2️⃣ ターミナルにpython3 –versionと入力して実行し、バージョンが表示されればインストール成功です。

Pythonバージョン確認

3️⃣ 次のテストプログラムで使用するGoogleライブラリもインストールします。
  1つ目のコマンドは「pip3 install google-auth-oauthlib」です。

pip3 install google-auth-oauthlib

4️⃣ 2つ目のコマンドは「pip3 install –upgrade google-api-python-client」です。

pip3 install --upgrade google-api-python-client
AOI345.com

この2つのライブラリの追加が完了しましたら、次のプログラムの実行環境が完了になります。

5️⃣ 3つ目のコマンドは「pip3 install pandas」です。

pip3 install pandas
AOI345.com

このライブラリは2つ目のサンプルを実行するのに必要になります。

6️⃣ 最後に「python3」と入力して、実行状態にしておきましょう。

python3

PythonでSearch Console APIに接続する方法【初心者向けコード付き】

Pythonを使えば、Google Search Console APIの操作は驚くほどシンプルに✨

このセクションでは、APIへ接続するための基本手順と、Pythonコードの実装方法を初心者向けにわかりやすく解説します。
初回設定が済めば、次回以降は再認証不要で実行可能な仕組みも構築できます🔁


✅ 認証〜接続〜サイト一覧取得のサンプルコード解説

◉ 必要なライブラリをインストール(1行コマンドでOK)
◉ ダウンロードした認証情報ファイル(*.json)を使ってOAuth 2.0認証を実行
◉ トークンをファイルに保存し、2回目以降は自動ログイン状態で処理を継続


以下のような基本コードで、Search Consoleに登録されているサイト一覧を取得できます👇

from google_auth_oauthlib.flow import InstalledAppFlow  
from googleapiclient.discovery import build  
import os  

SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']  
CLIENT_SECRETS_FILE = 'client_secret.json'  
TOKEN_FILE = 'token.json'  

def authenticate():  
    creds = None  
    if os.path.exists(TOKEN_FILE):  
        from google.oauth2.credentials import Credentials  
        creds = Credentials.from_authorized_user_file(TOKEN_FILE, SCOPES)  

    if not creds or not creds.valid:  
        flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)  
        creds = flow.run_local_server(port=0)  
        with open(TOKEN_FILE, 'w') as token:  
            token.write(creds.to_json())  

    return creds  

def get_service():  
    credentials = authenticate()  
    service = build('searchconsole', 'v1', credentials=credentials)  
    return service  

def list_sites(service):  
    site_list = service.sites().list().execute()  
    for site in site_list.get('siteEntry', []):  
        print(f"URL: {site['siteUrl']} | 権限: {site['permissionLevel']}")  

if __name__ == '__main__':  
    sc_service = get_service()  
    list_sites(sc_service)

このコードをベースに、検索アナリティクスの取得やURL検査、サイトマップの送信などの処理にも拡張できます。
最初のハードルを越えれば、APIの可能性が一気に広がります💡


1️⃣ 前の章でPython実行状態のところにサンプルプログラムの内容をすべて貼り付けます。
  さらにリターンキーを2回押して、プログラムを実行します。

ソースコード

2️⃣ ブラウザが起動し、アカウントの選択画面になるので自分のGoogleアカウントを選びます

アカウントの選択

3️⃣ 権限の承認を求めてくるので「続行」を選びます

SEO分析がgoogleアカウントへのアクセスを求めています

4️⃣ 表示内容が下記の様になっていれば「ブラウザを閉じ」てOKです

Completed

5️⃣ ターミナルの画面に「Google Search Consoleに登録しているサイトの一覧」が表示されます

サイト一覧
AOI345.com

これにて、Google Search ConsoleのAPIを使用したサンプルプログラムが実行できたことになります。
以降の内容を参考にサンプルプログラムを編集して、様々なAPIを実行して見ましょう!


検索アナリティクスをAPIで取得する方法|クエリ・CTR・掲載順位を自動分析

Google Search Console APIの中心機能が、この検索アナリティクスの取得です📊

Google検索でのパフォーマンスを可視化し、キーワードやページごとの成果をデータドリブンで分析できます。
通常のSearch Console画面では難しいフィルタや集計も、APIを使えば柔軟に自動処理できます。

✅ 取得可能なデータ一覧|クエリ別・日別・デバイス別など

クエリ別・ページ別の表示回数、クリック数、CTR(クリック率)、平均掲載順位
日別・デバイス別・国別などのセグメントごとの詳細な分析が可能
フィルタ(例:特定のページやクエリのみ)で狙ったデータを抽出できる
日次で自動取得し、順位変動や改善効果を可視化できるダッシュボードを構築可能

たとえば、「CTRが高いのに掲載順位が低いクエリ」を特定することで、狙って改善できるページを明確に選定できます。


さらに、長期的なキーワードパフォーマンスのトレンド把握や、リライト施策の効果測定もスムーズに行えます。

スクロールできます
指標名内容使い方の例
clicks検索結果からのクリック数コンテンツの訴求力を測定
impressions表示された回数検索ボリュームと露出の確認
ctrクリック率(clicks/impressions)タイトル・ディスクリプション改善の評価
position平均掲載順位SEO施策の効果測定や順位変動の監視

APIを使えば、手作業では面倒な時系列分析やページ別レポートもすべて自動化可能です。
PythonやGoogleスプレッドシートと連携することで、業務フローに組み込むのも簡単です💡


📌 サンプルプログラム
インデックスの登録確認を行う。
🔜 サンプルプログラム2|インデックス確認・クロール日時(1URL毎)
🔜 サンプルプログラム4|一括インデックス登録確認(URLのCSVリスト)


APIでサイトマップを送信・取得・削除する方法|更新通知も自動化

新しいページを素早くインデックスさせたいなら、サイトマップの自動送信が鍵🔁

Google Search Console APIを使えば、サイトマップの送信・取得・削除・エラー監視をすべてプログラムから操作できます。
コンテンツ更新のたびに手動で送信する必要がなくなるため、運用の自動化とインデックススピードの改善が実現します。


✅ APIでできるサイトマップ管理|送信・ステータス取得・削除の使い分け

◉ APIから新しいサイトマップを送信し、クロールを即座に促すことが可能
◉ サイト更新後に自動でサイトマップ通知するフローを構築すれば、作業ミスも防止
◉ APIを使ってサイトマップのステータス(送信日、エラー有無、警告数など)を取得可能
エラーや警告の有無を監視ツールと連携すれば、問題検知と対応を高速化できる


以下は、よく使われるメソッドとその内容をまとめた表です👇

スクロールできます
メソッド名機能活用シーン
sitemaps.submitサイトマップの送信新規ページ追加時の通知自動化
sitemaps.listサイトマップ一覧を取得登録状況の確認や重複チェック
sitemaps.getステータス確認エラー発生時の詳細把握
sitemaps.deleteサイトマップの削除古いURL群を整理する際に活用

たとえば、ブログやECサイトで毎日ページが追加される場合、新着記事や商品ページを自動的にGoogleに通知できます。
これにより、検索エンジンへの認識速度が上がり、早期インデックス&流入増加に直結🆙します。


AOI345.com

サイトマップの登録は頻度が低く一括のメリットもないため、Google Seach Consoleで行えば良い。
そのため、サンプルプログラムは割愛しています。


URL検査APIの使い方|インデックス登録・クロール結果を自動チェック

重要ページがGoogleに正しく認識されているか、一目でチェック🔎

Google Search Console APIでは、URL検査ツールの機能をプログラムから利用できます。
検索パフォーマンスに直結するインデックス状況やクロール結果、構造化データの対応状況を、自動で確認・監視することが可能です。

✅ 検索インデックス・クロール状態・構造化エラーを自動取得

指定したURLのインデックス登録状況や最終クロール日時を確認
Googleが認識しているカノニカルURL(正規URL)がどれかを把握
リッチリザルト(構造化データ)対応状況やモバイルユーザビリティの診断結果も取得
◉ 新規記事や重要なランディングページを即時チェックし、インデックス漏れを防止
複数URLを一括で検査できるので、サイト全体の健全性チェックにも有効
エラー検出時に自動アラートを送る通知機能も連携可能


以下のような情報がAPIで得られます👇

スクロールできます
項目内容活用例
indexingStateインデックスの登録状況未登録ページの検出
lastCrawlTime最終クロール日時クロール頻度の確認
pageFetchStateクロール時のHTTPステータスエラー発生URLの特定
mobileUsabilityモバイル対応可否UX改善ポイントの把握
richResults構造化データの有無とステータスリッチリザルト表示の支援

記事を公開したのに検索に出てこない…そんな時も、このAPIで一発確認🧩
特に大量のページを管理しているメディアサイトやECサイトでは、自動検査+異常検知の仕組みが非常に役立ちます。


📌 サンプルプログラム
ページ毎 or 検索ワード毎の時系列のクリック数・表示回数・CTR・順位の出力を行う。
🔜 サンプルプログラム5|一括ページ情報取得(クリック・表示回数・CTR・掲載順位)(URLのCSVリスト)
🔜 サンプルプログラム6|一括クエリ情報取得(クリック・表示回数・CTR・掲載順位) (検索語のCSVリスト)

📌 派生サンプルプログラム
Search Console APIではなくIndexing APIを使い、未登録URLの登録リクエストを行う。
🔜 サンプルプログラム3|インデックス登録リクエスト(URLのCSVリスト)


Search Consoleだけではなく、Google AnalyticsもAPIで利用したい方に🔻

あわせて読みたい
【画像手順】PythonとGoogle Analytics APIでデータ自動取得 Google Analytics API 始め方|GA4データを自動化・分析に活用するには? Google AnalyticsのUIだけでは物足りない…そんなあなたへ。 GA4のデータをもっと自由に扱いた...

【サンプル②】URLのインデックス確認と最終クロール日時を取得する方法

「サイト一覧」だけでは面白くないので、URL検査のAPIも使ってみましょう。
今回のプログラムでは「サービスアカウント」の作成「鍵(キー)」の追加Google Search Consoleへ「サービスアカウントの追加」が必要です。


✅ Search Console API用サービスアカウントの作成手順

1️⃣ 🔗 Google Cloud Platform(GCP)にアクセスします

2️⃣ ナビゲーションメニューから「IAMと管理」を開く

IAMと管理

3️⃣ 左のメニューから「サービスアカウント」を開く

サービスアカウント

4️⃣ 上部のメニューから「+サービスアカウントを作成」を選ぶ

+サービスアカウントを作成

5️⃣ サービス アカウントの作成画面で「サービス アカウント名」を記載します

6️⃣ 表示されたウィンドウで「サービスアカウント名」を設定する
  サービスアカウントIDが自動で設定されるので「完了」を押します

サービスアカウント名の設定

7️⃣ 元の画面に戻り、一覧に「メールに新たな項目が追加」されていれば成功です
  このアカウントにはまだ「キーがありません」ので追加します

サービスアカウントの確認

✅ API認証用JSONキーの発行と保存方法

1️⃣ アービスアカウントの一覧から「追加したサービスアカウント」を選びます

サービスアカウントの選択
AOI345.com

このメールアドレスをメモしておきましょう。
あとでGoogle Search Consoleで使います。

2️⃣ アカウントの詳細画面上部のタブから「」を選びます

鍵タブの選択

3️⃣ 表示されるウィンドウで「キーを追加」を選びます

キーを追加

4️⃣ プルダウンメニューが表示されるので「新しい鍵を作成」を選びます

新しい鍵を作成

5️⃣ キータイプの選択画面が表示されるの「JSON」を選んで「作成」を押します

JSONを選択

6️⃣ 「」がパソコンにダウンロードされます

鍵が表示される

7️⃣ 自動でダウンロードされて、保存されます

ファイルが保存されます
AOI345.com

最初のJSONとは別のファイルです。
ファイル名を「your_service_account.json」に変えて「ユーザー名フォルダ」に置いておくと、後に出てくるテストプログラムを実行しやすいです。


✅ Search Consoleでサービスアカウントをユーザー追加する方法

1️⃣ 🔗 Google Search Consoleにアクセスします

2️⃣ Google Search Consoleの左のメニューから「設定」を選びます

Google Search Consoleの設定

3️⃣ 全体設定で「ユーザーと権限」を選びます

ユーザーと権限

4️⃣ ユーザーと権限で「ユーザーを追加」を選びます

ユーザーを追加

5️⃣ ユーザーを追加ウィンドウの「メールアドレス」を入力して「追加」を押します
  権限についてはアプリによって変えるもので「閲覧のみ」か、そのまま「フル」にします。

ユーザーを追加:メールアドレス

6️⃣ 名前の欄に「新たなアカウント」が追加されていれば追加成功です

ユーザー(2)
AOI345.com

この操作がなければ、PythonプログラムからGoogle Search Consoleへのアクセス権限がなくてエラーになります。


✅ 実装コード:インデックス確認APIの基本サンプル

ようやく3つの事前準備が終わりました。
早速、index_statusを使ったサンプルプログラムを実行してみましょう。


以下のようなコードで、Search Consoleに登録されているページであるか確認できます👇

from google.oauth2 import service_account
from googleapiclient.discovery import build

# --- 設定(自分の環境に合わせて変更) ---
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # JSONファイルのパス
SITE_URL = 'https://aoi345.com/'                   # Search Consoleに登録済のサイトURL
TARGET_URL = 'https://aoi345.com/memorandum/search-console-api-python/'      # 調べたいページのURL

# --- 認証とAPIビルド ---
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
service = build('searchconsole', 'v1', credentials=credentials)

# --- URLインスペクション ---
request = {
    'inspectionUrl': TARGET_URL,
    'siteUrl': SITE_URL
}
response = service.urlInspection().index().inspect(body=request).execute()

# --- 結果の出力 ---
index_status = response.get('inspectionResult', {}).get('indexStatusResult', {})
coverage = index_status.get('coverageState', '不明')
verdict = index_status.get('verdict', '不明')
last_crawled = index_status.get('lastCrawlTime', '不明')

print(f"📄 URL: {TARGET_URL}")
print(f"📦 インデックス状況: {coverage}")
print(f"🔍 判定: {verdict}")
print(f"⏰ 最終クロール日時: {last_crawled}")
AOI345.com

SITE_URLにSearch Consoleに登録済のサイトURL、TARGET_URLに調べたいページのURLを記載しましょう


🔗Visual Studio Code にソースを貼り付けて、右上の実行ボタンを押します。
下のエリアに実行結果が表示され、インデックスされていることが分かります。

サンプルプログラム2実行結果
AOI345.com

ターミナルにソースコードを貼り付けて実行するのは面倒になってきたので、🔗Visual Studio Code環境を導入しました。
Pythonの実行環境が入っていれば、簡単に導入できます。


【サンプル③】URLのインデックス登録をAPIでリクエストする方法

さらに「URL一覧」から、インデックス登録リクエストを行うプログラムも使ってみましょう。
今回のプログラムでは「Indexing API」「オーナー権限への変更」が必要です。


✅ Indexing APIの有効化手順(Google Cloud Platform)

1️⃣ 🔗 Indexing API 有効化ページにアクセスします
  (対象のGoogle Cloudプロジェクトが選択されている状態)

2️⃣ Web Search Indexind APIの「有効にする」を選ぶ

Web Search Indexind API

✅ API実行用ユーザーにオーナー権限を付与する方法

1️⃣ 🔗 Google Search Consoleにアクセスします

2️⃣ Google Search Consoleの左のメニューから「設定」を選びます

設定

3️⃣ 全体設定で「ユーザーと権限」を選びます

ユーザーと権限

4️⃣ Pythonプログラムのために作成したユーザーの右の「メニューアイコン」を選びます

5️⃣ 表示されるポップアップメニューの「権限を変更」を押します

権限を変更

6️⃣ 表示されるポップアップウィンドウの権限「オーナー」に変更して「保存」を押します

オーナー権限へ変更
AOI345.com

インデックス登録リクエストはフルでも足りず、オーナーの権限が必要です。


✅ 実装コード:インデックス登録リクエストの送信

ようやく事前準備が終わりました。
早速、インデックス登録リクエストを行うサンプルプログラムを実行してみましょう。

今回のプログラムは下記のようなCSV形式のファイルでリクエスト対象のURLを同じフォルダに置いておきます。
このURLの中身を順番にインデックスを行っていきます。

urls.csv

url
AOI345.com

URLのリストの作り方は、下記の章で説明しています
🔜 サンプルプログラム3以降で使う「URL一覧」を作成する方法


以下のようなコードで、Search ConsoleにURLでインデックス登録のリクエストができます👇

import pandas as pd
import time
from google.oauth2 import service_account
from googleapiclient.discovery import build

# --- 設定 ---
CSV_FILE = 'urls.csv'  # 入力CSV
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # ダウンロードしたJSON鍵
SCOPES = ['https://www.googleapis.com/auth/indexing']

# --- 認証とAPIクライアント作成 ---
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('indexing', 'v3', credentials=credentials)

# --- CSVからURLを読み込み ---
df = pd.read_csv(CSV_FILE)
if 'url' not in df.columns:
    raise ValueError("CSVに 'url' 列が見つかりません")

urls = df['url'].dropna().tolist()

# --- URLごとにインデックス登録リクエスト ---
for url in urls:
    print(f"📤 リクエスト中: {url}")
    body = {
        "url": url,
        "type": "URL_UPDATED"
    }
    try:
        response = service.urlNotifications().publish(body=body).execute()
        print(f"✅ 成功: {response.get('notifyTime', '')}")
    except Exception as e:
        print(f"❌ 失敗: {e}")
    time.sleep(1.5)  # クォータ制限のため少し待機

インデックス登録リクエストの結果

インデックス登録リクエスト結果

【サンプル④】複数URLのインデックス登録状況を一括確認する方法

インデックス登録リクエストを行うプログラムでリクエストできる数には限界があります。
そこで、URLの一覧からインデックス登録がされているか確認するプログラムを作ってみます。

✅ 実装コード:複数URLのインデックス状態をCSVで出力

今までのサンプルプログラムの準備で事前準備に相当する部分は終わっており、入力のCSV形式のについてもサンプルプログラム3と同じファイルを使います。
結果に関しては大量になるので「index_status_result.csv」というファイルに出力します。

urls.csv

url
AOI345.com

URLのリストの作り方は、下記の章で説明しています
🔜 サンプルプログラム3以降で使う「URL一覧」を作成する方法


以下のようなコードで、Search ConsoleにURLがインデックス登録されているかの一括確認ができます👇

import pandas as pd
import time
from google.oauth2 import service_account
from googleapiclient.discovery import build

# --- 設定 ---
CSV_FILE = 'urls.csv'  # 入力ファイル
SERVICE_ACCOUNT_FILE = 'your_service_account.json'
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'https://aoi345.com/'  # Search Consoleに登録されたサイトURL(最後に / が必要)

# --- 認証 ---
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
service = build('searchconsole', 'v1', credentials=credentials)

# --- 関数:インデックス状況を確認 ---
def check_index_status(target_url):
    try:
        request = {
            'inspectionUrl': target_url,
            'siteUrl': SITE_URL
        }
        response = service.urlInspection().index().inspect(body=request).execute()
        result = response.get('inspectionResult', {}).get('indexStatusResult', {})
        return {
            'coverageState': result.get('coverageState', '不明'),
            'verdict': result.get('verdict', '不明'),
            'lastCrawlTime': result.get('lastCrawlTime', 'なし')
        }
    except Exception as e:
        return {
            'coverageState': 'エラー',
            'verdict': str(e),
            'lastCrawlTime': ''
        }

# --- CSV読込 & チェック実行 ---
df = pd.read_csv(CSV_FILE)
if 'url' not in df.columns:
    raise ValueError("CSVに 'url' 列がありません")

results = []
for url in df['url']:
    print(f"🔍 チェック中: {url}")
    status = check_index_status(url)
    results.append({
        'url': url,
        *status
    })
    time.sleep(1.5)  # クォータ制限:1秒以上の待機を推奨

# --- 結果をCSV出力 ---
output_df = pd.DataFrame(results)
output_df.to_csv("index_status_result.csv", index=False)
print("✅ 出力完了:index_status_result.csv")

インデックス登録チェック実施中

インデックス登録チェック実施中

サンプル4の出力CSV

サンプル4の出力結果

【サンプル⑤】ページごとの検索パフォーマンス(CTR・順位など)を一括取得

APIを使ってやりたいことは手動だと面倒な推移情報の取得
7日間毎の直近1年間のクリック・表示回数・CTR・掲載順位の推移を一括で取得します。

✅ 実装コード:URL単位のクリック数・表示回数・CTR・順位を週次取得

今までのサンプルプログラムの準備で事前準備に相当する部分は終わっており、入力のCSV形式のについてもサンプルプログラム3と同じファイルを使います。
結果に関しては大量になるので「gsc_metrics_by_indicator.csv」というファイルに出力します。
クリック数・表示回数・CTR・掲載順位のそれぞれで52週分の推移を出力します。

urls.csv

url
AOI345.com

URLのリストの作り方は、下記の章で説明しています
🔜 サンプルプログラム3以降で使う「URL一覧」を作成する方法


以下のようなコードで、Search ConsoleにURLのページのクリック率等の一括取得(週次)ができます👇
クエリ数を1000、取得週を54週に設定しているので非常に時間がかかります。

import pandas as pd
from datetime import datetime, timedelta, timezone
from google.oauth2 import service_account
from googleapiclient.discovery import build
import time

# === 設定 ===
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # サービスアカウントJSON
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'https://aoi345.com/'  # GSC登録プロパティ(末尾 / を含める)
INPUT_CSV = 'urls.csv'
OUTPUT_CSV = 'gsc_url_metrics_grouped_by_metric.csv'
NUM_WEEKS = 54          # 取得する週数(直近N週)
MAX_URL_COUNT = 1000    # 最大URL数(クォータ制限対策)

# === 認証処理 ===
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('searchconsole', 'v1', credentials=credentials)

# === 週別日付ラベル生成 ===
def generate_week_ranges(weeks=NUM_WEEKS):
    end_date = datetime.now(timezone.utc).date()
    ranges = []
    for i in range(weeks):
        to_date = end_date - timedelta(days=i * 7)
        from_date = to_date - timedelta(days=6)
        label = f"{from_date}~{to_date}"
        ranges.append((str(from_date), str(to_date), label))
    return list(reversed(ranges))  # 昇順

# === 各URL・週に対する指標取得 ===
def get_metrics(service, site_url, url, start_date, end_date):
    try:
        request = {
            'startDate': start_date,
            'endDate': end_date,
            'dimensions': ['page'],
            'dimensionFilterGroups': [{
                'filters': [{
                    'dimension': 'page',
                    'operator': 'equals',
                    'expression': url
                }]
            }],
            'rowLimit': 1
        }
        response = service.searchanalytics().query(siteUrl=site_url, body=request).execute()
        if 'rows' in response:
            row = response['rows'][0]
            return {
                'clicks': row.get('clicks', 0),
                'impressions': row.get('impressions', 0),
                'ctr': round(row.get('ctr', 0), 4),
                'position': round(row.get('position', 0), 2)
            }
        else:
            return {'clicks': 0, 'impressions': 0, 'ctr': 0.0, 'position': 0.0}
    except Exception as e:
        return {'clicks': 'ERR', 'impressions': 'ERR', 'ctr': 'ERR', 'position': 'ERR'}

# === メイン処理 ===
df = pd.read_csv(INPUT_CSV)
if 'url' not in df.columns:
    raise ValueError("CSVファイルに 'url' 列が必要です")

df = df.head(MAX_URL_COUNT)
week_ranges = generate_week_ranges()
results = []

for url in df['url']:
    print(f"🔍 処理中: {url}")
    row = {'url': url}
    clicks, impressions, ctrs, positions = {}, {}, {}, {}

    for start_date, end_date, label in week_ranges:
        metrics = get_metrics(service, SITE_URL, url, start_date, end_date)
        clicks[f"clicks_{label}"] = metrics['clicks']
        impressions[f"impr_{label}"] = metrics['impressions']
        ctrs[f"ctr_{label}"] = metrics['ctr']
        positions[f"pos_{label}"] = metrics['position']
        time.sleep(0.3)  # クォータ制限対策

    # 指標ごとに順番に結合
    row.update(clicks)
    row.update(impressions)
    row.update(ctrs)
    row.update(positions)
    results.append(row)

# === 出力 ===
output_df = pd.DataFrame(results)
output_df.to_csv(OUTPUT_CSV, index=False)
print(f"✅ 出力完了: {OUTPUT_CSV}")

情報出力実施中

Listターミナル

AOI345.com

上記のプログラムは完了に時間がかかるので、下記に日次の順位だけを出力するように変更したプログラムも作りました。

下記のサンプルプログラムは「日数毎」指定したURL数「順位のみ」を取得します👇
初期設定は30日、対象URLは100URLにしています。

import pandas as pd
from datetime import datetime, timedelta, timezone
from google.oauth2 import service_account
from googleapiclient.discovery import build
import time

# === 設定 ===
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # サービスアカウントのJSON
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'https://aoi345.com/'  # Search Consoleプロパティ(末尾/付き)
INPUT_CSV = 'urls.csv'
OUTPUT_CSV = 'gsc_url_position_by_day.csv'
NUM_DAYS = 30         # ← 直近の日数分だけ取得(例:30日)
MAX_URL_COUNT = 100   # ← 最大URL数(クォータ制限対策)

# === 認証 ===
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('searchconsole', 'v1', credentials=credentials)

# === 日付リスト生成 ===
def generate_date_list(num_days=NUM_DAYS):
    today = datetime.now(timezone.utc).date()
    return [str(today - timedelta(days=i)) for i in range(num_days)][::-1]  # 昇順

# === 指定URLの指定日の掲載順位取得 ===
def get_position(service, site_url, url, target_date):
    try:
        request = {
            'startDate': target_date,
            'endDate': target_date,
            'dimensions': ['page'],
            'dimensionFilterGroups': [{
                'filters': [{
                    'dimension': 'page',
                    'operator': 'equals',
                    'expression': url
                }]
            }],
            'rowLimit': 1
        }
        response = service.searchanalytics().query(siteUrl=site_url, body=request).execute()
        if 'rows' in response:
            return round(response['rows'][0].get('position', 0), 2)
        else:
            return ''
    except Exception as e:
        return 'ERR'

# === メイン処理 ===
df = pd.read_csv(INPUT_CSV)
if 'url' not in df.columns:
    raise ValueError("CSVファイルに 'url' 列が必要です")

df = df.head(MAX_URL_COUNT)
date_list = generate_date_list()
results = []

for url in df['url']:
    print(f"🔍 処理中: {url}")
    row = {'url': url}
    for date in date_list:
        row[f"pos_{date}"] = get_position(service, SITE_URL, url, date)
        time.sleep(0.3)  # クォータ制限回避
    results.append(row)

# === 出力 ===
output_df = pd.DataFrame(results)
output_df.to_csv(OUTPUT_CSV, index=False)
print(f"✅ 出力完了: {OUTPUT_CSV}")

【サンプル⑥】検索クエリ別のSEO指標(表示数・順位など)を一括取得

推移情報の取得でページ以外で欲しいのが検索クエリに対する情報。
7日間毎の直近1年間のクリック・表示回数・CTR・掲載順位の推移を一括で取得します。

✅ 実装コード:クエリ別のパフォーマンスをCSVに出力する方法

今までのサンプルプログラムの準備で事前準備に相当する部分は終わっておりますが、入力のCSV形式についてはURLではなくクエリになるので「query.csv」を使います。
結果に関しては大量になるので「gsc_query_metrics_by_week.csv」というファイルに出力します。
クリック数・表示回数・CTR・掲載順位のそれぞれで52週分の推移を出力します。

query.csv

query
投資信託とは
新NISA
インデックス投資
AOI345.com

クエリのリストの作り方は、下記の章で説明しています
🔜 サンプルプログラム6で使う「クエリ一覧」を作成する方法


以下のようなコードで、Search Consoleに対象のクエリの検索順位等の情報の一括取得ができます👇

import pandas as pd
from datetime import datetime, timedelta, timezone
from google.oauth2 import service_account
from googleapiclient.discovery import build
import time

# === 設定 ===
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # サービスアカウントJSON
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'https://aoi345.com/'  # GSCプロパティURL(末尾スラッシュ付き)
INPUT_CSV = 'query.csv'
OUTPUT_CSV = 'gsc_query_metrics_grouped_by_metric.csv'
NUM_WEEKS = 54          # 直近何週分を取得するか
MAX_QUERY_COUNT = 1000  # 処理するクエリ数の上限

# === 認証処理 ===
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('searchconsole', 'v1', credentials=credentials)

# === 日付範囲生成(7日間×N週)===
def generate_week_ranges(end_date=None, weeks=NUM_WEEKS):
    if end_date is None:
        end_date = datetime.now(timezone.utc).date()
    ranges = []
    for i in range(weeks):
        to_date = end_date - timedelta(days=i * 7)
        from_date = to_date - timedelta(days=6)
        label = f"{from_date}~{to_date}"
        ranges.append((str(from_date), str(to_date), label))
    return list(reversed(ranges))  # 古い順から並べる

# === 指標取得関数 ===
def get_metrics(service, site_url, query, start_date, end_date):
    try:
        request = {
            'startDate': start_date,
            'endDate': end_date,
            'dimensions': ['query'],
            'dimensionFilterGroups': [{
                'filters': [{
                    'dimension': 'query',
                    'operator': 'equals',
                    'expression': query
                }]
            }],
            'rowLimit': 1
        }
        response = service.searchanalytics().query(siteUrl=site_url, body=request).execute()
        if 'rows' in response:
            row = response['rows'][0]
            return {
                'clicks': row.get('clicks', 0),
                'impressions': row.get('impressions', 0),
                'ctr': round(row.get('ctr', 0), 4),
                'position': round(row.get('position', 0), 2)
            }
        else:
            return {'clicks': 0, 'impressions': 0, 'ctr': 0.0, 'position': 0.0}
    except Exception as e:
        return {'clicks': 'ERR', 'impressions': 'ERR', 'ctr': 'ERR', 'position': 'ERR'}

# === メイン処理 ===
df = pd.read_csv(INPUT_CSV)
if 'query' not in df.columns:
    raise ValueError("CSVファイルに 'query' 列が必要です")

df = df.head(MAX_QUERY_COUNT)
date_ranges = generate_week_ranges()
results = []

for query in df['query']:
    print(f"🔍 クエリ処理中: {query}")
    row = {'query': query}
    clicks = {}
    impressions = {}
    ctr = {}
    position = {}

    for start_date, end_date, label in date_ranges:
        metrics = get_metrics(service, SITE_URL, query, start_date, end_date)
        clicks[f"clicks_{label}"] = metrics['clicks']
        impressions[f"impr_{label}"] = metrics['impressions']
        ctr[f"ctr_{label}"] = metrics['ctr']
        position[f"pos_{label}"] = metrics['position']
        time.sleep(0.3)  # クォータ制限対策

    # 指標ごとに列をまとめて順番に追加
    row.update(clicks)
    row.update(impressions)
    row.update(ctr)
    row.update(position)
    results.append(row)

# === 出力 ===
output_df = pd.DataFrame(results)
output_df.to_csv(OUTPUT_CSV, index=False)
print(f"✅ 出力完了: {OUTPUT_CSV}")

AOI345.com

上記のプログラムは完了に時間がかかるので、下記に日次の順位だけを出力するように変更したプログラムも作りました。

下記のサンプルプログラムは「日数毎」指定したクエリ数「順位のみ」を取得します👇
初期設定は30日、検索ワードは100クエリにしています。

import pandas as pd
from datetime import datetime, timedelta, timezone
from google.oauth2 import service_account
from googleapiclient.discovery import build
import time

# === 設定 ===
SERVICE_ACCOUNT_FILE = 'your_service_account.json'  # サービスアカウントJSON
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
SITE_URL = 'https://aoi345.com/'  # GSCに登録済のプロパティ(末尾/付き)
INPUT_CSV = 'query.csv'
OUTPUT_CSV = 'gsc_query_position_by_day.csv'
NUM_DAYS = 30         # ← 過去の日数(例:30日分)
MAX_QUERY_COUNT = 100 # ← クエリの最大処理数

# === GSC認証 ===
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('searchconsole', 'v1', credentials=credentials)

# === 直近の日付リストを生成 ===
def generate_date_list(num_days=NUM_DAYS):
    today = datetime.now(timezone.utc).date()
    return [str(today - timedelta(days=i)) for i in range(num_days)][::-1]

# === 指定クエリ・日付の position を取得 ===
def get_position(service, site_url, query, date):
    try:
        request = {
            'startDate': date,
            'endDate': date,
            'dimensions': ['query'],
            'dimensionFilterGroups': [{
                'filters': [{
                    'dimension': 'query',
                    'operator': 'equals',
                    'expression': query
                }]
            }],
            'rowLimit': 1
        }
        response = service.searchanalytics().query(siteUrl=site_url, body=request).execute()
        if 'rows' in response:
            return round(response['rows'][0].get('position', 0), 2)
        else:
            return ''
    except Exception as e:
        return 'ERR'

# === メイン処理 ===
df = pd.read_csv(INPUT_CSV)
if 'query' not in df.columns:
    raise ValueError("CSVファイルに 'query' 列が必要です")

df = df.head(MAX_QUERY_COUNT)
date_list = generate_date_list()
results = []

for query in df['query']:
    print(f"🔍 クエリ処理中: {query}")
    row = {'query': query}
    for date in date_list:
        row[f'pos_{date}'] = get_position(service, SITE_URL, query, date)
        time.sleep(0.3)  # クォータ制限対策
    results.append(row)

# === CSV出力 ===
output_df = pd.DataFrame(results)
output_df.to_csv(OUTPUT_CSV, index=False)
print(f"✅ 出力完了: {OUTPUT_CSV}")

AOI345.com

クエリのリストの作り方は、下記の章で説明しています


【文字化け対策】CSVファイルを正しく開く方法(UTF-8対応)

このサンプルプログラムに限らずですが、エクセルでCSVを開いた時には下記の手順によりエクセルでコード変換し、文字化けをしていない状態でファイルが開けます👍


1️⃣ エクセルの「データ」タブで「データファイル指定」を押します

データファイル指定

2️⃣ データソースの選択から「テキスト/CSV」を選びます

テキスト/CSV

3️⃣ データソースへの接続メニューの接続設定から「参照」を選びます

接続設定、参照

4️⃣ ファイル選択ウィンドウが開くので「CSVファイル」を選び、「データ取り出し」を押します

CSVファイルのデータ取り出し

5️⃣ 接続設定のローカルファイルを選択できたら「次へ」を選びます

次へ

6️⃣ 「UTF-8コード」を選択して「読み込む」を選びます

7️⃣ エクセルのシートに文字化けしていない表が表示されます


WordPressから投稿ページのURL一覧を抽出する方法【API用CSV作成】

サンプルプログラムでURLの一覧を必要としますので、サイトに登録されているすべてのURLの一覧を出力する手順を説明します。

AOI345.com

Google Search ConsoleのURL一覧を使うとIndexされていないURLが漏れるので、下記の手順は漏れがなくておすすめです。


1️⃣ WordPressサイトでプラグインの追加画面で「Export any WordPress data」で検索します
  Export any WordPress data to XML/CSVを「今すぐインストール」を押します

Export any WordPress

2️⃣ インストールが完了したら「有効化」を押します

Export 有効化

3️⃣ 左側のメニューに新たに追加された「すべてエクスポート」を選びます

すべてエクスポート

4️⃣ 右側の画面に表示されるWP ALL EXPORTで「投稿タイプを選択」します

投稿タイプの選択

5️⃣ 私の場合にはカスタム投稿タイプを使っているますが一般的には「投稿」を選びます
  その後に画面下の「投稿 を移行」を選びます

AOI345.com

固定ページも必要であれば、投稿の後に繰り返して実行しましょう。

新規エクスポート

6️⃣ 「エクスポートの確認 & 実行」を選びます(設定は初期設定のままでOK)

エクスポートの確認&実行

7️⃣ 出力が完了しますので、「CSV」をダウンロードします

Confirm & Run

8️⃣ CSVファイルを開くと様々な内容が記載されていますので、「Permalink」の列がURLです
  Permalinkの記載をurlに変更し、他の列を削除。更にファイル名を「urls.csv」にファイル名を変更します

Permalink
AOI345.com

これで、ホームページのすべての投稿のURLの一覧をリストアップできます。


Google Search Consoleから検索クエリ一覧を取得する方法

サンプルプログラム6でクエリ一覧を必要としますので、サイトで検索されているクエリの一覧を出力する手順を説明します。

AOI345.com

こちらは実際に検索されているクエリの情報が欲しいので、Google Search Consoleを使います。


1️⃣ Google Search Consoleのメニューで「検索結果」を押します

検索結果

2️⃣ 検索結果のパフォーマンスの右上の「エクスポート」を押します

エクスポート

3️⃣ ドロップダウンメニューから「Excelとしてダウンロード」を押します

Excelとしてダウンロード

4️⃣ エクセルを開くと「上位のクエリ」と「クリック数、表示回数、CTR、掲載順位」が表示されます
  「上位のクエリ」以外の列を消し、上位のクエリをqueryに変えてCSV形式「query.csv」で保存します。

上位のクエリ
AOI345.com

CSVで出力を選ぶと最初からCSVでダウンロードされるのですが、やってみたら文字化けしたので、エクセルでダウンロードしました。


Search Console API運用時の注意点とエラー対処法まとめ

Google Search Console APIを安定して活用するには、設計時から“落とし穴”に備えることが重要⚠️

APIは非常に便利な反面、制限(クォータ)やエラー対応、通信負荷などの考慮点が存在します。
本番運用でのトラブルを避けるために、以下のようなポイントを押さえておきましょう。

✅ 安定運用に必須の5つのポイント|クォータ・ログ管理・キャッシュ設計

APIにはクォータ制限(QPM=1分あたり、QPD=1日あたり)が設定されているため、アクセス設計時に上限を考慮
エラーコードに応じたハンドリング(リトライやバックオフ)を実装しておくと、APIエラーにも自動で対処できる
キャッシュ処理を活用し、同じリクエストを何度も送らない工夫が必要
分析対象を絞る・時間帯を分散するなどの工夫で、スロットリング(制限発動)を回避
◉ ログを保存し、レスポンス内容やエラー傾向を定期的にチェックする習慣を持つ


APIのクォータ制限の例を以下の表に整理しました👇

スクロールできます
項目制限値(例)対応策
QPM(Queries Per Minute)1,200/サイト呼び出しタイミングを分散
QPD(Queries Per Day)30,000,000/プロジェクトバッチ処理+キャッシュの活用
URL検査API2,000/日(サイト単位)優先URLを絞って検査

バックオフ戦略(指数的待機)を導入することで、瞬間的なアクセス集中によるブロックも回避しやすくなります。
また、「同じクエリを何度も投げる」状態は無駄が多く、クォータの消耗に直結🔻

取得済みデータの保存・活用が、パフォーマンス向上にもつながります。


Google Search Console APIでよくあるエラーと対処法【401・403・429など】

Google Search Console APIを使っていると、時に避けられないのがエラーとの遭遇⚠️
ただし、エラーには必ず原因と対処法があります。焦らず、コードと状況を冷静に確認して対応しましょう。

以下に、よく発生するエラーとその対策を簡潔にまとめました👇

✅✅ エラーコード解説|401, 403, 429の原因と解決策

401エラー(Unauthorized)
→ 認証情報の不備や期限切れが主な原因です。
認証情報ファイル(*.json)が正しく指定されているか、アクセストークンが有効か確認しましょう。

403エラー(Forbidden)
→ Search Console上で対象サイトに対する権限が不足している可能性があります。
→ 使用中のGoogleアカウントが対象プロパティに対して“オーナー”または“フルユーザー”であるか確認してください。

429エラー(Too Many Requests)
→ APIのクォータ制限を超えたことで発生します。
→ リクエストの送信間隔を空ける、指数バックオフ(Exponential Backoff)を実装するなどの対応が有効です。


以下の表に、各エラーの要点を整理しています👇

スクロールできます
エラーコード原因対処方法
401 Unauthorized認証失敗・トークン不備認証情報ファイル(*.json)とトークンの確認・再認証
403 Forbiddenアクセス権限不足Search Console上でのユーザー権限確認・追加
429 Too Many Requestsクォータ超過リクエスト間隔の調整・指数バックオフ導入

エラーは“敵”ではなく、より安全で効率的な運用へのヒント🧠
出力されたメッセージやログはできるだけ保存しておくと、原因究明と再発防止に役立ちます


【まとめ】Search Console APIでSEO業務自動化|できること/導入メリット

Google Search Console APIを使いこなすことで、SEOの運用は従来の手動作業から脱却し、精密かつ自動化されたデータドリブン戦略へと進化します。

APIを活用すれば、検索クエリやURL単位のインデックス状況をスクリプトで定期取得でき、施策の効果測定や順位変動の監視がリアルタイムで可能になります。

特にPythonと組み合わせれば、レポート作成・異常検出・サイトマップ管理まで幅広い業務を自動化でき、限られたリソースでも高精度なSEO運用が実現できます。

これからSEOをさらに強化したい企業や個人にとって、Search Console APIの導入は“必須の武器”になるでしょう。

Google Search Console APIの導入で、ルーティン作業を自動化し効率化
◉ Pythonでの実装も難しくなく、初心者にも扱いやすい
検索パフォーマンスの可視化と改善アクションの最短化に直結
◉ クライアント案件でも活躍し、信頼性の高いデータ提供が可能

🧩 手動運用に限界を感じている方こそ、今こそAPIの力を取り入れるタイミングです!


Search Consoleだけではなく、Google AnalyticsもAPIで利用したい方に🔻

あわせて読みたい
【画像手順】PythonとGoogle Analytics APIでデータ自動取得 Google Analytics API 始め方|GA4データを自動化・分析に活用するには? Google AnalyticsのUIだけでは物足りない…そんなあなたへ。 GA4のデータをもっと自由に扱いた...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA



目次