Brave Search Scraper avatar

Brave Search Scraper

Pricing

from $3.39 / 1,000 search results

Go to Apify Store
Brave Search Scraper

Brave Search Scraper

Scrape Brave Search results for any query: rank, title, URL, displayed URL, snippet, domain, date, thumbnail and sitelinks. Pick country, language and safe search. Export as JSON, CSV or Excel, or use the API.

Pricing

from $3.39 / 1,000 search results

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Brave Search Scraper

Brave Search Scraper extracts organic web results from Brave Search for any keyword: rank, title, URL, displayed URL, snippet, domain, date, thumbnail and sitelinks. Pick from 39 countries, a search language and a safe search level, and get clean SERP data without a Brave Search API key.

Track rankings on Brave's independent search index: every result comes with its exact position, page number, publication date and sitelinks, deduplicated across pages and ready for SEO reports, monitoring or AI pipelines.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Apify Actor: parsebird/brave-search-scraper. Scrapes organic web results from Brave Search (search.brave.com) for one query per run. Call via ApifyClient: client.actor("parsebird/brave-search-scraper").call(run_input={"query": "best electric cars 2025", "maxItems": 50, "country": "us", "language": "en", "safeSearch": "moderate"}). Inputs: query (string, required; Brave search operators such as site:, "exact phrase" and -word work), maxItems (integer, default 50, min 1; Brave shows about 20 results per page and up to roughly 100-120 per query), country (string, default "us"; one of all, ar, au, at, be, br, ca, cl, cn, dk, fi, fr, de, gr, hk, in, id, it, jp, kr, my, mx, nl, nz, no, ph, pl, pt, ru, sa, sg, za, es, se, ch, tw, tr, gb, us), language (string, default "en"; search language preference such as de, fr, es, ja, pt-br, zh-hans), safeSearch ("off" | "moderate" | "strict", default "moderate"), proxyConfiguration (optional, default Apify US residential proxy). Output: one row per result with position (1-based rank), resultTitle, link, displayedUrl, snippet, domain, siteName, date (as shown by Brave), publishedAt (ISO date), thumbnail, siteLinks[{title, link, snippet}], page, searchQuery, country, language, safeSearch, scrapedAt. Pricing: pay per event, $3.99 per 1,000 results on the Free plan plus a small run start fee. Full API spec: https://apify.com/parsebird/brave-search-scraper/api. Get your token: https://console.apify.com/settings/integrations.

What is Brave Search Scraper?

Brave Search Scraper turns a Brave Search results page into structured data. Type a query, as you would on search.brave.com, and click Start. To try it, keep the prefilled query best electric cars 2025: the run saves 50 ranked results in a few seconds.

Brave Search runs on its own web index rather than reselling Google or Bing results, so its rankings are a separate signal worth tracking. Brave Search Scraper works as a Brave Search API alternative for SERP data: no API key, no setup. Download results as JSON, CSV or Excel, or read them through the Apify API.

What can Brave Search Scraper do?

  • 🔎 Scrape any Brave Search query, including search operators such as site:reddit.com, "exact phrase" and -word.
  • 🏁 Record exact rankings: each result gets its 1-based position and the page it was on.
  • 🌍 Localize results for 39 countries, or turn off country ranking with All regions.
  • 🗣️ Set a search language and a safe search level (off, moderate, strict).
  • 🔗 Collect sitelinks shown under navigational results, such as the section links under amazon.com or nytimes.com.
  • 📅 Get dates and thumbnails when Brave shows them, both as displayed (1 day ago) and as an ISO timestamp.
  • ♻️ Skip duplicates across pages, so the same URL is never saved or charged twice.
  • 🛡️ Rotate IPs automatically: every page goes out through a fresh proxy IP, and rate-limited requests are retried.

Because it runs on Apify, you also get:

