Brave Maps Scraper
Pricing
from $1.00 / 1,000 results
Brave Maps Scraper
Scrape local business results from Brave Maps by search term and location. Get business names, categories, addresses, phone numbers, websites, coordinates, opening hours, images, observed search rank, and optional place-detail enrichment.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
SearchShark Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
📍 Brave Maps Scraper
Brave Maps Scraper lets you extract structured local business data from Brave Maps using keywords and a location.
Generate local business leads, analyze competitors, research markets, and collect business contact data without manually searching Brave Maps.
- 🎯 Generate business leads: collect business names, phone numbers, websites, addresses, and coordinates
- 📊 Analyze competitors: compare categories, business locations, and observed Brave Maps visibility
- 📍 Research local markets: discover businesses operating in a specific city, state, region, or country
- 🔎 Track search visibility: preserve the observed Brave Maps result rank for every query
- 🧹 Get cleaner data: branch-safe deduplication reduces duplicate appearances without merging separate locations
- 🖼 Collect business media: extract primary and additional business images when available
- 🔗 Enrich business records: optionally request Brave Maps place details for additional structured data
- ⚡ Automate workflows: export structured results to Apify Dataset, API, integrations, or downstream applications
📦 What data does Brave Maps Scraper extract?
| 🏢 Business name | 🆔 Brave Place ID |
| 🏷 Category | 📍 Address |
| 📌 Latitude | 📌 Longitude |
| ☎️ Phone number | 🌐 Website |
| 🕐 Opening hours when available | 🖼 Primary image |
| 🖼 Additional images | 🏆 Observed Brave Maps rank |
| 🔍 Search query | 🌍 Search location |
| 🔗 Brave Maps source URL | 🕒 Scrape timestamp |
| ⭐ Rating when available | 💬 Review count when available |
| 💰 Price range when available | ✉️ Email when available |
| 🔗 External profiles when available | 🌐 Timezone when available |
Missing fields are returned as
nullor an empty array where appropriate. The Actor does not invent business data that Brave Maps does not expose.
🚀 Features
Brave Maps Scraper is designed for lead generation, local-search research, and business-data automation.
- Multiple search terms: search multiple keywords or business categories in one Actor run
- One location per run: apply the same location to every search term
- Up to 100 unique businesses per search term
- Observed Brave Maps ranking: preserve the position where the business appeared during the scrape
- Branch-safe deduplication: different physical business locations are not incorrectly merged
- Optional place-detail enrichment: collect additional structured business data when available
- Business images: capture a primary image plus additional image URLs
- Independent query results: the same business can appear separately for different search terms
- Retry handling: temporary search failures are retried automatically
- Partial failure protection: successful queries remain available even if another query fails
- Detail failure protection: a failed place-detail request never removes a valid business from the Dataset
- API-friendly output: every Dataset row follows a predictable schema
- Browser-backed Brave Maps session: requests run inside a normal Brave Maps browser session
⬇️ Input
You can configure Brave Maps Scraper directly from the Apify Console or send input programmatically through the Apify API.
🔎 Search terms
Add one or more business keywords or categories.
Example:
plumberelectricianHVAC contractordentist
Each search term is processed independently.
For example:
Search term:plumberLocation:Los Angeles, California
creates one Brave Maps search.
Adding:
plumberHVAC contractordentist
creates three independent searches using the same location.
📍 Location
Enter the location that should be applied to every search term.
Example:
Los Angeles, California
Other examples:
Phoenix, ArizonaMiami, FloridaAustin, TexasNew York, New YorkLondon, United KingdomSydney, Australia
The current version supports one location per Actor run.
🔢 Maximum results per search
Set the maximum number of unique businesses to collect for each search term.
Minimum: 1Default: 100Maximum: 100
For example:
Search terms:plumberelectricianMaximum results per search:100
can return up to:
100 plumbers+100 electricians=200 Dataset rows
The requested number is a maximum, not a guarantee.
If Brave Maps exposes fewer businesses for the requested search, the Actor returns the businesses that are available rather than generating fake or duplicate records.
🔎 Include place details
Enable:
Include place details
to request the Brave Maps place-detail response for each business.
Default:
true
When enabled, the Actor may enrich businesses with additional information such as:
Additional imagesExternal profilesRicher opening-hours dataContact informationPrice rangeTimezoneOther structured place metadata
Availability depends on the individual business.
Faster mode
Set:
"includeDetails": false
to skip individual place-detail requests.
This can significantly reduce run time when you only need the information already available in Brave Maps search results.
🌐 Proxy configuration
Apify Proxy is enabled by default.
The Brave Maps search runs through a browser session using the configured proxy.
Example:
{"useApifyProxy": true}
You can adjust proxy settings through the standard Apify proxy configuration input.
🧪 Example input
{"searchTerms": ["plumber","HVAC contractor"],"location": "Los Angeles, California","maxResultsPerSearch": 50,"includeDetails": true,"proxyConfiguration": {"useApifyProxy": true}}
⬆️ Output
Results are stored in the Actor's default Apify Dataset.
You can access results from:
OutputStorageApify APIIntegrations
Each Dataset row represents one business appearance for one search query.
📊 Example result
{"bravePlaceId": "loc4ASFWRYHMARAUBNEUFQT...","name": "JW Plumbing, Heating and Air","category": "HVAC Contractor","address": "904 Wall St Ste 203, Los Angeles, CA 90015","phone": "+12133795931","website": "https://jwheatingandair.com/","latitude": 34.0384789,"longitude": -118.2520235,"openingHours": null,"imageUrl": "https://...","images": ["https://...","https://..."],"rank": 2,"query": "plumber","location": "Los Angeles, California","sourceUrl": "https://search.brave.com/maps/search?...","scrapedAt": "2026-09-08T09:35:41.000Z","rating": null,"reviewCount": null,"priceRange": null,"email": null,"profiles": null,"timezone": null}
🏆 Observed Brave Maps rank
One of the most useful fields returned by the Actor is:
rank
This means:
Observed Brave Maps result position for this query during this scrape.
For example:
Business A → rank 1Business B → rank 2Business C → rank 7
Rank is captured from the original Brave Maps result order.
If duplicate appearances are removed, the remaining businesses are not renumbered.
For example, if the same business appears at:
Rank 3Rank 19Rank 42
the Actor keeps the first observed appearance:
rank: 3
The remaining results keep their original positions.
This preserves the actual Brave Maps search provenance.
Brave Maps rankings can change over time and may vary depending on search context.
rankshould not be interpreted as a permanent or universal business ranking.
🧹 Branch-safe deduplication
Businesses are deduplicated within each search query.
Identity is determined using the strongest available signal.
The Actor uses the following hierarchy:
1. Brave Place ID2. Normalized domain + address3. Phone + address4. Business name + address5. Business name + coordinates
If none of those signals are available, the Actor does not attempt fuzzy merging.
🏪 Different business branches remain separate
Different physical locations can share:
Business nameWebsiteDomainPhone numberBrand
while still representing different businesses or branches.
If Brave Maps provides different Place IDs for the locations, they remain separate.
Example:
Business Name — Address A — Brave Place ID ABusiness Name — Address B — Brave Place ID B
remain two Dataset rows.
The Actor does not merge different branches simply because their names are similar.
🔍 Multiple search terms
Every search term has its own search context.
For example, the same business may appear as:
ABC Home ServicesQuery: plumberRank: 4
and:
ABC Home ServicesQuery: HVAC contractorRank: 11
Both rows are retained.
This is intentional because they represent two different search appearances.
The Actor does not globally deduplicate businesses across different search terms.
This makes the output useful for analyzing which businesses appear across multiple categories and how their observed positions differ.
⭐ Ratings and review counts
rating and reviewCount are included in the output schema but should be considered optional fields.
Brave Maps does not currently expose authoritative structured rating and review-count data for every place.
The Actor only uses structured business data when it is actually available.
It does not derive review counts from unrelated web-result snippets or text such as:
Read 150 reviews
If an authoritative structured value is unavailable, the Actor returns:
"rating": null,"reviewCount": null
rather than inventing or estimating values.
🔗 External profiles
When Include place details is enabled, Brave Maps may expose external profile information.
For example:
Official websiteTwitter / XOther business profiles
These are returned in:
profiles
when available.
Not every business provides profile data.
🖼 Business images
The Actor can return:
imageUrlimages
imageUrl contains the primary selected business image.
images contains the available image URLs collected for that business.
Image availability varies by listing.
Some businesses may return:
"imageUrl": null,"images": []
🕐 Opening hours
Opening-hours information is returned in:
openingHours
when Brave Maps exposes structured opening-hours data.
The exact information available can vary by business.
The Actor does not fabricate missing schedules.
⚡ Performance
Brave Maps Scraper uses a browser-backed architecture.
Brave Maps search traffic is collected from a normal browser session and then parsed into structured Dataset records.
With place details disabled
Using:
"includeDetails": false
requires only the main Brave Maps search workflow and is generally faster.
With place details enabled
Using:
"includeDetails": true
requests additional place details for individual businesses.
A 100-business search therefore performs substantially more work than a list-only search.
Use detail enrichment when you need the additional metadata.
🛡 Reliability
Temporary search failures are automatically retried.
If you search:
plumberelectricianroofing contractor
and only one query fails after retries, successful results from the other queries remain in the Dataset.
If every search fails, the Actor run fails instead of silently reporting a successful empty run.
🛡 Detail enrichment protection
A failed place-detail request does not discard the valid Brave Maps search result.
For example, if Brave Maps returns:
Business nameAddressPhoneWebsiteCoordinates
but its individual detail request fails, the Actor still saves the available list-level business data.
This helps prevent temporary detail-response problems from causing otherwise valid business leads to disappear.
🔌 API & integrations
Brave Maps Scraper can be used programmatically through the Apify API.
You can connect the results to workflows such as:
- Google Sheets
- Make
- Zapier
- CRMs
- Internal APIs
- Data warehouses
- Lead-generation systems
- AI agents
- MCP workflows
Each Actor run stores structured results in the default Apify Dataset, making them easy to consume from another application.
💡 Example use cases
🎯 Local lead generation
Search:
roofing contractorHVAC contractorplumber
Location:
Phoenix, Arizona
Build prospect lists containing:
Business namePhoneWebsiteAddressCategoryCoordinatesObserved rank
Use the results for:
Outbound salesBusiness prospectingCRM importsLocal marketingMarket expansion
📊 Competitor research
Search a business category and analyze:
Which companies appear highestWhich businesses appear across multiple keywordsBusiness locationsWebsite coveragePhone availabilityCategory coverageObserved Brave Maps visibility
📍 Market research
Compare businesses Brave Maps exposes for different categories within a market.
Use results to identify:
Market saturationPotential service gapsCompetitive categoriesLocal business concentrationGeographic coverage
🔎 Local search visibility research
Run the same business category periodically and compare:
Observed result rankNew businesses appearingBusinesses disappearingChanges in category visibilityChanges in local competition
Remember that Brave Maps rank is an observed result position, not a guaranteed permanent ranking.
🤖 Automated business-data pipelines
Use the Apify API to automatically:
Start Brave Maps searchesDownload Dataset resultsPush business data into a CRMFeed local business data into AI workflowsUpdate internal lead databasesTrigger downstream enrichment
⚠️ Current limitations
The current version focuses on reliable Brave Maps keyword + location search.
It currently supports:
Multiple search termsOne location per runUp to 100 results per search termOptional place-detail enrichmentBusiness contact informationBusiness imagesObserved search rankStructured Dataset output
It does not currently perform:
Multiple locations in one runGrid-based geographic crawlingHidden map panningUnlimited result paginationDetailed review extractionFull customer review scrapingBusiness website crawlingWebsite email discoveryEmployee/contact enrichmentDeep social-media enrichment
These capabilities are intentionally separate from the core Brave Maps search workflow.
❓ FAQ
How does Brave Maps Scraper work?
The Actor combines each search term with your selected location and opens the corresponding Brave Maps search.
It then:
Loads Brave MapsCaptures structured business resultsPreserves result orderRemoves duplicate appearances within the queryOptionally fetches place detailsNormalizes business informationStores results in an Apify Dataset
How many businesses can I scrape?
The current maximum is:
100 unique businesses per search term
Brave Maps may expose fewer businesses.
For example, if you request:
100
and only 73 unique businesses are available from the returned Brave Maps result pool, the Actor returns those available businesses.
Can I search multiple business categories?
Yes.
Example:
{"searchTerms": ["plumber","electrician","HVAC contractor","roofing contractor"]}
Each term is searched independently.
Can I search multiple locations in one run?
Not in the current version.
One location is applied to all search terms.
For example:
{"searchTerms": ["plumber","electrician"],"location": "Los Angeles, California"}
runs both searches in Los Angeles.
Why are some fields null?
Brave Maps does not expose every field for every business.
The Actor deliberately returns:
null
when information cannot be determined confidently.
It does not fabricate missing business data.
Why are rating and review count often null?
Brave Maps place responses do not currently provide authoritative structured ratings and review counts for every business.
The Actor only outputs those values when they are available from structured business data.
It does not infer them from unrelated web-result snippets.
Why do rank numbers sometimes have gaps?
Because rank represents the original Brave Maps result position.
If a duplicate appearance is removed, the remaining results are not renumbered.
Example:
Original Brave positions:12345
If the business at rank 3 is a duplicate, the Dataset may contain:
1245
This preserves the actual observed Brave Maps ordering.
Can the same business appear more than once?
Yes, when it appears under different search terms.
Example:
Business: ABC Home ServicesQuery: plumberRank: 3
and:
Business: ABC Home ServicesQuery: HVAC contractorRank: 7
Both are retained because they represent different search appearances.
What does Include place details do?
When enabled, the Actor makes an additional Brave Maps place request for each business.
This can provide richer data such as:
Additional imagesExternal profilesAdditional contact informationOpening-hour detailsPrice informationTimezone information
when Brave Maps exposes it.
Should I disable Include place details?
Disable it when speed matters more than enrichment.
Example:
{"includeDetails": false}
The Actor will still return the business information available from the main Brave Maps search results.
Can I use Brave Maps Scraper through an API?
Yes.
Every Actor can be started through the Apify API, and its Dataset can be downloaded programmatically.
This makes the scraper suitable for automated lead-generation and business-data pipelines.
Can I export the results?
Yes.
Apify Dataset results can be exported in supported formats such as:
JSONCSVExcelXMLHTML
Is a browser required?
Yes for the current Brave Maps workflow.
Brave Maps Scraper uses a normal browser-backed session to access the Brave Maps search transport reliably.
The Actor does not require a Brave API key.
Does Brave Maps Scraper use the official Brave Search API?
No.
This Actor extracts results from the Brave Maps web experience.
It does not require users to provide a Brave Search API key.
🧭 Recommended workflow
For strong local lead-generation coverage, use distinct business categories instead of many nearly identical search terms.
Good:
plumberelectricianHVAC contractorroofing contractor
Less useful:
plumberplumbersplumbingplumbing companyplumbing companies
Very similar keywords may return heavily overlapping business pools.
Distinct categories generally provide more useful coverage.
💡 Fast lead-generation workflow
If you mainly need:
Business nameAddressPhoneWebsiteCategoryCoordinatesRank
use:
{"includeDetails": false}
This avoids individual business-detail requests and can make large runs significantly faster.
💡 Enriched-data workflow
If you also want the maximum available Brave Maps metadata, use:
{"includeDetails": true}
This is the default.
The Actor will attempt to enrich every selected business while preserving the original list result even when enrichment is unavailable.
💬 Feedback & support
Found a bug or have a feature request?
Use the Actor's Issues tab on Apify.
Useful future additions may include:
Multiple locationsArea/grid searchAdditional local-search intelligenceWebsite contact enrichmentAdditional business detail fieldsSocial profile normalizationEnhanced export fields
🚀 Brave Maps business data without the manual searching
Enter your keywords, choose a location, run the Actor, and receive structured Brave Maps business data ready for:
Lead generationCompetitor researchLocal market analysisAPIsCRM workflowsAutomationAI agents
Search Brave Maps once. Use the business data everywhere.