このAPIは2016/12/15に廃止されるため、新しいAPIであるBing Web Search API (Bing API v5) - Cognitive Servicesを利用します。Bing Search API | Microsoft Azure Marketplace
APIでリクエストするURLのルートは、
https://api.datamarket.azure.com/Bing/Search/v1/
です。
検索対象の指定は、リクエストするURLの末尾に文字列を付加することで行います。
対象 | URLに付加する文字列 |
---|---|
ウェブ | Web |
画像 | Image |
動画 | Video |
ニュース | News |
たとえばウェブを対象とするならば、
https://api.datamarket.azure.com/Bing/Search/v1/Web
とします。
検索条件を指定するオプションには、次のようなものがあります。
パラメータ | 説明 | 既定値 | Bing Search API 2.0での表記 |
---|---|---|---|
Query | 検索キーワード
アポストロフィ (') で囲み、URLエンコード (パーセントエンコード) する |
||
$top | 結果の数 (上限は50) | 50 | count |
$skip | 結果を要求するときのオフセット | 0 | offset |
$format | レスポンスの書式
|
atom |
|
たとえばウェブ検索で、レスポンスをJSON、キーワードを「sushi」とするには、
https://api.datamarket.azure.com/Bing/Search/v1/Web?$format=json&Query=%27sushi%27
とします。またQueryにはBing検索の演算子を用いられ「sushi site:example.com」のような指定も可能です。
ブラウザからAPIのURLへリクエストするとユーザー名とパスワードを要求されますが、ユーザー名は省略しパスワードにアカウントキーを指定すれば、レスポンスを得られます。
APIの利用は1月あたり5000トランザクション (5000ページ分のリクエスト) に制限されており、それを越えて利用するには料金の支払が必要です。Bing Search API | Microsoft Azure Marketplace
キーワードをWeb検索し、結果をJSONで出力します。アカウントの認証にはBasic認証を使用します。
<?php $query = 'sushi'; $accountKey = '***'; // この値に、取得したアカウントキーを設定する $ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/v1/'; $context = stream_context_create( array( 'http'=>array( 'request_fulluri'=>TRUE, 'header' =>'Authorization: Basic '.base64_encode( $accountKey.':'.$accountKey ) ) ) ); $request = $ServiceRootURL.'Web?$format=json&Query='.urlencode( '\''.$query.'\'' ); $response = file_get_contents( $request, FALSE, $context ); header( 'Content-Type: application/json' ); echo $response;Using the API with PHP - Migrating Bing Search API Applications
{ "d" : { "results" : [ { "__metadata" : { "uri" : "https://api.datamarket.azure.com/Data.ashx/Bing/Search/Web?Query=\u0027sushi\u0027&$skip=0&$top=1", "type" : "WebResult" }, "ID" : "83c09671-0837-4690-ab74-26ab72355253", "Title" : "Sushi - Wikipedia, the free encyclopedia", "Description" : "Sushi (すし, 寿司, 鮨, 鮓, 寿斗, 寿し, 壽司 ?) is a Japanese food consisting of cooked vinegared rice (shari) combined with other ingredients (neta), usually raw fish or other seafood. Neta and forms of sushi presentation vary, but the ingredient which all sushi have in common is vinegared rice called sushi-meshi ...", "DisplayUrl" : "en.wikipedia.org/wiki/Sushi", "Url" : "https://en.wikipedia.org/wiki/Sushi" }, ... { "__metadata" : { "uri" : "https://api.datamarket.azure.com/Data.ashx/Bing/Search/Web?Query=\u0027sushi\u0027&$skip=49&$top=1", "type" : "WebResult" }, "ID" : "24988f6f-8578-455f-9ebe-1850412f9eb8", "Title" : "元気寿司グループ | 寿司の未来を切り拓く最先端企業", "Description" : "栃木県宇都宮市。回転寿司の直営・FCチェーン運営。企業・IR情報、店舗紹介。", "DisplayUrl" : "www.genkisushi.co.jp", "Url" : "http://www.genkisushi.co.jp/" } ], "__next" : "https://api.datamarket.azure.com/Data.ashx/Bing/Search/Web?Query=\u0027sushi\u0027&$skip=50" } }
なおWindows Azure Marketplaceで使用権を取得していない状態でリクエストすると、403 Forbiddenが返されます。
検索結果はRSSでも取得できます。この方法はBing Search APIとは無関係なため、検索回数に制約を受けない利点があります。
https://www.bing.com/search?q=keyword&format=RSS
リクエストで指定するパラメータについては、Bing ニュースのページのRSSアイコンのリンクから調べることができます。たとえばキーワードを指定して結果をRSSで取得するには、
https://www.bing.com/news/search?q=keyword&format=RSS&mkt=ja-JP
のようなURLをリクエストします。
検索はできませんが、Bing ホームページ画像アーカイブ (Bing's Homepage Images Archive) の画像の情報を得られます。Is there a way to get Bing's photo of the day? - Stack Overflow
https://www.bing.com/HPImageArchive.aspx?format=rss&mkt=ja-JP&n=1&idx=0
Bing API v2でのリクエスト先は、http://api.bing.net
です。
リクエスト先は、http://api.search.live.net
です。