FieldDescription
positionRank of the result, starting at 1, counted across pages
resultTitleTitle of the result
linkFull URL of the result
displayedUrlURL as Brave displays it, such as caranddriver.com › rankings › best-electric-cars
snippetDescription text under the result, with highlight tags removed
domainHostname of the result, such as www.caranddriver.com
siteNameSite name Brave shows, such as Car and Driver or Reddit
dateDate as Brave displays it, such as June 25, 2025 or 1 day ago, when shown
publishedAtPage date as an ISO timestamp, when Brave has one
thumbnailThumbnail image URL, when shown
siteLinksSub-links under the result, each with title, link and snippet
pageResults page the result appeared on (1, 2, 3 …)
searchQuery, country, language, safeSearchThe search settings used. country is the country Brave actually applied
scrapedAtWhen the result was scraped (ISO 8601, UTC)

Fields Brave doesn't show for a result are null, or an empty list for siteLinks.

How to scrape Brave Search step by step

  1. Open Brave Search Scraper and sign in to Apify.
  2. Enter a Search query, such as best electric cars 2025 or site:github.com web scraper.
  3. Set Max results. Brave shows about 20 results per page.
  4. Pick a Country, a Search language and a Safe search level, or keep the defaults (United States, English, Moderate).
  5. Click Start, then download your data as JSON, CSV or Excel from the Output tab.

Input parameters

ParameterTypeRequiredDefaultDescription
querystringYes—Search query. Brave search operators work
maxItemsintegerNo50Most results to save (minimum 1)
countrystringNousCountry Brave ranks results for: one of 39 country codes, or all for All regions
languagestringNoenSearch language preference, such as de, fr, es, ja, pt-br, zh-hans
safeSearchstringNomoderateoff, moderate or strict
proxyConfigurationobjectNoApify US residentialProxy settings. Set it only to change the default

Example input:

