Sign up on the Brave Search API page, choose a plan and create a key in the API dashboard. Send it in the X-Subscription-Token header to https://api.search.brave.com/res/v1/web/search with your query in the q parameter. As of October 2026, Search costs $5 per 1,000 requests and includes $5 of free credit each month.
| Search | Answers | Enterprise | |
|---|---|---|---|
| Price | $5 per 1,000 requests | $4 per 1,000 requests plus $5 per million input/output tokens | Contact Brave |
| Free credit | $5 every month | $5 every month | Not listed |
| Rate limit | 50 queries per second | 2 queries per second | Not listed |
Updated
Build a request below: type a query, choose how many results and the safe search level, and copy a curl command or a fetch snippet. The key field is never filled in for you; paste your own in place of the placeholder on your server.
Search query: best bakery website ideas. Results (1 to 20): 10. Safe search: Moderate (default).
curl "https://api.search.brave.com/res/v1/web/search?q=best+bakery+website+ideas&count=10&safesearch=moderate" \
-H "X-Subscription-Token: <YOUR_API_KEY>"const res = await fetch("https://api.search.brave.com/res/v1/web/search?q=best+bakery+website+ideas&count=10&safesearch=moderate", {
headers: { "X-Subscription-Token": process.env.BRAVE_SEARCH_API_KEY },
});
const data = await res.json();
console.log(data.web.results);Requests per month: 3000
About $10.00 after the monthly free credit, at the October 2026 rate.
A small function an agent can call. It keeps the key on the server and returns only what the agent needs.
Register this with your agent framework as a tool that takes a query string.
export async function webSearch(query) {
const url = new URL("https://api.search.brave.com/res/v1/web/search");
url.searchParams.set("q", query);
url.searchParams.set("count", "5");
const res = await fetch(url, {
headers: { "X-Subscription-Token": process.env.BRAVE_SEARCH_API_KEY },
});
if (!res.ok) throw new Error("Search failed: " + res.status);
const data = await res.json();
return (data.web?.results ?? []).map((r) => ({
title: r.title,
url: r.url,
description: r.description,
}));
}
Web search lives at /res/v1/web/search. Images, videos and news have their own paths under /res/v1/, and an LLM context endpoint at /res/v1/llm/context returns text shaped for language models.
All of them use the same key and header, so one key covers each endpoint your plan includes.
Not unlimited. As of October 2026, the Search plan bills $5 per 1,000 requests and includes $5 in free credits every month, so light use can cost nothing.
X-Subscription-Token. Brave's examples send it as a request header on every call; there is no key in the URL.
Yes. Wrap the request in a function your agent framework can call, return the titles, links and descriptions, and let the agent pick what to read. Brave also offers an LLM context endpoint built for this.
Answers returns written answers instead of a list of links. It is priced per 1,000 requests plus per million tokens and has a lower rate limit of 2 queries per second.
You should not, because visitors could read the key in the page code. Call it from your server or a serverless function and send only the results to the browser.
Related: What is an API key, Build an AI agent, What is an MCP server, Webhook vs API.
Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.
We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.