Local Pois

by brave62793e0c49edNo license183 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 2 weeks ago

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 information including ratings, hours, contact info. Max 20 IDs.

Instructions onlyResearch & Analysis
AI-generated overview

Fetches full local business details from Brave Search POI IDs, including ratings, hours, contact info and distance.

What it does
Documents the Brave Search local POIs endpoint, which takes one to twenty POI IDs and returns full business information. Returned fields include name, address, phone and email, ratings and review counts, opening hours, coordinates, distance, categories, price range and cuisine. It also explains how to obtain POI IDs from a prior place search or web search with a locations result filter.
When to use it
Use when you already have POI IDs from a local place search or a web search with the locations filter and need the underlying business details. It suits local business lookup, restaurant filtering by cuisine, rating or price, and checking whether a business is currently open.
Requirements
Requires a Brave Search API key sent as an X-Subscription-Token header, network access to api.search.brave.com, and POI IDs obtained from a prior search. Optional latitude and longitude headers enable distance calculation. Ships no scripts; instructions only.

Local POIs (Search API)

Requires API Key: Get one at https://api.search.brave.com

Plan: Included in the Search plan. See https://api-dashboard.search.brave.com/app/subscriptions/subscribe

Two-step flow: This endpoint requires POI IDs from a prior search.

  1. Get POI IDs from local-place-search, or from web-search with result_filter=locations (locations.results[].id)
  2. Pass those IDs to this endpoint to get full business details

Quick Start (cURL)

Get POI Details

bash
curl -s "https://api.search.brave.com/res/v1/local/pois" \  -H "Accept: application/json" \  -H "Accept-Encoding: gzip" \  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \  -G \  --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA="

Multiple POIs with Location Headers

bash
curl -s "https://api.search.brave.com/res/v1/local/pois" \  -H "Accept: application/json" \  -H "Accept-Encoding: gzip" \  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \  -H "X-Loc-Lat: 37.7749" \  -H "X-Loc-Long: -122.4194" \  -G \  --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \  --data-urlencode "ids=loc4HTAVTJKP4RBEBZCEMBI3NG26YD4II4PATIHPDYI=" \  --data-urlencode "units=imperial"

Note: POI IDs are opaque strings returned in web search locations.results[].id. IDs are ephemeral and expire after ~8 hours. The example IDs above are for illustration — fetch fresh IDs via web-search with result_filter=locations. Use --data-urlencode since IDs may contain =.

Endpoint

http
GET https://api.search.brave.com/res/v1/local/pois

Authentication: X-Subscription-Token: <API_KEY> header

Parameters

ParameterTypeRequiredDefaultDescription
idsstring[]Yes—POI IDs from web search results (1-20)
search_langstringNoenLanguage preference (2+ char language code)
ui_langstringNoen-USUI language (locale code, e.g., "en-US")
unitsstringNonullmetric (km) or imperial (miles)

Location Headers (Optional)

For distance calculation from user location:

HeaderTypeRangeDescription
X-Loc-Latfloat-90.0 to 90.0User latitude
X-Loc-Longfloat-180.0 to 180.0User longitude

Response Fields

The response has type: "local_pois" and a results array of LocationResult objects:

FieldTypeDescription
titlestringBusiness/POI name
urlstringCanonical URL for the location
provider_urlstringProvider page URL
typestringAlways "location_result"
idstringPOI identifier (opaque string, valid ~8 hours)
descriptionstring?Short description
postal_address.typestringAlways "PostalAddress"
postal_address.displayAddressstringFormatted display address
postal_address.streetAddressstring?Street address
postal_address.addressLocalitystring?City
postal_address.addressRegionstring?State/region
postal_address.postalCodestring?Postal/ZIP code
postal_address.countrystring?Country code
contact.telephonestring?Phone number
contact.emailstring?Email address
rating.ratingValuefloat?Average rating (≥0)
rating.bestRatingfloat?Max possible rating
rating.reviewCountint?Number of reviews
rating.profile.namestring?Rating provider name
rating.profile.urlstring?Rating provider URL
opening_hours.current_dayobject[]?Today's hours (abbr_name, full_name, opens, closes)
opening_hours.daysobject[][]?Hours for each day of the week (same structure)
coordinates[float, float]?[latitude, longitude] tuple
distance.valuefloat?Distance from user location
distance.unitsstring?Distance unit (km or miles)
categoriesstring[]Business categories (default [])
price_rangestring?Price indicator ($, $$, $$$, $$$$)
serves_cuisinestring[]?Cuisine types (restaurants)
thumbnail.srcstring?Thumbnail image URL
thumbnail.originalstring?Original image URL
profilesobject[]?External profiles (name, url, long_name, img)
reviews.reviews_in_foreign_languageboolWhether reviews in a foreign language are available
pictures.resultsobject[]?Photo thumbnails
actionobject?Action to take — has type (string) and url (string)
resultsobject[]?Related web results (LocationWebResult with meta_url)
timezonestring?IANA timezone (e.g., America/Los_Angeles)
timezone_offsetint?UTC timezone offset

Example Response

json
{  "type": "local_pois",  "results": [    {      "type": "location_result",      "title": "Park Mediterranean Grill",      "url": "https://yelp.com/biz/park-mediterranean-grill-sf",      "provider_url": "https://yelp.com/biz/park-mediterranean-grill-sf",      "id": "loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=",      "postal_address": {        "type": "PostalAddress",        "displayAddress": "123 Main St, San Francisco, CA 94102",        "streetAddress": "123 Main St",        "addressLocality": "San Francisco",        "addressRegion": "CA",        "postalCode": "94102",        "country": "US"      },      "contact": { "telephone": "+1 415-555-0123" },      "thumbnail": {        "src": "https://example.com/thumb.jpg",        "original": "https://example.com/original.jpg"      },      "rating": {        "ratingValue": 4.5,        "bestRating": 5.0,        "reviewCount": 234,      },      "opening_hours": {        "current_day": [          { "abbr_name": "Mon", "full_name": "Monday", "opens": "07:00", "closes": "21:00" }        ]      },      "coordinates": [37.7749, -122.4194],      "distance": { "value": 0.3, "units": "miles" },      "categories": ["Mediterranean", "Greek"],      "price_range": "$$",      "serves_cuisine": ["Mediterranean", "Greek"],      "timezone": "America/Los_Angeles"    }  ]}

Getting POI IDs

local-place-search returns POI IDs directly. They also come from the Web Search API (web-search) with result_filter=locations:

bash
# 1. Search for local businessescurl -s "https://api.search.brave.com/res/v1/web/search?q=coffee+shops+near+me&result_filter=locations" \  -H "Accept: application/json" \  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \  -H "X-Loc-Lat: 37.7749" \  -H "X-Loc-Long: -122.4194"
# 2. Extract POI IDs from locations.results[].id# 3. Use those IDs with this endpoint

Use Cases

  • Local business lookup: Retrieve full details (hours, contact, address) for POIs surfaced in web search
  • Restaurant discovery pipeline: Search for restaurants, fetch POI details, filter by cuisine/rating/price_range
  • Business hours checker: Get opening_hours for a business to determine if currently open
  • Location-aware application: Combine with location headers to get distance calculations for nearby POIs

Notes

  • ID format: Opaque strings (use --data-urlencode for cURL)
  • Units: metric or imperial for distance measurement preference
  • Max IDs: Up to 20 IDs per request

Source and attribution

Source:brave/brave-search-skillsinskills/local-poisat commit62793e0

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal