【Python】Bing Search API の使い方|自作アプリや AI に「検索能力」を授ける方法

  • URLをコピーしました!
目次

はじめに

Python で自作アプリを作っているとき、あるいは ChatGPT などの LLM(大規模言語モデル)を使った開発をしているとき、こう思ったことはありませんか?

「プログラムの中から自動で Web 検索をして、最新のニュースや情報を扱いたい」

通常、Python で Web 検索を行おうとすると「スクレイピング」という手法が思い浮かびますが、これはサイトの規約違反になるリスクがあったり、サイト構造が変わるとすぐに動かなくなったりと、運用が非常に大変です。

そこで活躍するのが、Microsoft Azure が提供する 「Bing Web Search API」 です。 これを使えば、わずか数行のコードで、あなたのアプリケーションや AI チャットボットに 「世界中の Web 情報を検索する能力(検索エンジン)」 を実装できます。

本記事では、API キーの取得から Python での実装コードまでを、初心者にも分かりやすく解説します。

この記事でわかること
  • メリット: なぜスクレイピングではなく API を使うべきなのか
  • 準備: Azure 無料アカウントでの API キー取得手順
  • 実践: Python で検索結果(タイトル・要約・URL)を取得するコード

Bing Web Search API でできること

Bing Web Search API は、単に「検索結果の青いリンク(URL)」を返すだけではありません。 開発者にとってありがたいのは、検索結果と一緒に 「スニペット(ページの要約文)」 を取得できる点です。

  • ページタイトル
  • URL
  • スニペット(要約): 検索ワードに関連する、ページ内の重要な抜粋テキスト

AI(RAG)との相性が抜群

この API が熱い視線を浴びている理由の一つとして、ChatGPT などの生成 AI との組み合わせ が考えられます。

生成 AI は「学習データに含まれていない最新の情報」を知りません。 しかし、この API を使って「最新ニュースの検索結果(スニペット)」を取得し、それを AI に読ませることで、「最新情報に基づいて回答できる AI」 を作ることができます。

この技術は RAG(Retrieval-Augmented Generation)と呼ばれ、Bing Search API はそのための「情報の目」として非常に優秀な働きをしてくれます。

実装手順

STEP
準備編: Azure で API キーを取得する

まずは、プログラムから API を利用するための「鍵(API Key)」を取得しましょう。 これには Microsoft Azure のアカウントが必要ですが、無料アカウント で問題ありません。

STEP
リソースの作成

Azure ポータルにログインし、画面上部の検索窓に「Bing」と入力します。検索候補に出てくる「Bing Search」または「マーケットプレイス」からサービスの作成画面へ進みます。

マーケットプレイスの候補から 「Bing Search v7」(または単に Bing Search)を選択します。
※似たような名前のサービスが多いので注意してください。「v7」がついているものが最新のスタンダードです。

STEP
プランの選択

作成画面に進み、必要な情報(サブスクリプションやリソースグループなど)を入力します。 ここで最も重要なのが 「価格レベル(Pricing Tier)」 の選択です。

開発やテスト目的であれば、必ず 「F1(Free)」 インスタンスを選択しましょう。 これを選択すれば、月間 1,000 回まで無料 で利用できます。学習用には十分な回数です。

STEP
キーの取得

デプロイ(作成)が完了したら、「リソースに移動」をクリックします。 左メニューにある 「キーとエンドポイント」 をクリックすると、API キーが表示されます。

「キー1」 (キー2でも可)をコピーして、メモ帳などに保存してください。 これが、次章の Python プログラムで使う「パスワード」になります。

実践編: Python で検索してみよう

API キーが取得できたら、Python でコードを書いてみましょう。 外部ライブラリとして requests を使用しますので、インストールしていない場合は先に実行してください。

pip install requests

サンプルコード

ユーザーが入力したキーワードで検索し、上位の検索結果(タイトル・URL・要約)を表示するプログラムです。

import requests
import json

