Loading...
Loading...
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.
npx skill4agent add brave/brave-search-skills local-place-searchRequires API Key: Get one at https://api.search.brave.comPlan: Included in the Search plan (withoption). See https://api-dashboard.search.brave.com/app/subscriptions/subscribelocationsStandalone: Unlikeandlocal-pois, this endpoint does not require POI IDs from a prior web search. You provide a location and an optional query directly.local-descriptions
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"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"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"GET https://api.search.brave.com/res/v1/local/place_searchX-Subscription-Token: <API_KEY>latitudelongitudelocationqqlatitudelongitudelocation| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| float | Conditional | — | Latitude (-90.0 to 90.0). Required together with |
| float | Conditional | — | Longitude (-180.0 to 180.0). Required together with |
| string | No | — | Location string, alternative to coordinates. US: |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| string | No | — | Free-text query (e.g., |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| float | No | — | Search radius bias around the provided coordinates, in meters. Not a hard cutoff — results may extend beyond it. No upper limit |
| int | No | | Total items returned across all buckets (1–100), not just |
| string | No | — | User geolocation as |
| string | No | | Search country (2-letter country code or |
| string | No | | Language for search results (2+ char language code) |
| string | No | | UI language (locale code, e.g., |
| string | No | | Measurement units: |
| string | No | | Safe search level: |
| bool | No | | Whether to apply spellcheck to the query |
| Field | Type | Description |
|---|---|---|
| string | Always |
| array | List of |
| array | Matched cities, |
| array | Matched countries, |
| array | Matched regions, |
| array | Matched neighborhoods, |
| array | List of |
| array | List of |
| array | |
| object? | Resolved location info |
| [float, float] | |
| string | Resolved location name (e.g., |
| string | Two-letter country code (e.g., |
resultsresultsaddressesstreetsresultsLocationResult| Field | Type | Description |
|---|---|---|
| string | Always |
| string | Business/POI name |
| string | Canonical URL |
| string? | Short description or category label (e.g., |
| string | Provider page URL |
| string? | Opaque POI identifier (valid ~8 hours, usable with |
| [float, float]? | |
| object | |
| string? | Phone number |
| string? | Email address |
| float? | Average rating |
| float? | Max possible rating |
| int? | Number of reviews |
| bool | Whether the rating comes from Tripadvisor |
| object[]? | Today's hours ( |
| object[][]? | Hours for each day of the week |
| string[] | Business categories (default |
| string? | Price indicator, e.g. |
| string[]? | Cuisine types (restaurants) |
| float? | Distance from the search location |
| string? | Distance unit |
| string? | Icon category slug (e.g., |
| string? | Thumbnail image URL |
| string? | Original image URL |
| object[]? | Additional images ( |
| object[]? | External profiles ( |
| string? | IANA timezone (e.g., |
| int | Suggested map zoom level (default |
citiescountriesregionsneighborhoodstypeCityResultCountryResultRegionResultNeighborhoodResult| Field | Type | Description |
|---|---|---|
| string | Bucket identifier: |
| string | Place name |
| string | Country code of the place |
| [float, float] | |
| string | Primary image URL |
addressesstreetsaddressestype: "address"streetstype: "street"| Field | Type | Description |
|---|---|---|
| string | |
| string | Display name of the address or street |
| [float, float] | |
| object[] | |
| object[] | |
| int | Suggested map zoom level (default |
| float? | Distance from the search location |
| string? | Distance unit |
| object? | |
mixedmixedResultReference| Field | Type | Description |
|---|---|---|
| string | Bucket to draw from: |
| int? | 0-based index of the item within that bucket. May be |
| bool | When |
mixedresults{
"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"
}
}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 }
]
}idresults# 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}"paris francerestaurants