Brave Search API Now Charges AI Agents $0.005 a Query in USDC, No API Key
On this page 6 sections
TL;DR
Brave removed the signup form from its Search API. A dedicated endpoint, search.agent.s.brave.app, now sells queries to any HTTP client that can hold a wallet: no account, no API key, no plan selection. An unpaid request returns HTTP 402 with a price quote in a header, the client signs $0.005 in USDC on the Base network, retries, and gets results plus an on-chain receipt. If you ship an API, study this front door. The buyer of record is a wallet.
What shipped on November 12
Brave's announcement adds pay-as-you-go billing to the Brave Search API over x402, the open standard for per-request payments on HTTP. The paid surface covers web search, news, images, video, place search and LLM Context, an endpoint that returns page text formatted for a prompt. Every one of them costs $0.005 per request, or $5 per 1,000. Answers, Autosuggest and Spellcheck still need a conventional API key.
Brave runs its own facilitator, the service that verifies and settles each payment, and today it accepts USDC on the Base blockchain only, with other networks and stablecoins promised soon. Base gas fees are covered "for a limited time". Two files do the machine-facing sales work: openapi.json lists every paid path with its price, and a llms.txt briefs agent clients on prices, payment rails and the retry loop before they spend anything.
The 402 loop
x402 behaves like a vending machine: tug the door, it quotes a price, insert coins, tug again. Formally, the client requests without paying, the server answers 402 Payment Required with the price, the payee and the accepted assets, the client signs a payment and retries with proof attached, and the resource returns once the facilitator verifies and settles. The HTTP spec has reserved 402 for future use since 1999. The future finally sent an invoice.
The quick path is purl, a curl-style CLI wallet Stripe develops in Rust under MIT. Brave's docs use it for their one-liner, with a $0.01 spend cap written in USDC's six-decimal base units:
purl --max-amount 10000 'https://search.agent.s.brave.app/res/v1/llm/context?q=tallest+mountains+in+the+world'
purl refuses to follow a redirect that would move a payment to a different origin, which is the right paranoia for a tool that spends money without a confirmation dialog. There is also --dry-run to preview a payment and inspect to read a resource's terms without paying.
What the refusal bytes say
An x402 operator publishing as minia2a probed the endpoint hours after launch and posted the raw answer, calling Brave the first major independent search provider to sell per call on the protocol. The body is empty, content-length zero. The whole quote rides in one PAYMENT-REQUIRED header: 1,280 bytes of base64 wrapping 960 bytes of JSON. Decoded, it declares x402Version: 2, network eip155:8453 (Base), an amount of 5000 base units, which is $0.005 at USDC's six decimals, a 300-second payment timeout and EIP-3009 as the transfer method. It parses clean against the published schema in @x402/core 2.28.0, zero issues, same verdict as the author's own endpoint.
Two implementation notes fall out of the same probe. The header is the carrier and the body is a courtesy some sellers provide, so a client that reads only the body gets nothing from Brave. And base64 inflates by a third, so a challenge that outgrows a reverse proxy's header buffer looks identical to a malformed one. Measure the encoded size, not the JSON size.
Why builders should care
The draw is distribution. The classic API funnel runs landing page, signup, plan selection, key management, billing alerts. This funnel is a URL with a price in it. An agent that discovers the endpoint can evaluate it for cents, mid-task, with no procurement step anywhere, and Brave equips it for exactly that: llms.txt for the pitch, openapi.json for the price feed, a 402 that is itself machine-readable terms.
The rails now have two large companies behind them. Coinbase documents x402 across its developer platform, and Stripe ships seller documentation for it alongside purl. Two rival payment processors backing the same handshake makes the client ecosystem a safer bet.
The caveats are just as concrete. Settlement is USDC on Base only, so you custody a hot wallet, and key management becomes part of your incident response. Every paid request adds a settlement dependency, and your retry logic has to tell an index hiccup from a facilitator hiccup. The challenge is the authoritative price: if the marketing page and the bytes drift apart, the client obeys the bytes, so generate both from the same source.
Key Takeaways
- The Brave Search API now sells queries at search.agent.s.brave.app with no account and no API key: $0.005 per request in USDC on Base, $5 per 1,000, across web, news, image, video, place and LLM Context endpoints.
- The payment loop is a plain HTTP dance: a 402 quotes price and payee in a header, the client signs and retries, the facilitator verifies and settles, and results arrive with an on-chain receipt.
- Brave runs its own facilitator and publishes machine-readable pricing through openapi.json and llms.txt, so an agent can discover, price and call the API without a human in the loop.
- Stripe's purl CLI wallet is the fastest client: brew install stripe/purl/purl, cap spend with --max-amount, preview a payment with --dry-run.
- An independent probe found the 402 challenge schema-valid against x402 core 2.28.0: a lean 960-byte document, everything in the header, empty body.
- The costs of this model: hot-wallet custody, one more failure mode per request at the facilitator, and a price source you must keep in sync with the endpoint.
Sources: Brave announcement, Brave agent-payments docs, Coinbase x402 docs, Stripe x402 docs, stripe/purl, minia2a 402 teardown