Brave Search API: Official Plans or One Multi-Source Key
Brave runs its own official Search API on its own index, with published prices, a monthly free allowance and a deep parameter set: freshness, country, language, Goggles re-ranking and extra snippets. If Brave is the only engine you need, use it. GET /v1/brave/search is the other option: Brave web results as JSON at 1 credit per query, on the same key and the same MCP server as Google, Bing, DuckDuckGo and the rest of the catalogue, with fewer parameters than Brave's own API.
How do the two options compare?
They overlap on the core job, ranked Brave web results as JSON, and differ on everything around it. Brave's API is first-party: it has every parameter Brave supports, its own rate tiers and an Answers plan for AI-generated responses. The catalogue endpoint trades depth for breadth: fewer Brave parameters, but one key, one billing balance and one response style across 248 websites.
| Brave Search API (official) | /v1/brave/search |
|
|---|---|---|
| Who runs it | Brave, on its own index | Perceptlayer, from publicly available Brave results |
| Price | Per 1,000 requests (see below) | 1 credit per successful query (pricing) |
| Free use | A monthly allowance per plan (see below) | 1,000 free credits a month, no card |
| Payment | Prepaid, card required | Prepaid credit packs, no card for the free tier |
| Query parameter | q, up to 600 characters |
query, up to 500 characters |
| Results per call | count, up to 20 |
Not a parameter; 20 in the recorded call |
| Paging | offset, 0 to 9 |
page |
| Date filter | freshness (pd, pw, pm, py or a range) |
None |
| Country and language | country, search_lang |
language only |
| Re-ranking | Goggles | None |
| Rate | Up to 50 requests a second on Search | 1 a second free, 5 or more on packs |
| Other engines | Brave only | Google, Bing, DuckDuckGo and more on the same key |
| MCP | Brave's own server | One server for the whole catalogue |
Brave's figures come from its pricing page and API reference (Brave Search API pricing and web search reference, 2026). Brave's Search plan is listed at $5 per 1,000 requests, and each plan carries a $5 monthly allowance. Brave also lists Spellcheck and Autosuggest plans, and an Answers plan billed per query plus tokens. Check its page before you budget; Brave's launch-era pricing was different.
What does Brave's official API do better?
Filtering and scale. Brave's web search takes freshness with past day, week, month, year or a custom date range, so "news about X this week" is one parameter. country and search_lang target a market; extra_snippets returns up to five additional excerpts per result, which helps retrieval for AI answers; and Goggles let you re-rank results with your own rules. None of these exist on /v1/brave/search.
It also scales further on one engine. The Search plan allows up to 50 requests a second. Brave describes its index as independent, built by its own crawler, and its documentation for AI use (Answers, extra snippets) is first-party. If your product is built on Brave results, you'll want that relationship, its attribution terms and its support.
Verdict for Brave-only products, recency-sensitive search, market targeting and high throughput: Brave's own API.
When does one multi-source key fit better?
When Brave is one engine among several. Search results differ by engine, and the Bing Search API alternative guide shows a recorded query where the Bing and Brave top results did not overlap. If you compare engines, fall back from one to another, or let an agent pick, you'd otherwise hold a Brave key, a Google results provider, a Bing replacement and separate bills.
On one key, those are paths on the same API. /v1/brave/search, /v1/duckduckgo/search, /v1/bing/search and /v1/google-search/search cost 1 credit each and draw on one prepaid balance. Errors share one format, and every response reports X-Credits-Used and X-Credits-Remaining. Agents get one MCP server whose free search_endpoints tool finds the right engine, instead of one MCP server per engine.
Verdict for multi-engine comparison, fallbacks, SEO checks across engines and agents that need search plus other web data: the multi-source key. If you only need Brave and none of its filters, either works; compare what credits cost on the pricing page with Brave's rate.
How do you call /v1/brave/search?
Send query. The request below is the exact one behind the recorded response. Put your key in the X-API-Key header; keys start with sk_live_, and the authentication docs cover the rest.
curl "https://api.perceptlayer.com/v1/brave/search?query=best+web+scraping+api" \
-H "X-API-Key: $API_KEY"
The endpoint takes five parameters. Types and allowed values come from the endpoint definition; nothing else, such as page size, is documented.
| Parameter | Type | Allowed values or notes |
|---|---|---|
query |
string, required | Up to 500 characters |
language |
string | english, deutsch, french, spanish, italian, portuguese, dutch, russian, chinese, japanese, arabic, all, or the codes en, de, fr, es, it, pt, nl, ru, zh, ja, ar |
page |
integer | Page number |
include_html |
boolean | |
q |
string | Optional; query is the required one |
language takes both names and two-letter codes, so language=de and language=deutsch both pass validation; pick one form and keep it.
What does the response look like?
The recorded response has search_information, organic_results, related_searches and related_questions, then counts and the engine used. Here is an excerpt, trimmed with …; the organic results, which name commercial products, are cut:
{
"search_information": {
"query_displayed": "best web scraping api"
},
"organic_results": [
…
],
"related_searches": [
{
"query": "data scraping tools chrome extension",
"link": "https://search.brave.com/search?q=data%20scraping%20tools%20chrome%20extension&source=relatedQueries"
},
…
],
"related_questions": [
…
],
"results_count": 20,
"engine_used": "brave",
"source": "brave",
"service_used": "brave"
}
Each organic result in the recording carries position, title, link, redirect_link, displayed_link, snippet and source. Snippets can start with a relative age such as "2 weeks ago -", as found on the page, so strip it before you index text. related_questions entries carry a question, an answer, a link and a title: the answer is text from the linked page, not a verified fact, so treat it as a claim with a source.
What does each option cost for common jobs?
On the catalogue endpoint, every successful query costs 1 credit and failed calls cost nothing, returning X-Credits-Used: 0. The credits docs explain billing. Brave's own rate is per 1,000 requests; compare its pricing page with ours rather than trusting a converted figure here, since both change.
| Job | Queries a month | /v1/brave/search credits |
|---|---|---|
| Prototype an agent | 1,000 | 1,000 (the free monthly credits) |
| 100 keywords daily, one engine | 3,000 | 3,000 |
| 100 keywords daily on Brave, Google and Bing | 9,000 | 9,000 |
| 1,000 agent questions, 2 searches each | 2,000 | 2,000 |
Worked example: tracking 100 keywords daily on three engines is 100 × 3 × 30 = 9,000 queries at 1 credit each, so 9,000 credits a month, inside a Starter pack of 10,000 credits. Purchased credits last 12 months, and all engines draw on the same balance. The rate limits docs list the request rates that come with each pack.
Can an AI agent use Brave search through MCP?
Both options have an MCP route. Brave publishes its own MCP server for its API. Perceptlayer's server at https://api.perceptlayer.com/mcp exposes three tools for the whole catalogue: search_endpoints and get_endpoint are free lookups, and call_endpoint runs brave.search or any other endpoint, spending credits only on success.
The difference is how many servers the agent carries. With one server per engine, each adds its own tool definitions to the model's context. With one catalogue server, the agent searches for the engine it needs; our post on MCP servers with too many tools explains why that keeps context small. Setup is in the AI agents docs, and errors come back with codes from the errors docs.
To try the endpoint, get a free API key and run a query in the playground on the Brave API page. Data is collected from publicly available sources and returned as found at the time of the call.
APIs in this post
Frequently asked questions
Does Brave have an official search API?
Yes. Brave runs the Brave Search API on its own independent index, with a Search plan listed at $5 per 1,000 requests, a $5 monthly allowance per plan, and plans for Answers, Spellcheck and Autosuggest. It needs a card even for the free allowance. Its web search takes freshness, country, language and Goggles parameters.
When should I use Brave's own API instead?
When Brave is the only engine you need, or you need its filters: freshness for date ranges, country and search_lang for market targeting, Goggles for re-ranking, extra snippets for AI retrieval, or up to 50 requests a second. /v1/brave/search has none of those, only query, language, page and include_html.
How much does /v1/brave/search cost?
1 credit per successful query, and failed calls cost nothing. Every account gets 1,000 free credits a month after verifying an email address, with no card. Prepaid packs start at 10,000 credits and are shared across every endpoint, including Google, Bing and DuckDuckGo search. The pricing page has what credits cost.
Can I filter Brave results by date with /v1/brave/search?
No. The endpoint takes query, language, page, include_html and an optional q, with no date or country filter. For date filtering on Brave results, Brave's own API has freshness. On the same key, DuckDuckGo's endpoint takes a df filter for the past day, week, month or year.
What happens if a Brave query fails?
You get an HTTP status and a JSON error with a code, message and request_id, and nothing is debited. A missing query or a language outside the allowed values returns invalid_parameters (422). Rate-limited (429) and temporarily unavailable (503) responses carry Retry-After with the seconds to wait.