GoogleのIndexing APIと同じく、Bing検索にもドメインのコンテンツURLを伝えるAPIがあります。
はじめに
Bing Submission APIとは
Microsoftのやっている検索エンジンのBing 自分のサイトのコンテンツどこにあるのかをBingに伝えるAPIです。
APIを実行するとBingがURLを把握します。把握したからといってもクローラーが来てくれる保証があるわけでもなく、Bingで検索可能になるわけでもありません。この辺はレギュレーションはGoogleのIndexingAPIと同じです
必要な準備
BingのAPIを使う場合、Bing Webmaster ツールのアカウントとAPIのキーが必要です。
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