{
"query": "best electric cars 2025",
"maxItems": 50,
"country": "us",
"language": "en",
"safeSearch": "moderate",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Output example

[
{
"position": 1,
"resultTitle": "Best Electric Vehicles for 2026, Tested",
"link": "https://www.caranddriver.com/rankings/best-electric-cars",
"displayedUrl": "caranddriver.com › rankings › best-electric-cars",
"snippet": "C/D SAYS: The 2025 Volkswagen ID.Buzz represents the modern revival of the brand's beloved Microbus and is the first electric minivan on the market.",
"domain": "www.caranddriver.com",
"siteName": "Car and Driver",
"date": null,
"publishedAt": null,
"thumbnail": "https://hips.hearstapps.com/hmg-prod/images/2023-evoty-the-contenders-649324baab1b1.jpg",
"siteLinks": [],
"page": 1,
"searchQuery": "best electric cars 2025",
"country": "us",
"language": "en",
"safeSearch": "moderate",
"scrapedAt": "2026-11-07T12:59:47.872Z"
},
{
"position": 1,
"resultTitle": "Amazon | 本, ファッション, 家電から食品まで | ...",
"link": "https://www.amazon.co.jp/",
"displayedUrl": "amazon.co.jp",
"snippet": "Amazon.co.jp 公式サイト。アマゾンで本, 日用品, ファッション, 食品, ベビー用品, カー用品ほか一億種の商品をいつでもお安く。通常配送無料(一部を除く)",
"domain": "www.amazon.co.jp",
"siteName": "Amazon Japan",
"date": null,
"publishedAt": null,
"thumbnail": null,
"siteLinks": [
{ "title": "Amazon タイムセール", "link": "https://www.amazon.co.jp/gp/goldbox", "snippet": "Tokushoho © 1996-2026, Amazon.com, Inc." },
{ "title": "Prime Video:映画、TV番組、スポーツ番組、ライブTVを視聴…", "link": "https://www.amazon.co.jp/gp/video/storefront", "snippet": "Tokushoho © 1996-2026, Amazon.com, Inc." }
],
"page": 1,
"searchQuery": "amazon",
"country": "jp",
"language": "ja",
"safeSearch": "moderate",
"scrapedAt": "2026-11-07T13:03:57.069Z"
}
]

The second row is from a separate run for amazon with country Japan, shortened to two sitelinks.

How to use the Brave Search API in Python and JavaScript

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/brave-search-scraper").call(run_input={
"query": "best project management software",
"maxItems": 100,
"country": "gb",
"language": "en-gb",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["position"], item["domain"], item["resultTitle"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/brave-search-scraper').call({
query: 'site:reddit.com best budget headphones',
maxItems: 40,
country: 'us',
safeSearch: 'strict',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((row) => console.log(row.position, row.link));

Get your token in Apify Console. See every option on the API tab.

Use cases

  • SEO rank tracking: check where your pages rank on Brave Search for your target keywords, by country.
  • Competitor research: see which domains own the first pages for a keyword, and how that changes over time.
  • Search engine comparison: put Brave's rankings next to other engines to see where your visibility differs.
  • Content research: collect titles, snippets and dates of the top pages before writing on a topic.
  • AI and RAG pipelines: feed fresh, ranked web results with snippets and links into LLM agents.
  • Brand monitoring: schedule runs for your brand name and spot new pages, reviews and threads.

How does Brave Search Scraper work?

  1. It opens the Brave Search results page for your query with your country, language and safe search settings.
  2. It reads the result data Brave embeds in the page, so titles, URLs, dates and sitelinks come out exactly as Brave has them.
  3. It moves through the pages (about 20 results each) until it reaches Max results or Brave says there are no more.
  4. Every page goes through a fresh proxy IP. If Brave limits a request, the scraper retries it on a new IP.
  5. It skips URLs it already saved, numbers results in order, and saves rows page by page, so a stopped run keeps its results.

Brave Search Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event price.

EventFreeBronzeSilverGold
apify-actor-start, per run$0.005$0.005$0.005$0.005
result-scraped, per 1,000$3.99$3.79$3.59$3.39

Each saved search result is one result-scraped event. Duplicates are skipped and never charged. For example, 50 results for one keyword cost about $0.20 on the Free plan, plus $0.005 for the run start. A start event fires once per run for each GB of run memory, and the default memory stays within one. To cap your spending, set a maximum cost per run in the run options. The run stops at that limit and keeps what it saved.

Brave Search Scraper only collects data that search.brave.com shows publicly, without logging in. Web scraping of public data is generally legal, but what you may do with the data depends on your purpose and your country. You can read more in Is web scraping legal?

Search results can include titles and snippets of third-party pages that are protected by copyright, and pages that mention people. Check Brave Search's terms too, and ask a lawyer if you are unsure. This section is not legal advice.

Other search scrapers you may like

FAQ

Do I need a Brave Search API key? No. Brave offers its own paid Brave Search API with keys and plans. Brave Search Scraper reads the public search pages instead, so you only need an Apify account.

How many results can I get per query? As many as Brave shows, which is usually around 100–120. In our tests, best electric cars 2025 returned 115 unique results over 6 pages, and a narrow query with operators returned 32. When Brave runs out, the run ends with the message "all Brave Search shows for this query".

Why do I get fewer results than Max results? Brave stops offering more pages for that query. Later pages can also repeat results from earlier pages; those are skipped and not charged.

Does the search language filter results? It sets a preference, not a strict filter. Brave mostly ranks by the query's own language, so a German query in Germany returns mostly German pages, while an English query stays mostly English whatever language you pick. Combine Country and a query in the target language for the most local results.

Do the results depend on the proxy location? For queries with local intent, such as weather forecast, Brave also uses the location of the IP address. The default proxy is a US residential IP. For local results elsewhere, pick a proxy country to match in Proxy configuration.

What happens if I pick a country Brave doesn't support? The country list only offers the 39 countries Brave Search supports, plus All regions. The country field in each row shows the country Brave actually applied.

Can I run several keywords? Each run takes one query. For many keywords, start several runs through the API, or save each keyword as an Apify task and schedule them.

Can I schedule recurring runs? Yes. Use Apify Schedules to run daily, weekly or at any interval, and send results to Google Sheets, Slack or your own app with integrations.

Something doesn't work. Where do I report it? Open a ticket on the Issues tab. Include your run link so we can look into it.