answers
USE FOR AI-grounded answers via OpenAI-compatible /chat/completions. Two modes: single-search (fast) or deep research (enable_research=true, thorough…
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
$ npx -y skills add brave/brave-search-skills --skill local-place-search --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/local-place-searchContext preview
The summary Claude sees to decide when to auto-load this skill.
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
name: local-place-search description: 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.
> **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.
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_search
**Authentication**: `X-Subscription-Token: <API_KEY>` header
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 |
| 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 |
| 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 |
| 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`.
Each item in `results` is a `LocationResult`
Official skills for using Brave Search API with AI coding agents. Works with Claude Code, Cursor, GitHub Copilot, Codex, Gemini CLI, VS Code, Windsurf, OpenClaw, Cline, Goose, Amp, Roo Code, and many other agents that support the Agent Skills standard.
USE FOR AI-grounded answers via OpenAI-compatible /chat/completions. Two modes: single-search (fast) or deep research (enable_research=true, thorough…
USE FOR web search, research, RAG, grounding, browse, find, lookups, fact-checking, documentation, agentic AI. All-in-one, optimized for AI agents.…
USE FOR image search. Returns images with title, source URL, thumbnail. Supports SafeSearch filter. Up to 200 results.
USE FOR RAG/LLM grounding. Returns pre-extracted web content (text, tables, code) optimized for LLMs. GET + POST. Adjust max_tokens/count based on complexity.…
USE FOR getting AI-generated POI text descriptions. Requires POI IDs from local-place-search, or from web-search with result_filter=locations. Returns markdown…
USE FOR getting local business/POI details. Requires POI IDs from local-place-search, or from web-search with result_filter=locations. Returns full business…