$npx -y skills add brave/brave-search-skills --skill local-descriptionsUSE FOR getting AI-generated POI text descriptions. Requires POI IDs obtained from web-search (with result_filter=locations). Returns markdown descriptions grounded in web search context. Max 20 IDs per request.
| 1 | # Local Descriptions (Search API) |
| 2 | |
| 3 | > **Requires API Key**: Get one at https://api.search.brave.com |
| 4 | > |
| 5 | > **Plan**: Included in the **Search** plan. See https://api-dashboard.search.brave.com/app/subscriptions/subscribe |
| 6 | > |
| 7 | > **Two-step flow**: This endpoint requires POI IDs from a prior web search. |
| 8 | > |
| 9 | > 1. Call `web-search` with `result_filter=locations` to get POI IDs from `locations.results[].id` |
| 10 | > 2. Pass those IDs to this endpoint to get AI-generated descriptions |
| 11 | |
| 12 | ## Quick Start (cURL) |
| 13 | |
| 14 | ### Get POI Description |
| 15 | ```bash |
| 16 | curl -s "https://api.search.brave.com/res/v1/local/descriptions?ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA%3D" \ |
| 17 | -H "Accept: application/json" \ |
| 18 | -H "Accept-Encoding: gzip" \ |
| 19 | -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" |
| 20 | ``` |
| 21 | |
| 22 | ### Multiple POIs |
| 23 | ```bash |
| 24 | curl -s "https://api.search.brave.com/res/v1/local/descriptions" \ |
| 25 | -H "Accept: application/json" \ |
| 26 | -H "Accept-Encoding: gzip" \ |
| 27 | -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \ |
| 28 | -G \ |
| 29 | --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \ |
| 30 | --data-urlencode "ids=loc4HTAVTJKP4RBEBZCEMBI3NG26YD4II4PATIHPDYI=" |
| 31 | ``` |
| 32 | |
| 33 | **Note**: POI IDs are opaque strings returned in web search `locations.results[].id`. They are valid for approximately 8 hours. The example IDs above are for illustration — fetch fresh IDs via `web-search` with `result_filter=locations`. |
| 34 | |
| 35 | ## Endpoint |
| 36 | |
| 37 | ```http |
| 38 | GET https://api.search.brave.com/res/v1/local/descriptions |
| 39 | ``` |
| 40 | |
| 41 | **Authentication**: `X-Subscription-Token: <API_KEY>` header |
| 42 | |
| 43 | ## Parameters |
| 44 | |
| 45 | | Parameter | Type | Required | Default | Description | |
| 46 | |--|--|--|--|--| |
| 47 | | `ids` | string[] | **Yes** | — | POI IDs from web search `locations.results[].id` (1-20, repeated: `?ids=a&ids=b`) | |
| 48 | |
| 49 | ## Response Format |
| 50 | |
| 51 | ### Response Fields |
| 52 | |
| 53 | | Field | Type | Description | |
| 54 | |--|--|--| |
| 55 | | `type` | string | Always `"local_descriptions"` | |
| 56 | | `results` | array | List of description objects (entries may be `null`) | |
| 57 | | `results[].type` | string | Always `"local_description"` | |
| 58 | | `results[].id` | string | POI identifier matching the request | |
| 59 | | `results[].description` | string? | AI-generated markdown description, or `null` if unavailable | |
| 60 | |
| 61 | ### Example Response |
| 62 | |
| 63 | ```json |
| 64 | { |
| 65 | "type": "local_descriptions", |
| 66 | "results": [ |
| 67 | { |
| 68 | "type": "local_description", |
| 69 | "id": "loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=", |
| 70 | "description": "### Overview\nA cozy neighborhood cafe known for its **artisanal coffee**..." |
| 71 | } |
| 72 | ] |
| 73 | } |
| 74 | ``` |
| 75 | |
| 76 | ## Getting POI IDs |
| 77 | |
| 78 | POI IDs come from the **Web Search API** (`web-search`) with `result_filter=locations`: |
| 79 | |
| 80 | ```bash |
| 81 | # 1. Search for local businesses |
| 82 | curl -s "https://api.search.brave.com/res/v1/web/search?q=restaurants+san+francisco&result_filter=locations" \ |
| 83 | -H "Accept: application/json" \ |
| 84 | -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" |
| 85 | |
| 86 | # 2. Extract POI IDs from locations.results[].id |
| 87 | # 3. Use those IDs with local/pois and local/descriptions |
| 88 | ``` |
| 89 | |
| 90 | ## Use Cases |
| 91 | |
| 92 | - **Local business overview**: Pair with `local-pois` to get both structured data (hours, ratings) and narrative descriptions |
| 93 | - **Travel/tourism enrichment**: Add descriptive context to POIs for travel planning or destination guides |
| 94 | - **Search results augmentation**: Supplement web search results with AI-generated summaries of local businesses |
| 95 | |
| 96 | ## Notes |
| 97 | |
| 98 | - **Always markdown**: Descriptions use `###` headings, bullet lists, **bold**/*italics* — always formatted as markdown |
| 99 | - **Travel-guide tone**: Typically 200-400 words covering what makes the POI notable |
| 100 | - **AI-generated**: Descriptions are AI-generated based on web search context, not sourced from business profiles |
| 101 | - **Availability**: Not all POIs have descriptions — `description` may be `null` |
| 102 | - **Max IDs**: Up to 20 IDs per request |