Search
Brave Search Scraper
search.brave.com
Brave Search answers from its own index rather than Google's or Bing's, so its rankings are a separate view of the web and worth tracking next to both. A dedicated plugin endpoint takes a keyword and returns the results already parsed: about 20 organic results per page with position, title, URL, displayed URL, domain and description, Brave's ads in top and bottom lists, and related searches. Brave picks the result region from where the searcher is, not from a URL parameter, so every page is rendered in a real browser through an exit in the country you pick, and the results and ads are the ones a searcher there sees. The response has the same shape as our Google /serpApi endpoint, so one pipeline handles every engine.
What you can extract
- Organic results with position, title, URL, displayed URL, domain and description
- Brave Search Ads in top and bottom lists, with the advertiser's destination URL and domain
- Related searches
- Pages checked and a hasMore flag
- Region-specific result sets: proxy_country sets Brave's region through the exit IP
- About 20 organic results per page, up to 10 pages per call
Dedicated endpoints
/search/brave Brave Search results
Search results for a keyword: organic (position, title, url, displayedUrl, domain, description), topAds and bottomAds, and relatedSearches, plus a count for each list; about 20 organic results per page. Brave picks the region from the searcher's location, so proxy_country sets it through the exit; collect up to 10 pages with pages_to_check. Same parameters and response shape as /serpApi; totalResults is always null.
How to scrape it
curl -X POST \
-H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
"https://api.scrapeunblocker.com/search/brave?keyword=car%20insurance&pages_to_check=1&proxy_country=US"import requests
resp = requests.post(
"https://api.scrapeunblocker.com/search/brave",
headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
params={"keyword": "car insurance", "pages_to_check": "1", "proxy_country": "US"},
)
print(resp.text)import { ScrapeUnblockerClient } from 'scrapeunblocker';
const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });
const results = await su.braveSearch('car insurance', {
pagesToCheck: 1,
proxyCountry: 'US',
});
console.log(results); Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.
Example response
{
"engine": "brave",
"keyword": "car insurance",
"country": "US",
"language": "en",
"totalResults": null,
"resultsCollected": 21,
"topAdsCount": 1,
"bottomAdsCount": 0,
"organicResultsCount": 20,
"topAds": [
{
"position": 1,
"title": "Side-By-Side 2026 Quotes - 2026 Rates Online Only",
"url": "https://smarterauto.com/best-match-auto-insurance-g-base?title=Auto%20Insurance%20for%20New%20Cars...",
"displayedUrl": "smarterauto.com › best-match-auto-insurance-g-base",
"domain": "smarterauto.com",
"description": "(2026 rates are here: August 17, 2026). Compare top-rated companies in your area"
}
],
"bottomAds": [],
"organic": [
{
"position": 1,
"title": "Car Insurance | Get An Auto Insurance Quote | Allstate",
"url": "https://www.allstate.com/auto-insurance",
"displayedUrl": "allstate.com › auto-insurance",
"domain": "allstate.com",
"description": "August 20, 2026 - Every driver is different, and your insurance should be too. We offer a range of coverages to keep you protected on the open road..."
}
],
"relatedSearches": ["car insurance quotes", "car insurance cheap", "car insurance near me"],
"pagesChecked": 1,
"hasMore": true
} Frequently asked questions
Is it legal to scrape Brave Search?
Collecting publicly available Brave Search data such as organic results, ads and related searches is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. ScrapeUnblocker returns the public results; what you collect and how you use it is your responsibility.
How do I scrape Brave Search without getting blocked?
Brave Search uses bot detection and answers traffic it does not trust with a captcha page. The /search/brave plugin renders every results page in a real browser through an exit in the country you pick, renders a page again on a fresh exit when it comes back blocked, and returns parsed JSON. In ScrapeUnblocker's benchmark it returned real results on 99.7% of 1,040 calls with different queries, about 3.4s per call.
What Brave Search data can I get?
/search/brave returns JSON in the same shape as /serpApi: about 20 organic results per page with position, title, URL, displayed URL, domain and description, top and bottom ads in their own lists, relatedSearches and a count for each list, plus pagesChecked and hasMore. Ad links come back as the advertiser's destination URL, not Brave's redirect. Brave does not show ads on every query, so an empty ad list is a normal answer; totalResults is always null.
Do I need a Brave Search API key?
No. Brave sells its own Search API with separate keys and plans, and the plugin needs neither: send keyword with your ScrapeUnblocker key and get back the results page a searcher sees on search.brave.com, ads included when Brave shows them, as parsed JSON. Because the response has the same shape as /serpApi, code written for Google results reads Brave results by changing the path only.
Can I scrape Brave Search results from a specific country?
Yes. Pass proxy_country with a two-letter country code (default US). Brave picks the result region from the searcher's location and ignores a country in the URL, so the plugin renders the page through an exit in that country, and you get the results and ads a searcher there sees. language is accepted so calls stay compatible with /serpApi, but Brave does not use it, so the region comes from proxy_country alone.
How much does it cost to scrape Brave Search?
Each results page fetched is billed as one request: a pages_to_check=3 call that returns three pages of about 20 results counts as 3 requests, and pagesChecked shows the exact number. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks and timeouts are not billed, and the free trial includes 500 requests with no card.
Related scrapers
Start scraping this site today
Free tier included. No credit card required to test it.