Bing Search API

この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
atom
  • xml.aspx
  • json.aspx
詳細 - Bing Search API | Microsoft Azure Marketplace

たとえばウェブ検索で、レスポンスを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で情報を取得する方法

検索結果はRSSでも取得できます。この方法はBing Search APIとは無関係なため、検索回数に制約を受けない利点があります。

https://www.bing.com/search?q=keyword&format=RSS

Bingニュース

リクエストで指定するパラメータについては、Bing ニュースのページのRSSアイコンのリンクから調べることができます。たとえばキーワードを指定して結果をRSSで取得するには、

https://www.bing.com/news/search?q=keyword&format=RSS&mkt=ja-JP

のようなURLをリクエストします。

Bing画像

検索はできませんが、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
format フォーマット
mkt 地域
idx 開始位置
n 表示数

参考

旧API

Bing API v2

Bing API v2でのリクエスト先は、http://api.bing.netです。

Live Search API

リクエスト先は、http://api.search.live.netです。

複数の技術系サイトから、まとめて検索