Brave APIキーを使用すると、Braveの独立したウェブインデックスにプログラムでアクセスできます。これは、Brave Searchがブラウザで提供するのと同じ検索結果をJSON形式で受け取り、スクリプト、ダッシュボード、またはAIエージェントにフィードできます。Brave Search APIは、エージェントにライブウェブアクセスを提供するための一般的な選択肢となっています。もしそれが最終目標であれば、Brave Search MCPサーバーガイドで、キーがClaudeや他のMCPクライアントにどのように組み込まれるか説明されています。この記事では、その前段階として、アカウントの作成、プランの選択、キーの生成、そしてcurl、Python、およびApidogを使った実際のクエリの送信について説明します。
以下の内容はすべて、2026年9月時点のBrave自身のダッシュボードドキュメントに基づいています。価格と制限は変更される可能性があるため、これらの数値はスナップショットとして扱い、予算を組む前にリンクされたページを確認してください。
始める前に必要なもの
- ダッシュボードアカウント用のメールアドレス。
- クレジットカード。Braveは、無料クレジットティアを含むすべてのプランで、不正防止チェックとしてクレジットカードを要求します。プランページのFAQには、無料プランの場合、カードは身元確認のみに使用されると記載されています。
- コマンドラインの例には、curl、または
requestsパッケージがインストールされたPython 3。 - Apidog(キーを安全に保存し、リクエストを繰り返し可能なテストに変えたい場合)。最初の呼び出しにはオプションです。
ステップ1:Brave Search APIアカウントを作成する
Brave Search APIダッシュボードにアクセスし、メールアドレスとパスワードで登録します。Braveから確認リンクが送信されますので、クリックしてアドレスを認証してください。認証するまでプランを有効にできません。
このダッシュボードは、BraveブラウザやBrave Rewardsのログインとは別であるため、既存のブラウザアカウントは引き継がれません。新規に登録してください。
ステップ2:プランを選択する(無料ティアには一つ注意点があります)
ダッシュボードでプランページを開きます。2026年9月現在、Braveの価格ページには以下のオプションが記載されています。
| プラン | 価格 | 無料クレジット | レート制限 |
|---|---|---|---|
| Search | 1,000リクエストあたり$5.00 | 毎月$5分のクレジット | 1秒あたり50リクエスト |
| Answers | 1,000クエリあたり$4.00、プラス1,000,000入力トークンあたり$5.00、1,000,000出力トークンあたり$5.00 | 毎月$5分のクレジット | 1秒あたり2リクエスト |
| Spellcheck | 10,000リクエストあたり$5.00 | 毎月$5分のクレジット | 1秒あたり100リクエスト |
| Autosuggest | 10,000リクエストあたり$5.00 | 毎月$5分のクレジット | 1秒あたり100リクエスト |
| Enterprise | カスタム | 営業担当者に問い合わせ | カスタム |
ウェブ検索には「Search」を選択してください。毎月$5のクレジットは、おおよそ1,000回のウェブ検索リクエストを無料でカバーし、開発や小規模なエージェントのワークロードには十分です。請求はプリペイド方式です。前払いでクレジットを購入し、月間の無料クレジットが自動的に適用されます。
注意点として、クレジットカードが必要です。無料クレジットを含むいかなるプランも、クレジットカードを入力せずに有効化することはできません。以前のガイドで、固定の月間クエリ割り当てがあるカード不要の無料プランについて言及されているのを見たことがある場合、それらはBraveの以前の料金体系について説明しています。新しいアカウントは上記のクレジットモデルを使用します。
プランを選択し、カード情報を入力してください。プランはすぐにダッシュボードにアクティブとして表示されます。
ステップ3:APIキーを作成する
プランがアクティブになったら、「API Keys」セクションを開き、「Add API Key」をクリックして、キーにわかりやすい名前を付けます。Braveのクイックスタートでは、「Production App」や「Development」のような名前が提案されています。環境ごとに1つのキーを持つことで、後で他のキーに影響を与えることなく特定のキーを取り消す必要がある場合に役立ちます。
キーをコピーし、すぐに安全な場所に保管してください。Braveの認証ガイドでは、キーが置いてはいけない場所について明確に述べています。クライアントサイドのコード、公開リポジトリ、またはその他公開されている場所です。これらのクレデンシャルがどのように機能するかに慣れていない場合は、APIキーとは何かという入門書で、そのモデルを数分で理解できます。
ステップ4:最初の検索リクエストを送信する
ウェブ検索のエンドポイントはhttps://api.search.brave.com/res/v1/web/searchです。すべてのリクエストには、X-Subscription-Tokenヘッダーにキーが必要です。ヘッダー名に注意してください。これはAuthorization: Bearerではありません。その方法でキーを送信すると失敗します。
curl
curl "https://api.search.brave.com/res/v1/web/search?q=openapi+3.1+breaking+changes&count=5&freshness=py" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip" \
-H "X-Subscription-Token: $BRAVE_API_KEY"
countはページごとの結果数を制限し(最大20、デフォルト20)、offsetはページを移動し(0ベース、最大9)、freshnessは期間でフィルタリングします(pd、pw、pm、pyはそれぞれ過去1日、1週間、1ヶ月、1年)。その他の便利なパラメータには、country(2文字コード)、search_lang、safesearch(off、moderate、strict。moderateがデフォルト)があります。
Python
import os
import requests
url = "https://api.search.brave.com/res/v1/web/search"
headers = {
"Accept": "application/json",
"Accept-Encoding": "gzip",
"X-Subscription-Token": os.environ["BRAVE_API_KEY"],
}
params = {"q": "openapi 3.1 breaking changes", "count": 5, "freshness": "py"}
resp = requests.get(url, headers=headers, params=params, timeout=10)
resp.raise_for_status()
data = resp.json()
for hit in data["web"]["results"]:
print(hit["title"])
print(hit["url"])
print(hit["description"][:120], "\n")
レスポンスには、queryオブジェクト(originalとページネーション用のmore_results_availableブール値を含む)とweb.results配列が含まれています。各結果にはtitle、url、descriptionがあります。extra_snippets=trueを設定すると、結果ごとに最大5つの追加抜粋が得られ、モデルのコンテキストを構築する際に役立ちます。
BraveはAPIを、オプションのApi-VersionヘッダーをYYYY-MM-DD形式で指定することでバージョン管理しています。これを省略すると最新バージョンが取得されます。統合が本番環境になったらこれを固定することで、将来の互換性のない変更が意図せずに適用されることを防ぎます。
ステップ5:Apidogでキーをテストする
curlのワンライナーにキーを貼り付けるのは、最初のヒットには問題ありません。しかし、それをそこに放置するのは良くありません。Apidogでは、キーを一度変数として保存し、どこでも参照できるようにし、秘密自体は共有プロジェクトから分離します。
- Apidogプロジェクトの右上にある環境管理を開き、
Braveという名前の環境を追加します。brave_api_keyという名前の変数を作成し、共有値ではなくローカル値フィールドに実際のキーを配置します。ローカル値はあなたのマシンに残り、チームメイトに同期されることはありません。変数のリファレンスは2値モデルを説明し、Apidogにおける環境と秘密変数の完全なワークフローは、複数の環境が必要な場合に開発、ステージング、本番のレイアウトをカバーします。 https://api.search.brave.com/res/v1/web/searchへの新しいGETリクエストを作成します。Headersタブで、値{{brave_api_key}}を持つX-Subscription-Tokenを追加します。Paramsでq、count、freshnessを追加します。- 「Send」をクリックします。レスポンスペインにはJSONボディが表示され、ヘッダーペインには
X-RateLimit-RemainingとX-RateLimit-Resetが表示されるため、何も出力せずにクォータを監視できます。 - アサーションを追加します。ステータスコードが200であること、
$.web.resultsが存在し少なくとも1つの要素を持つこと、$.query.originalが送信したクエリと一致すること。リクエストをテストシナリオに保存します。これで、キーのローテーションやBrave側の変更があった場合、午前2時にエージェントが壊れる代わりに、赤色の実行として表示されます。
手順に従ってApidogをダウンロードしてください。無料プランでは4ユーザーまで対応し、環境とテストシナリオが含まれています。
レート制限とBraveによる報告方法
すべてのレスポンスには、Braveのレート制限ガイドに記載されている4つのヘッダーが含まれています。
X-RateLimit-Limit: プランに設定された制限。例:1, 15000。X-RateLimit-Policy: 同じ制限と秒単位のウィンドウサイズ。例:1;w=1, 15000;w=2592000(1秒ウィンドウと30日ウィンドウ)。X-RateLimit-Remaining: 各ウィンドウに残っている数。X-RateLimit-Reset: 各ウィンドウがリセットされるまでの秒数。
予算を立てる上で重要な詳細が2つあります。まず、ガイドによると、成功したエラーでないレスポンスのみがクォータに計上されるため、タイプミスによる422エラーのバーストがクレジットを消費することはありません。次に、これらのヘッダーの例にある1秒あたりの数値(1リクエスト/秒)はドキュメントの例示であり、Searchプランで宣伝されている50リクエスト/秒ではありません。仮定せずに、自身のヘッダーを読み取ってください。
よくあるエラーとその対処法
新規キーでの認証失敗。 Braveの認証ガイドでは、すべてのリクエストがX-Subscription-Tokenを携行する必要があり、値が欠落しているか無効な場合は拒否されると述べています。これは通常、トークン無効のエラーコードを伴うHTTP 401として現れますが、BraveのAPIリファレンスにはそのステータスが明記されていません。次の3点を確認してください。ヘッダー名が正確であること(Authorizationではないこと)、キーが末尾の空白なしでコピーされていること、アカウントでプランがアクティブであること。このスキームがベアラ認証と異なる理由が不明な場合は、APIキーとベアラトークンの違いを参照してください。
422 Unprocessable Entity。 パラメータが範囲外または不正な形式です。countが20を超える、offsetが9を超える、認識されないfreshness値、または空のqなどです。ボディはBraveのエラースキーマに従います。
{
"type": "ErrorResponse",
"error": {
"id": "<unique occurrence id>",
"status": 422,
"code": "<application error code>",
"detail": "<what went wrong>",
"meta": {}
},
"time": 0
}
error.detailを読んでください。どのフィールドに問題があったかを示しています。
429 Too Many Requests。 1秒あたりのウィンドウ制限に達したか、クレジットが不足しています。BraveはRATE_LIMITEDとQUOTA_LIMITEDの両方をエラーコードとして文書化しているため、どちらのエラーを受け取ったか確認してください。X-RateLimit-Resetの秒数だけ待機し、指数バックオフで再試行する(Braveは1秒、2秒、4秒を推奨)ことで前者は修正されますが、後者はクレジットをチャージするか、月次リセットを待つしかありません。
よくある質問
Brave Search APIは無料ですか?
一部は無料です。すべてのプランには毎月$5分のクレジットが付与され、これは約1,000回の検索リクエストに相当します。それを超えると、1,000リクエストあたり$5.00の料金が発生します。クレジットを超過しない場合でも、クレジットカードなしでプランを有効化する方法はありません。
ウェブ検索とLLMコンテキストエンドポイントには別々のキーが必要ですか?
BraveのAPIリファレンスでは、トークンは「プロダクト用」に生成されると記述されており、キーが作成されたサブスクリプションに紐付けられていることを示唆しています。/web/searchで動作するキーが/llm/contextやAnswersエンドポイントで失敗する場合、キーが壊れていると仮定する前に、ダッシュボードでそのキーがどのプランに属しているか確認してください。
Brave APIキーが漏洩したらどうなりますか?
API Keysセクションでキーを取り消し、代替キーを生成し、Apidogの変数を更新することで、保存されているすべてのリクエストがすぐに新しい値を使用するようにします。次に、どのように漏洩したかを特定してください。リポジトリやCIログ全体で漏洩したAPIキーのシークレットスキャナーを実行することが、他に何も露出していないことを確認する最速の方法です。
コードを書かずにクエリを試すことはできますか?
はい、できます。ダッシュボードにはアドホッククエリ用のプレイグラウンドページがあり、Apidogのリクエストビルダーも同様の機能を提供します。Apidogでは、リクエストが保存され、後でテスト可能になるという追加の利点があります。
次のステップ
これで、アカウント、アクティブなプラン、命名されたキー、そして3つのクライアントから実際の結果を返すリクエストが準備できました。ここから、MCPサーバーを通じてキーをエージェントに組み込むか、Apidogのテストシナリオを構築して、キーのローテーションやクォータの枯渇がユーザーが気づく前に検出されるようにします。どちらも、今日設定したX-Subscription-Tokenヘッダーから始まります。
