INDEXING TODAY

Googleのインデックスにお困りなら

Bing Submission APIのサンプルをPHPで実装する

GoogleのIndexing APIと同じく、Bing検索にもドメインのコンテンツURLを伝えるAPIがあります。

はじめに

Bing Submission APIとは

Microsoftのやっている検索エンジンのBing 自分のサイトのコンテンツどこにあるのかをBingに伝えるAPIです。

APIを実行するとBingがURLを把握します。把握したからといってもクローラーが来てくれる保証があるわけでもなく、Bingで検索可能になるわけでもありません。この辺はレギュレーションはGoogleのIndexingAPIと同じです

必要な準備

BingのAPIを使う場合、Bing Webmaster ツールのアカウントAPIのキーが必要です。

www.bing.com

Webmasterツールのアカウントを作ったうえで、APIキーを発行する必要があります。

プログラム

Bing APIを実行するプログラムのサンプルです。今回もPHPです。

BingはSDK(専用のライブラリ)が無いので、PHPでHTTPアクセスをするプログラムを書けば実行できます。 PHPのHTTPクライアントであるGuzzleを使っていますが、必須ではありません。純PHPだけで書き換えることはできます。

コード

コメント含みで40行程度です。

<?php
require_once './vendor/autoload.php';

// 1回の実行URL
const BATCH_SIZE = 2;//500;
const END_POINT_PUBLISH = 'https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch';

// Submission APIのAPIキー
$apiKey = '';
// Submission APIのサイトのドメイン
$siteUrl = 'https://example.com';
// 対象のURL
$urlList = ['https://example.com/','https://example.com/1','https://example.com/2'];

// HTTPクライアント
// debug=trueにすると通信ログが確認できる。
$options = ['http_errors' => false, 'debug' => true, 'verify'=>false, ];
$guzzle = new GuzzleHttp\Client($options);

//URLの配列を1回のAPI送信量に分割(最大500)
$chunks = array_chunk($urlList, BATCH_SIZE);

foreach($chunks as $batchNo=>$batchUrls){
    echo "--- batch no {$batchNo} / size = " . count($batchUrls) .PHP_EOL;

    $parameter = [];
    $parameter["siteUrl"] = $siteUrl;
    // URLの配列をそのままパラメータにセットする
    $parameter["urlList"] = $batchUrls;
    
    // Bing API は post で送信
    $bingApi = END_POINT_PUBLISH . '?' . "apikey=$apiKey";
    $response = $guzzle->post($bingApi, ['json'=>$parameter]);

    $code = $response->getStatusCode();
    $body = $response->getBody()->getContents();

    echo "response code = $code " . PHP_EOL;
    echo "response body = $body " . PHP_EOL;
}

Gitにも置いてあります。
https://github.com/kanaxx/indexing-api-sample/blob/main/bing_batch_execution.php

よくあるエラー

Submission APIを実行すると発生するエラーです。

InvalidApiKey

APIキーが誤っているときに発生します。プログラム側に記載したAPIキーが誤っていないか確認してください。

HTTP/1.1 400 Error

{"ErrorCode":3,"Message":"ERROR!!! InvalidApiKey"}

Quota remaining for today: 1, Submitted: 2

リクエストの1日の上限を超えてしまったときに発生します。

HTTP/1.1 400 Error

 {"ErrorCode":2,"Message":"ERROR!!! Quota remaining for today: 1, Submitted: 2"}

エラーメッセージを読むと、「本日の残りが1、送信したURLが2」という意味ですね。 やれることはないので、カウンターがリセットされるまで待ちましょう。

リクエスト数のリセットのタイミングは、UTCの0時です。日本時間のAM9時です。

関連URL

https://www.bing.com/webmasters/url-submission-api#APIs

https://www.bing.com/webmasters/help/url-submission-62f2860b

https://learn.microsoft.com/en-us/dotnet/api/microsoft.bing.webmaster.api.interfaces.iwebmasterapi.submiturlbatch?view=bing-webmaster-dotnet