Brave Search Scraper – Organic SERP Results
Pricing
from $0.45 / 1,000 organic brave search results
Brave Search Scraper – Organic SERP Results
Collect Brave Search organic SERP results for 1–10,000 keywords: positions, titles, URLs, domains, snippets and localization. Pay per delivered result.
Pricing
from $0.45 / 1,000 organic brave search results
Rating
0.0
(0)
Developer
DataScraperES
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Collect Brave Search organic SERP results at scale for one to 10,000 keywords and receive ranked positions, titles, URLs, domains, snippets, localization settings, and pagination metadata in an export-ready Apify Dataset. Pay only for organic results delivered.
What this Actor does
This Actor requests Brave Search web result pages and extracts the organic results visible in the returned HTML. It is focused on clean, one-row-per-result SERP data rather than mixing organic links with images, news, video, or AI modules. It normalizes and deduplicates the input queries, follows the requested page range, removes duplicate destination URLs within each query, and stores one Dataset item per delivered organic result.
Each result includes the original query, stable query and result identifiers, page and organic position, title, destination URL, hostname, displayed URL, snippet, localization settings, pagination outcome, and collection timestamp. Query-level outcomes such as empty results, temporary failures, rate limits, challenge pages, retries, and budget skips are kept in the default Key-Value Store so they can be inspected without being mixed into billable result rows.
Use cases
- Monitor organic search visibility for selected keywords and markets.
- Compare titles, snippets, domains, and rankings across search engines.
- Build keyword research, content planning, and competitor datasets.
- Feed ranked URLs into downstream SEO, reporting, or enrichment workflows.
How to use
- Open the Actor in Apify Console.
- Enter one or more search queries and choose the result, page, country, language, and Safe Search limits.
- Click Start and open the Dataset when the run finishes.
Input
queries is required and accepts up to 10,000 entries. Blank values are rejected; surrounding whitespace and repeated internal whitespace are normalized, and duplicate queries are removed case-insensitively while preserving the first occurrence. Runs of 1,000–2,000 queries are easier to monitor; larger runs remain sequential and can take substantially longer.
maxResultsPerQuery accepts 1–100 results and defaults to 20. maxPagesPerQuery accepts 1–10 pages and defaults to 1. countryCode and searchLanguage are two-letter localization codes and default to es. safeSearch accepts off, moderate, or strict and defaults to moderate.
Request pacing and retry handling are managed automatically for stable runs. The Actor applies a 1,000 ms delay between sequential Brave Search requests and up to 3 bounded retries for transient network, rate-limit, and server failures. Challenge pages are reported rather than repeatedly retried.
{"queries": ["brave search scraper"],"maxResultsPerQuery": 3,"maxPagesPerQuery": 1,"countryCode": "es","searchLanguage": "es","safeSearch": "moderate"}
Output
Every delivered organic result is stored as one item in the default Dataset. position is the query-wide organic position across the fetched pages, while pagePosition is the position within its source page. paginationStoppedReason explains why the Actor stopped requesting pages.
The default Key-Value Store also contains SUMMARY with aggregate counters and QUERY_STATUSES with one non-billable status record per processed query. Dataset items can be downloaded or consumed through the Apify API in JSON, JSONL, CSV, Excel, and other supported export formats.
This is the complete Dataset item from a real successful run:
{"type": "organicResult","query": "brave search scraper","queryId": "b6b0e1d1a57fb23021a34e4c","countryCode": "es","searchLanguage": "es","safeSearch": "moderate","pagesFetched": 1,"organicResultsFound": 3,"paginationStoppedReason": "max_results","fetchedAt": "2026-08-27T19:01:53.275924+02:00","resultId": "dca5f24d4b0d3d376f3649bae1652e85","page": 1,"pagePosition": 2,"position": 2,"title": "Brave Search API","url": "https://brave.com/es/search/api/","domain": "brave.com","displayUrl": "brave.com › es › search › api","description": "July 1, 2026 - Es importante destacar que la API del Buscador de Brave no es un scraper que se limite a utilizar bots para consultar a Google o Bing y reempaquetar sus resultados ."}
Pricing
This Actor uses Apify pay-per-event pricing. One organic-result event represents one organic result successfully delivered to the default Dataset. The configured price per 1,000 delivered results is:
| Apify plan tier | Price per 1,000 results | Price per result |
|---|---|---|
| FREE | $0.60 | $0.00060 |
| BRONZE | $0.55 | $0.00055 |
| SILVER | $0.50 | $0.00050 |
| GOLD | $0.45 | $0.00045 |
| PLATINUM | $0.45 | $0.00045 |
| DIAMOND | $0.45 | $0.00045 |
Apify selects the applicable tier for the customer account at run time. The Pricing tab is the source of truth for the active configuration.
Empty queries, failed requests, challenge pages, status records, run summaries, duplicate queries removed during input normalization, and results that are not delivered do not trigger an organic-result charge. Apify platform usage can still apply according to your plan.
API and integrations
Run the Actor through Apify Console, API, CLI, schedules, tasks, or webhooks. Consume the default Dataset and Key-Value Store through their Apify API links, connect them to automation tools or databases, or export the results for SEO reporting and analysis.
Related Actors
| Actor | Best for |
|---|---|
| Google SERP Scraper API – Search Results Scraper | Comparing the same keyword set with Google organic rankings. |
| Bing Search Scraper – SERP Results | Comparing results with Bing markets, SafeSearch, and SERP controls. |
| DuckDuckGo Search Scraper — Organic SERP API | Adding privacy-focused DuckDuckGo results to a cross-engine study. |
| Yahoo Search Results Scraper | Checking localized Yahoo rankings and snippets for the same queries. |
Limits and data quality
- A run accepts up to 10,000 normalized queries. The Actor processes them sequentially to keep request rate, proxy rotation, memory use, and billing predictable.
- Progress and aggregate counters are checkpointed during long runs, so an Apify migration can restart from the last checkpoint without requiring concurrent workers.
- For 10,000 queries, total runtime is dominated by the managed request pacing and Brave response time. Use 1,000–2,000 query batches when you need shorter operational windows or easier retries.
- Each query can request up to 100 organic results across at most 10 pages.
- These are maxima, not guaranteed counts; Brave Search may expose fewer results, repeat or omit destinations, or change rankings and snippets between runs.
- Country and language settings influence localization but do not guarantee that every result originates in that country.
- The Dataset covers organic web results only. Ads, image results, news results, video results, Ask/LLM responses, and other specialized modules are not included.
- Temporary HTTP errors, rate limits, or challenge pages can stop a query. Review
QUERY_STATUSESandpaginationStoppedReasonwhen fewer results are returned. - A result page can change after collection; keep
fetchedAt, query settings, and page metadata when comparing runs.
Frequently asked questions
Does the Actor return paid advertisements?
No. Dataset items represent organic Brave Search web results only.
Why did I receive fewer results than requested?
The source may expose fewer unique results, pagination may end, duplicate URLs may be removed, the run spending limit may be reached, or Brave may return a temporary restriction or challenge. Check QUERY_STATUSES and the result metadata.
Can I search several countries in one run?
One country and one search language are applied to all queries in a run. Start separate runs when you need to compare different localizations.
How can I control the maximum cost?
Set a maximum total charge for the run in Apify. The Actor checks available result capacity before paid delivery and stops when the configured limit cannot accommodate another result.
Responsible use
Use search-result data only for lawful purposes. You are responsible for complying with applicable laws, regulations, privacy requirements, copyright obligations, and the source's terms. Do not use the Actor to bypass access controls, CAPTCHA, Proof of Work, rate limits, or other anti-automation measures.
Support
If a run produces unexpected results, open an issue in the Actor's Issues tab with the run ID, affected query, localization settings, and a reproducible input. Never include passwords, API tokens, proxy credentials, or other sensitive information.