Place Search (Search API)
Requires API Key: Get one at https://api.search.brave.com
Plan: Included in the Search plan (with locations option). See https://api-dashboard.search.brave.com/app/subscriptions/subscribe
Standalone: Unlike local-pois and local-descriptions, this endpoint does not require POI IDs from a prior web search. You provide a location and an optional query directly.
Quick Start (cURL)
Search by Query + Coordinates
curl -s "https://api.search.brave.com/res/v1/local/place_search" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=coffee shops" \
--data-urlencode "latitude=37.7749" \
--data-urlencode "longitude=-122.4194" \
--data-urlencode "radius=5000"
Search by Query + Location String
curl -s "https://api.search.brave.com/res/v1/local/place_search" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=sushi restaurants" \
--data-urlencode "location=tokyo japan" \
--data-urlencode "country=JP" \
--data-urlencode "search_lang=en"
Browse General POIs (No Query)
curl -s "https://api.search.brave.com/res/v1/local/place_search" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "latitude=48.8566" \
--data-urlencode "longitude=2.3522" \
--data-urlencode "radius=3000" \
--data-urlencode "country=FR"
Endpoint
GET https://api.search.brave.com/res/v1/local/place_search
Authentication: X-Subscription-Token: <API_KEY> header
Parameters
Location (optional but recommended)
Providing a geographic anchor improves precision. You can use coordinates (latitude + longitude) or a location string. Omitting both is allowed when a q is given — results are sourced globally and may be less precise. Omitting all three (q, latitude/longitude, and location) returns HTTP 422.
| Parameter |
Type |
Required |
Default |
Description |
latitude |
float |
Conditional |
— |
Latitude (-90.0 to 90.0). Required together with longitude |
longitude |
float |
Conditional |
— |
Longitude (-180.0 to 180.0). Required together with latitude |
location |
string |
No |
— |
Location string, alternative to coordinates. US: <city> <state> <country> (e.g., san francisco ca united states). Non-US: <city> <country> (e.g., tokyo japan). Case-insensitive, no commas needed. English or the most popular local language works best |
Search
| Parameter |
Type |
Required |
Default |
Description |
q |
string |
No |
— |
Free-text query (e.g., coffee shops, pizza). Fully optional — if omitted, returns general POIs in the given area |
Additional Options
| Parameter |
Type |
Required |
Default |
Description |
radius |
float |
No |
— |
Search radius bias around the provided coordinates, in meters. Not a hard cutoff — results may extend beyond it. No upper limit |
count |
int |
No |
20 |
Total items returned across all buckets (1–100), not just results — an address query can spend the whole budget on addresses/streets |
geoloc |
string |
No |
— |
User geolocation as <latitude>x<longitude> (e.g., 40.7128x-74.0060), used to compute distance |
country |
string |
No |
US |
Search country (2-letter country code or ALL) |
search_lang |
string |
No |
en |
Language for search results (2+ char language code) |
ui_lang |
string |
No |
en-US |
UI language (locale code, e.g., en-US) |
units |
string |
No |
metric |
Measurement units: metric or imperial |
safesearch |
string |
No |
strict |
Safe search level: off, moderate, or strict |
spellcheck |
bool |
No |
true |
Whether to apply spellcheck to the query |
Response Format
Top-Level Fields
| Field |
Type |
Description |
type |
string |
Always "locations" |
results |
array |
List of LocationResult objects (individual POIs) |
cities |
array |
Matched cities, type: "city" — see Geographic Place Fields |
countries |
array |
Matched countries, type: "country" |
regions |
array |
Matched regions, type: "region" |
neighborhoods |
array |
Matched neighborhoods, type: "neighborhood" |
addresses |
array |
List of AddressResult objects with type: "address" — specific street + number locations |
streets |
array |
List of AddressResult objects with type: "street" — entire streets |
mixed |
array |
ResultReference ordering hints describing how to interleave the buckets on a SERP |
location |
object? |
Resolved location info |
location.coordinates |
[float, float] |
[latitude, longitude] of the resolved center |
location.name |
string |
Resolved location name (e.g., "Helsinki") |
location.country |
string |
Two-letter country code (e.g., "FI") |
Treat a missing bucket as empty. For typical POI-style queries only results is populated, so clients that don't render rich SERPs can ignore the rest — except for address- or street-shaped queries, which can return an empty results and put every match in addresses/streets.
LocationResult Fields
Each item in results is a LocationResult:
| Field |
Type |
Description |
type |
string |
Always "location_result" |
title |
string |
Business/POI name |
url |
string |
Canonical URL |
description |
string? |
Short description or category label (e.g., "Coffee Shop") |
provider_url |
string |
Provider page URL |
id |
string? |
Opaque POI identifier (valid ~8 hours, usable with local-pois and local-descriptions) |
coordinates |
[float, float]? |
[latitude, longitude] |
postal_address |
object |
displayAddress, plus optional streetAddress, addressLocality, addressRegion, postalCode, country |
contact.telephone |
string? |
Phone number |
contact.email |
string? |
Email address |
rating.ratingValue |
float? |
Average rating |
rating.bestRating |
float? |
Max possible rating |
rating.reviewCount |
int? |
Number of reviews |
rating.is_tripadvisor |
bool |
Whether the rating comes from Tripadvisor |
opening_hours.current_day |
object[]? |
Today's hours (abbr_name, full_name, opens, closes) |
opening_hours.days |
object[][]? |
Hours for each day of the week |
categories |
string[] |
Business categories (default []) |
price_range |
string? |
Price indicator, e.g. $, $$, $$ - $$$ |
serves_cuisine |
string[]? |
Cuisine types (restaurants) |
distance.value |
float? |
Distance from the search location |
distance.units |
string? |
Distance unit |
icon_category |
string? |
Icon category slug (e.g., cafe) |
thumbnail.src |
string? |
Thumbnail image URL |
thumbnail.original |
string? |
Original image URL |
pictures.results |
object[]? |
Additional images (src, original) |
profiles |
object[]? |
External profiles (name, url, long_name, img) |
timezone |
string? |
IANA timezone (e.g., America/Los_Angeles) |
zoom_level |
int |
Suggested map zoom level (default 7) |
Geographic Place Fields (cities, countries, regions, neighborhoods)
All four buckets share one shape, differing only by the type identifier. The published spec names
them CityResult / CountryResult / RegionResult / NeighborhoodResult.
| Field |
Type |
Description |
type |
string |
Bucket identifier: city, country, region, or neighborhood |
name |
string |
Place name |
country |
string |
Country code of the place |
coordinates |
[float, float] |
[latitude, longitude] |
thumbnail.src |
string |
Primary image URL |
AddressResult Fields (addresses and streets)
Same model is used for both buckets. Items in addresses have type: "address" (street + number); items in streets have type: "street" (entire street).
| Field |
Type |
Description |
type |
string |
"address" (in addresses) or "street" (in streets) |
name |
string |
Display name of the address or street |
coordinates |
[float, float] |
[latitude, longitude] |
pois |
object[] |
LocationResult objects located at this address/street |
pois_nearby |
object[] |
LocationResult objects located nearby |
zoom_level |
int |
Suggested map zoom level (default 15) |
distance.value |
float? |
Distance from the search location |
distance.units |
string? |
Distance unit |
postal_address |
object? |
displayAddress, streetAddress, addressLocality, addressRegion, country |
Mixed Ordering (mixed)
mixed is an ordered list of ResultReference objects telling clients how to interleave items from the different buckets on a single SERP.
| Field |
Type |
Description |
type |
string |
Bucket to draw from: results, cities, countries, regions, neighborhoods, addresses, or streets |
index |
int? |
0-based index of the item within that bucket. May be null when all is true |
all |
bool |
When true, all remaining items from the named bucket should be placed at this position |
Clients that only render POIs can ignore mixed entirely and read results directly.
Example Response
{
"type": "locations",
"results": [
{
"type": "location_result",
"title": "Blue Bottle Coffee",
"url": "https://yelp.com/biz/blue-bottle-coffee-sf",
"provider_url": "",
"id": "loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=",
"description": "Coffee Shop",
"postal_address": {
"type": "PostalAddress",
"displayAddress": "315 Linden St, San Francisco, CA 94102"
},
"contact": { "telephone": "+15106533394" },
"rating": {
"ratingValue": 4.3,
"bestRating": 5.0,
"reviewCount": 1024,
"is_tripadvisor": true
},
"opening_hours": {
"current_day": [
{ "abbr_name": "Tue", "full_name": "Tuesday", "opens": "07:00", "closes": "18:00" }
],
"days": [
[{ "abbr_name": "Mon", "full_name": "Monday", "opens": "07:00", "closes": "18:00" }]
]
},
"coordinates": [37.7763, -122.4215],
"categories": [],
"serves_cuisine": ["Cafe", "Coffee Shop"],
"price_range": "$$",
"icon_category": "cafe",
"thumbnail": {
"src": "https://example.com/thumb.jpg",
"original": "https://example.com/original.jpg"
},
"zoom_level": 7
}
],
"cities": [],
"countries": [],
"regions": [],
"neighborhoods": [],
"addresses": [],
"streets": [],
"mixed": [
{ "type": "results", "index": 0, "all": false }
],
"location": {
"coordinates": [37.7749, -122.4194],
"name": "San Francisco",
"country": "US"
}
}
For a query that matches a city name, the response additionally surfaces a city entry in cities:
{
"cities": [
{
"type": "city",
"name": "San Francisco",
"country": "US",
"coordinates": [37.7749, -122.4194],
"thumbnail": { "src": "https://example.com/sf.jpg" }
}
],
"mixed": [
{ "type": "cities", "index": 0, "all": false }
]
}
Enriching Results with POI Details and Descriptions
POI id values from results can be passed to sibling endpoints for richer data:
# Get full POI details (hours, reviews, photos, web result mentions)
curl -s "https://api.search.brave.com/res/v1/local/pois" -G \
--data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
# Get AI-generated descriptions
curl -s "https://api.search.brave.com/res/v1/local/descriptions" -G \
--data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
Use Cases
- Map-based exploration: Search for POIs within a visible map viewport using coordinates + radius. No prior query needed.
- Location-aware apps: Build "nearby" features — pass device GPS coordinates and a query to find relevant businesses.
- Travel planning: Search for attractions, restaurants, and hotels by location string (e.g.,
paris france) without needing exact coordinates.
Notes
- Finds places, not pages: This endpoint searches a geographic index of physical places. Use web search for general information retrieval.
- Choosing a radius: A tighter radius (below ~20 km) gives more focused results. Raise it to reach specific or well-known places further afield; for common category searches (e.g.,
restaurants), the default bias or tighter works best.
1---2name: local-place-search3description: USE FOR finding places in the physical world - businesses, POIs, street addresses, cities and streets. Results carry address, coordinates, rating, opening hours and phone, so basic details need no follow-up call. Standalone - no POI IDs or prior web search required; the IDs it returns work with local-pois and local-descriptions. Locate by coordinates or a location string, or omit both to search globally. Omit the query to browse an area. Max 100 results.4---5
6# Place Search (Search API)
7
8> **Requires API Key**: Get one at https://api.search.brave.com
9>
10> **Plan**: Included in the **Search** plan (with `locations` option). See https://api-dashboard.search.brave.com/app/subscriptions/subscribe
11>
12> **Standalone**: Unlike `local-pois` and `local-descriptions`, this endpoint does **not** require POI IDs from a prior web search. You provide a location and an optional query directly.
13
14## Quick Start (cURL)
15
16### Search by Query + Coordinates
17
18```bash
19curl -s "https://api.search.brave.com/res/v1/local/place_search" \
20 -H "Accept: application/json" \
21 -H "Accept-Encoding: gzip" \
22 -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
23 -G \
24 --data-urlencode "q=coffee shops" \
25 --data-urlencode "latitude=37.7749" \
26 --data-urlencode "longitude=-122.4194" \
27 --data-urlencode "radius=5000"
28```
29
30### Search by Query + Location String
31
32```bash
33curl -s "https://api.search.brave.com/res/v1/local/place_search" \
34 -H "Accept: application/json" \
35 -H "Accept-Encoding: gzip" \
36 -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
37 -G \
38 --data-urlencode "q=sushi restaurants" \
39 --data-urlencode "location=tokyo japan" \
40 --data-urlencode "country=JP" \
41 --data-urlencode "search_lang=en"
42```
43
44### Browse General POIs (No Query)
45
46```bash
47curl -s "https://api.search.brave.com/res/v1/local/place_search" \
48 -H "Accept: application/json" \
49 -H "Accept-Encoding: gzip" \
50 -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
51 -G \
52 --data-urlencode "latitude=48.8566" \
53 --data-urlencode "longitude=2.3522" \
54 --data-urlencode "radius=3000" \
55 --data-urlencode "country=FR"
56```
57
58## Endpoint
59
60```http
61GET https://api.search.brave.com/res/v1/local/place_search
62```
63
64**Authentication**: `X-Subscription-Token: <API_KEY>` header
65
66## Parameters
67
68### Location (optional but recommended)
69
70Providing a geographic anchor improves precision. You can use coordinates (`latitude` + `longitude`) or a `location` string. Omitting both is allowed when a `q` is given — results are sourced globally and may be less precise. Omitting all three (`q`, `latitude`/`longitude`, and `location`) returns HTTP 422.
71
72| Parameter | Type | Required | Default | Description |
73|--|--|--|--|--|
74| `latitude` | float | Conditional | — | Latitude (-90.0 to 90.0). Required together with `longitude` |
75| `longitude` | float | Conditional | — | Longitude (-180.0 to 180.0). Required together with `latitude` |
76| `location` | string | No | — | Location string, alternative to coordinates. US: `<city> <state> <country>` (e.g., `san francisco ca united states`). Non-US: `<city> <country>` (e.g., `tokyo japan`). Case-insensitive, no commas needed. English or the most popular local language works best |
77
78### Search
79
80| Parameter | Type | Required | Default | Description |
81|--|--|--|--|--|
82| `q` | string | No | — | Free-text query (e.g., `coffee shops`, `pizza`). Fully optional — if omitted, returns general POIs in the given area |
83
84### Additional Options
85
86| Parameter | Type | Required | Default | Description |
87|--|--|--|--|--|
88| `radius` | float | No | — | Search radius **bias** around the provided coordinates, in meters. Not a hard cutoff — results may extend beyond it. No upper limit |
89| `count` | int | No | `20` | Total items returned across **all** buckets (1–100), not just `results` — an address query can spend the whole budget on `addresses`/`streets` |
90| `geoloc` | string | No | — | User geolocation as `<latitude>x<longitude>` (e.g., `40.7128x-74.0060`), used to compute `distance` |
91| `country` | string | No | `US` | Search country (2-letter country code or `ALL`) |
92| `search_lang` | string | No | `en` | Language for search results (2+ char language code) |
93| `ui_lang` | string | No | `en-US` | UI language (locale code, e.g., `en-US`) |
94| `units` | string | No | `metric` | Measurement units: `metric` or `imperial` |
95| `safesearch` | string | No | `strict` | Safe search level: `off`, `moderate`, or `strict` |
96| `spellcheck` | bool | No | `true` | Whether to apply spellcheck to the query |
97
98## Response Format
99
100### Top-Level Fields
101
102| Field | Type | Description |
103|--|--|--|
104| `type` | string | Always `"locations"` |
105| `results` | array | List of `LocationResult` objects (individual POIs) |
106| `cities` | array | Matched cities, `type: "city"` — see Geographic Place Fields |
107| `countries` | array | Matched countries, `type: "country"` |
108| `regions` | array | Matched regions, `type: "region"` |
109| `neighborhoods` | array | Matched neighborhoods, `type: "neighborhood"` |
110| `addresses` | array | List of `AddressResult` objects with `type: "address"` — specific street + number locations |
111| `streets` | array | List of `AddressResult` objects with `type: "street"` — entire streets |
112| `mixed` | array | `ResultReference` ordering hints describing how to interleave the buckets on a SERP |
113| `location` | object? | Resolved location info |
114| `location.coordinates` | [float, float] | `[latitude, longitude]` of the resolved center |
115| `location.name` | string | Resolved location name (e.g., `"Helsinki"`) |
116| `location.country` | string | Two-letter country code (e.g., `"FI"`) |
117
118Treat a missing bucket as empty. For typical POI-style queries only `results` is populated, so clients that don't render rich SERPs can ignore the rest — except for address- or street-shaped queries, which can return an empty `results` and put every match in `addresses`/`streets`.
119
120### LocationResult Fields
121
122Each item in `results` is a `LocationResult`:
123
124| Field | Type | Description |
125|--|--|--|
126| `type` | string | Always `"location_result"` |
127| `title` | string | Business/POI name |
128| `url` | string | Canonical URL |
129| `description` | string? | Short description or category label (e.g., `"Coffee Shop"`) |
130| `provider_url` | string | Provider page URL |
131| `id` | string? | Opaque POI identifier (valid ~8 hours, usable with `local-pois` and `local-descriptions`) |
132| `coordinates` | [float, float]? | `[latitude, longitude]` |
133| `postal_address` | object | `displayAddress`, plus optional `streetAddress`, `addressLocality`, `addressRegion`, `postalCode`, `country` |
134| `contact.telephone` | string? | Phone number |
135| `contact.email` | string? | Email address |
136| `rating.ratingValue` | float? | Average rating |
137| `rating.bestRating` | float? | Max possible rating |
138| `rating.reviewCount` | int? | Number of reviews |
139| `rating.is_tripadvisor` | bool | Whether the rating comes from Tripadvisor |
140| `opening_hours.current_day` | object[]? | Today's hours (`abbr_name`, `full_name`, `opens`, `closes`) |
141| `opening_hours.days` | object[][]? | Hours for each day of the week |
142| `categories` | string[] | Business categories (default `[]`) |
143| `price_range` | string? | Price indicator, e.g. `$`, `$$`, `$$ - $$$` |
144| `serves_cuisine` | string[]? | Cuisine types (restaurants) |
145| `distance.value` | float? | Distance from the search location |
146| `distance.units` | string? | Distance unit |
147| `icon_category` | string? | Icon category slug (e.g., `cafe`) |
148| `thumbnail.src` | string? | Thumbnail image URL |
149| `thumbnail.original` | string? | Original image URL |
150| `pictures.results` | object[]? | Additional images (`src`, `original`) |
151| `profiles` | object[]? | External profiles (`name`, `url`, `long_name`, `img`) |
152| `timezone` | string? | IANA timezone (e.g., `America/Los_Angeles`) |
153| `zoom_level` | int | Suggested map zoom level (default `7`) |
154
155### Geographic Place Fields (`cities`, `countries`, `regions`, `neighborhoods`)
156
157All four buckets share one shape, differing only by the `type` identifier. The published spec names
158them `CityResult` / `CountryResult` / `RegionResult` / `NeighborhoodResult`.
159
160| Field | Type | Description |
161|--|--|--|
162| `type` | string | Bucket identifier: `city`, `country`, `region`, or `neighborhood` |
163| `name` | string | Place name |
164| `country` | string | Country code of the place |
165| `coordinates` | [float, float] | `[latitude, longitude]` |
166| `thumbnail.src` | string | Primary image URL |
167
168### AddressResult Fields (`addresses` and `streets`)
169
170Same model is used for both buckets. Items in `addresses` have `type: "address"` (street + number); items in `streets` have `type: "street"` (entire street).
171
172| Field | Type | Description |
173|--|--|--|
174| `type` | string | `"address"` (in `addresses`) or `"street"` (in `streets`) |
175| `name` | string | Display name of the address or street |
176| `coordinates` | [float, float] | `[latitude, longitude]` |
177| `pois` | object[] | `LocationResult` objects located **at** this address/street |
178| `pois_nearby` | object[] | `LocationResult` objects located **nearby** |
179| `zoom_level` | int | Suggested map zoom level (default `15`) |
180| `distance.value` | float? | Distance from the search location |
181| `distance.units` | string? | Distance unit |
182| `postal_address` | object? | `displayAddress`, `streetAddress`, `addressLocality`, `addressRegion`, `country` |
183
184### Mixed Ordering (`mixed`)
185
186`mixed` is an ordered list of `ResultReference` objects telling clients how to interleave items from the different buckets on a single SERP.
187
188| Field | Type | Description |
189|--|--|--|
190| `type` | string | Bucket to draw from: `results`, `cities`, `countries`, `regions`, `neighborhoods`, `addresses`, or `streets` |
191| `index` | int? | 0-based index of the item within that bucket. May be `null` when `all` is `true` |
192| `all` | bool | When `true`, all remaining items from the named bucket should be placed at this position |
193
194Clients that only render POIs can ignore `mixed` entirely and read `results` directly.
195
196### Example Response
197
198```json
199{
200 "type": "locations",
201 "results": [
202 {
203 "type": "location_result",
204 "title": "Blue Bottle Coffee",
205 "url": "https://yelp.com/biz/blue-bottle-coffee-sf",
206 "provider_url": "",
207 "id": "loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=",
208 "description": "Coffee Shop",
209 "postal_address": {
210 "type": "PostalAddress",
211 "displayAddress": "315 Linden St, San Francisco, CA 94102"
212 },
213 "contact": { "telephone": "+15106533394" },
214 "rating": {
215 "ratingValue": 4.3,
216 "bestRating": 5.0,
217 "reviewCount": 1024,
218 "is_tripadvisor": true
219 },
220 "opening_hours": {
221 "current_day": [
222 { "abbr_name": "Tue", "full_name": "Tuesday", "opens": "07:00", "closes": "18:00" }
223 ],
224 "days": [
225 [{ "abbr_name": "Mon", "full_name": "Monday", "opens": "07:00", "closes": "18:00" }]
226 ]
227 },
228 "coordinates": [37.7763, -122.4215],
229 "categories": [],
230 "serves_cuisine": ["Cafe", "Coffee Shop"],
231 "price_range": "$$",
232 "icon_category": "cafe",
233 "thumbnail": {
234 "src": "https://example.com/thumb.jpg",
235 "original": "https://example.com/original.jpg"
236 },
237 "zoom_level": 7
238 }
239 ],
240 "cities": [],
241 "countries": [],
242 "regions": [],
243 "neighborhoods": [],
244 "addresses": [],
245 "streets": [],
246 "mixed": [
247 { "type": "results", "index": 0, "all": false }
248 ],
249 "location": {
250 "coordinates": [37.7749, -122.4194],
251 "name": "San Francisco",
252 "country": "US"
253 }
254}
255```
256
257For a query that matches a city name, the response additionally surfaces a city entry in `cities`:
258
259```json
260{
261 "cities": [
262 {
263 "type": "city",
264 "name": "San Francisco",
265 "country": "US",
266 "coordinates": [37.7749, -122.4194],
267 "thumbnail": { "src": "https://example.com/sf.jpg" }
268 }
269 ],
270 "mixed": [
271 { "type": "cities", "index": 0, "all": false }
272 ]
273}
274```
275
276## Enriching Results with POI Details and Descriptions
277
278POI `id` values from `results` can be passed to sibling endpoints for richer data:
279
280```bash
281# Get full POI details (hours, reviews, photos, web result mentions)
282curl -s "https://api.search.brave.com/res/v1/local/pois" -G \
283 --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \
284 -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
285
286# Get AI-generated descriptions
287curl -s "https://api.search.brave.com/res/v1/local/descriptions" -G \
288 --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \
289 -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
290```
291
292## Use Cases
293
294- **Map-based exploration**: Search for POIs within a visible map viewport using coordinates + radius. No prior query needed.
295- **Location-aware apps**: Build "nearby" features — pass device GPS coordinates and a query to find relevant businesses.
296- **Travel planning**: Search for attractions, restaurants, and hotels by location string (e.g., `paris france`) without needing exact coordinates.
297
298## Notes
299
300- **Finds places, not pages**: This endpoint searches a geographic index of physical places. Use web search for general information retrieval.
301- **Choosing a radius**: A tighter radius (below ~20 km) gives more focused results. Raise it to reach specific or well-known places further afield; for common category searches (e.g., `restaurants`), the default bias or tighter works best.