# 1. APIキーとエンドポイントの設定
# ※ここに先ほど取得した「キー1」を貼り付けてください
SUBSCRIPTION_KEY = 'YOUR_API_KEY_HERE'
ENDPOINT_URL = 'https://api.bing.microsoft.com/v7.0/search'

def search_bing(query):
    # 2. リクエストパラメータの設定
    params = {
        'q': query,           # 検索したいキーワード
        'mkt': 'ja-JP',       # 日本の検索結果を指定(重要!)
        'count': 5            # 取得する検索結果の数
    }
    
    headers = {
        'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY
    }

    # 3. APIへリクエスト送信
    try:
        response = requests.get(ENDPOINT_URL, headers=headers, params=params)
        response.raise_for_status() # エラーがあれば例外を投げる
        return response.json()
    except Exception as e:
        print(f"エラーが発生しました: {e}")
        return None

# --- メイン処理 ---
if __name__ == "__main__":
    # ユーザーに入力を求める
    user_query = input("何を検索しますか?: ")
    
    print(f"\nSearching for '{user_query}'...")
    result_data = search_bing(user_query)

    if result_data and 'webPages' in result_data:
        print(f"\n--- 検索結果 (Top 5) ---\n")
        
        # 結果をループして表示
        for i, item in enumerate(result_data['webPages']['value'], 1):
            print(f"[{i}] {item['name']}")
            print(f"URL: {item['url']}")
            print(f"要約: {item['snippet']}")
            print("-" * 30)
    else:
        print("検索結果が見つかりませんでした。")

コードの解説(重要なパラメータ)

q

検索したいキーワードです。Google 検索と同じようにスペース区切りで複数ワード指定も可能です(例: Python 入門

mkt: 'ja-JP'

【重要】 検索を行う「地域と言語」を指定します。ここを指定しないと、日本語で検索しても英語圏のサイトが上位に来てしまうことがあります。日本向けの情報を取得したい場合は必ず記述しましょう。

count

一度に取得する検索結果の数です。無料枠(F1プラン)でテストする場合は、無駄な消費を抑えるために少なめ(10件以下など)に設定するのがおすすめです。

応用: 取得したデータはどう使う?

検索結果をコンソールに表示するだけでも面白いですが、それだけで終わらせてはもったいないです。 取得したデータ(特に snippeturl)をプログラムで二次利用することで、活用の幅はすごっく広がります。

① AI チャットボットの脳として使う(RAG)

今、個人的に熱い使い方がこれです。 ChatGPT などの LLM(大規模言語モデル)は、学習データが古いため「今日のニュース」を知りません。

そこで、以下のようなフローを作ります。

  1. Bing API: ユーザーの質問で Web 検索し、最新記事の「スニペット(要約)」を取得
  2. Prompt: 「以下の検索結果を参考にして、質問に答えて」という命令文を作成
  3. ChatGPT: プロンプトを投げて回答を生成。

これにより、「最新情報について詳しく教えてくれる AI」 を自作できます。これが、いわゆる RAG(Retrieval-Augmented Generation)の基本形です。

② 競合調査・市場分析の自動化

毎日手動でググっている作業はありませんか? それも自動化できます。

  • 競合監視: クエリに site:competitor-site.com を含めて検索し、新しいページがインデックスされたら Slack に通知する。
  • エゴサーチ: 自社製品名で検索し、ネガティブなキーワードが含まれていないか監視する。

③ トレンド分析・データ収集

特定のキーワード(例:「Python エラー」)で検索し、ヒットした技術ブログの URL を収集して、「よくあるエラー集」のデータベースを作るなど、特定のドメインに特化した情報収集ツールとしても優秀です。

まとめ

本記事では、Bing Web Search API の概要から、Python での実装方法までを紹介しました。

本記事のポイント
  • 簡単: Python 標準の requests だけで実装可能
  • 無料: Azure の F1 プランなら、月 1,000 回まで無料
  • 強力: 検索結果の「要約」が取れるため、AI 開発との相性が抜群

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次