其他
需要按 POI ID 获取本地商户/POI 的评分…
已有来自 local-place-search 或 web-search(result_filter=locations) 的 POI ID,并需要批量查询本地商户完整详情时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
需要按 POI ID 获取本地商户/PO特定
解决思路
- 先获取 Brave Search API Key:访问 https://api.search.brave.com 申请。
- 确认账号已订阅包含该端点的 Search 套餐:参考 https://api-dashboard.search.brave.com/app/subscriptions/subscribe。
- 按两步流程操作:第一步先获取 POI ID;第二步把这些 ID 传给本端点获取完整商户详情。
- 获取 POI ID 的来源一:调用 `local-place-search`,它会直接返回 POI ID。
- 获取 POI ID 的来源二:调用 `web-search`,设置 `result_filter=locations`,然后从 `locations.results[].id` 提取 POI ID。
- 获取 POI ID 的 cURL 示例:`curl -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"`。
- 调用端点:`GET https://api.search.brave.com/res/v1/local/pois`。
- 认证:在请求头设置 `X-Subscription-Token: <API_KEY>`。
- 必填参数 `ids`:类型 string[],传入从 web search 结果得到的 POI ID,每次 1-20 个。
- 可选参数 `search_lang`:类型 string,默认 `en`,传 2 位以上语言代码作为语言偏好。
- 可选参数 `ui_lang`:类型 string,默认 `en-US`,传 locale 代码(如 `en-US`)作为 UI 语言。
- 可选参数 `units`:类型 string,默认 null,传 `metric`(km)或 `imperial`(miles)控制距离单位。
- 可选定位头 `X-Loc-Lat`:float,范围 -90.0 到 90.0,表示用户纬度,用于计算距离。
- 可选定位头 `X-Loc-Long`:float,范围 -180.0 到 180.0,表示用户经度,用于计算距离。
- 单 POI 查询 cURL:`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="`。
- 多 POI + 定位头查询 cURL:重复传 `--data-urlencode "ids=..."` 传多个 ID,同时加 `-H "X-Loc-Lat: 37.7749"`、`-H "X-Loc-Long: -122.4194"`,可加 `--data-urlencode "units=imperial"`;完整示例:`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"`。
- 处理 POI ID:ID 是不透明字符串,可能包含 `=`,cURL 中必须用 `--data-urlencode`。
- 注意 ID 时效:ID 约 8 小时后过期;示例 ID 仅作说明,应通过 `web-search` + `result_filter=locations` 获取新 ID。
- 解析响应顶层:`type` 为 `local_pois`,`results` 是 `LocationResult` 对象数组。
- 读取基础字段:`title`(商户/POI 名称)、`url`(规范 URL)、`provider_url`(提供商页面 URL)、`type`(固定为 `location_result`)、`id`(POI 标识符,约 8 小时有效)、`description`(短描述)。
- 读取地址字段:`postal_address.type`(固定 `PostalAddress`)、`postal_address.displayAddress`(格式化地址)、`postal_address.streetAddress`、`postal_address.addressLocality`、`postal_address.addressRegion`、`postal_address.postalCode`、`postal_address.country`。
- 读取联系字段:`contact.telephone`、`contact.email`。
- 读取评分字段:`rating.ratingValue`、`rating.bestRating`、`rating.reviewCount`、`rating.profile.name`、`rating.profile.url`。
- 读取营业时间:`opening_hours.current_day` 为当天营业时间对象数组(含 `abbr_name`、`full_name`、`opens`、`closes`);`opening_hours.days` 为每周每天的时间数组(同结构)。
- 读取位置与距离:`coordinates` 为 `[latitude, longitude]`;`distance.value` 为距用户位置的距离;`distance.units` 为 `km` 或 `miles`。
- 读取分类与餐饮字段:`categories`(默认 `[]`)、`price_range`(`$`、`$$`、`$$$`、`$$$$`)、`serves_cuisine`(餐厅菜系类型)。
- 读取媒体与外部资料:`thumbnail.src`、`thumbnail.original`、`profiles`(含 `name`、`url`、`long_name`、`img`)、`pictures.results`。
- 读取其他字段:`reviews.reviews_in_foreign_language`、`action`(含 `type`、`url`)、单个 `LocationResult` 内的 `results`(相关 web 结果 `LocationWebResult`,含 `meta_url`)、`timezone`(IANA 时区,如 `America/Los_Angeles`)、`timezone_offset`(UTC 偏移)。
- 用响应字段支持常见操作:本地商户查询时读取 hours/contact/address;餐厅发现流水线时按 `serves_cuisine`/`rating`/`price_range` 过滤;营业时间检查时读取 `opening_hours` 判断当前是否营业;位置感知应用时结合定位头与 `distance` 获取距离。
- 限制:每次请求最多 20 个 ID。
适用边界 · 注意事项
- 没有 Brave Search API Key 或未订阅包含该端点的 Search 套餐时不要调用。
- 没有有效 POI ID(例如未先执行 local-place-search 或 web-search(result_filter=locations))或 ID 已超过约 8 小时过期时不要调用。
- 单次需要查询超过 20 个 POI ID 时不要直接请求,应分批。