Blog/开发者工具/

微信搜一搜公开数据 API | SandBase

用一个 REST API 查询微信搜一搜的公开结果和视频。无需微信登录、无需 SDK——一个 SandBase 密钥,为 Agent 工作流而生。

深色电影质感画面:微信搜一搜结果与视频数据经由同一条 API 管道汇入 Agent 内核

微信搜一搜是中国主导级社交超级应用里的搜索框——一扇望向微信各内容面公开结果和视频的窗口。这可以映射到话题研究、内容监测和趋势发现等场景。可要用程序去拿这些数据,通常意味着逆向 App、周旋于 token,而且 App 一变你就得重写一遍采集器。

SandBase 的微信搜一搜公开数据 API 免去了这些前置成本。它通过普通的 REST 端点查询微信搜一搜的公开结果和视频——只用一个 SandBase API 密钥,不需要登录微信、也不需要 SDK。端点 API 参考是每个参数和响应信封的权威来源;下面的业务载荷字段名来自我实际跑的一次搜索调用(测试于 2026-09-27,UTC),仅作为一次观测到的结构展示——请以真实响应为准核对,因为负载会随时间变化。

这不是微信官方开放平台。 当你需要经过授权的会员操作,或需要有正式授权协议的数据时,请走微信官方渠道。当你的工作流需要用于研究和监测的公开、只读数据时,用 SandBase。想上手?获取 SandBase API 密钥,然后浏览微信搜一搜端点。

先说结论

  • 两个端点:wechat-search/v2/search 做通用结果,wechat-search/v2/search-videos 做视频。
  • 本文的 Model API 端点用 POST /v1/api/wechat-search/<path> 调用——只传该端点的参数,无 SDK,一个 SANDBASE_API_KEY。
  • 两个都接一个 keyword;结果回来时带 offset、cursor、continue_flag、no_more 等分页字段。
  • 只返回公开、只读数据。你这边无需发帖、无需平台登录、不涉及私有数据;用 SandBase API 密钥鉴权即可。

你需要哪种微信搜一搜 API?

你的需求选择原因
发帖、以会员身份操作,或使用账号授权数据微信官方渠道会员和账号级操作应通过微信直接进行。
按关键词查询公开搜索结果或视频SandBase 微信搜一搜公开数据 API普通 REST、一个 SandBase 密钥、结构化 JSON,面向只读工作流。
私聊或仅账号可见的数据两种公开方案都不适用这类数据不在本篇公开数据指南范围内。

微信搜一搜 API 能取到什么

目录建立在一个 v2 面上,有两个搜索端点:

  • 通用搜索 — search 返回某关键词的公开结果,按类目分组,并带分页字段。
  • 视频搜索 — search-videos 返回某关键词的公开视频,分页约定相同。

动手前请以每个端点的线上 API 参考为准核对参数。

SandBase 微信搜一搜 API 页面:描述、能力标签与端点列表 SandBase 上的微信搜一搜 API 页面——带标签的概览和端点列表,每个端点都标了路径。

微信提供什么,SandBase 补什么

公开数据来自微信。SandBase 并不拥有或运营微信,它为符合条件的公开数据工作流提供一层统一的 API。每个能力都成为一个稳定端点,鉴权收敛为单个密钥,响应回来是可预测的 JSON——于是 Agent 可以沿着一条约定跑关键词搜索并翻页,而不用维护采集器。

快速上手:第一次调用

SandBase 暴露不止一个 API 面。目录里可能显示 /apis/v1/... 下的 GET 路径;本文使用每个端点 API 参考上标注的带厂商前缀的 Model API 路径。不要擅自改动 HTTP 方法或 URL——以你所选端点的参考为准。

跑一次关键词搜索:

import os
import requests

resp = requests.post(
    "https://api.sandbase.ai/v1/api/wechat-search/v2/search",
    headers={
        "Authorization": f"Bearer {os.environ['SANDBASE_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={"keyword": "人工智能"},
)
resp.raise_for_status()
body = resp.json()
if body.get("status") != "completed":
    error = body.get("error", {})
    raise RuntimeError(error.get("message", "微信搜一搜请求未完成"))

# 参考保证的是信封;业务字段随端点而定,
# 用防御式读取,并以真实响应核对确切路径。
data = body["outputs"][0]["data"]
print(data.get("keyword"), "| offset:", data.get("offset"), "| more:", data.get("continue_flag"))
categories = data.get("categories", [])
print(len(categories), "个类目")
curl -X POST https://api.sandbase.ai/v1/api/wechat-search/v2/search \
  -H "Authorization: Bearer $SANDBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "人工智能"}'

响应使用一致的信封:一个 id、一个 status、model 名称,以及——在 completed 运行上——一个 outputs 数组,其唯一元素在 data 下承载数据。failed 或 timeout 的运行则带 error 而没有 outputs,所以读取 outputs[0].data 前先根据 status 分支判断。对于搜索,负载带 keyword、一个 results 对象、一个 categories 列表和分页字段(offset、cursor、continue_flag、no_more)。下面是我那次搜索调用的一段裁剪后的真实响应(测试于 2026-09-27,UTC)——数值会随时间变化,所以请把字段名当作观测到的,并对照真实响应核对:

{
  "id": "677def62-bd58-48fb-bb31-ec694c49f80f",
  "status": "completed",
  "model": "wechat-search/v2/search",
  "outputs": [
    {
      "data": {
        "keyword": "人工智能",
        "offset": 18,
        "continue_flag": 1,
        "no_more": null,
        "categories": [],
        "results": {}
      }
    }
  ]
}

响应结构因端点而异——请检查一次真实响应,并逐端点确定精确的字段路径。

某个微信搜一搜端点的 SandBase API 参考,展示带厂商前缀的 URL 和响应结构 端点 API 参考是每个参数名和响应路径的事实来源。

能力地图

能力簇代表端点典型用途
通用搜索wechat-search/v2/search跨公开面的关键词发现
视频搜索wechat-search/v2/search-videos关键词视频发现

分页是每端点各自的请求约定——响应返回一个 offset/cursor 和一个 continue_flag/no_more 信号;下一次请求把 offset 或 cursor 传回去。请查阅每个端点的结构。

SandBase 微信搜一搜端点列表,展示搜索和视频搜索端点及其路径 微信搜一搜的两个端点,在 v2 面上。

在 Agent 工作流中链式调用

因为两个端点共享同一套鉴权和同一个响应信封,Agent 可以沿着一条约定跑一次搜索和一次视频搜索。一个常见的研究模式是这样:

  1. 搜关键词。 用一个 keyword 调用 wechat-search/v2/search 拿到分组结果,再在 continue_flag 指示还有更多时用返回的 offset/cursor 翻页。
  2. 搜视频。 用同一个 keyword 调用 wechat-search/v2/search-videos 拿公开视频,用同样方式翻页。
  3. 存储并做增量。 把每一页按结果 id 存下来,跨运行做 diff 以发现新增内容。

每一步都返回相同的 { id, status, model, outputs } 结构,所以你的 Agent 只需按 status 分支一次,并复用同一段读 JSON 的代码。

常见用例

微信搜一搜 API 做话题研究

用一个关键词运行 wechat-search/v2/search 梳理按类目分组的公开结果,再用 offset/continue_flag 翻页。输入:一个关键词。输出:分组结果加分页字段。端点:search。

微信搜一搜 API 做视频发现

用一个关键词运行 wechat-search/v2/search-videos 浮现某话题周边的公开视频。输入:一个关键词。输出:视频结果加分页字段。端点:search-videos。

微信搜一搜 API 做监测

按计划轮询一个关键词,跨运行 diff 结果,追踪一个话题的覆盖如何变化。输入:一个关键词。输出:你随时间比较的连续结果页。端点:search、search-videos。

为什么放在 API 层来做

你当然可以用无头浏览器指向微信搜一搜、解析 App 的负载,但这条路很脆:App 会变,token 会轮换,你维护的是采集器而不是在做产品。通过一层统一 API 来读,意味着你的代码依赖的是有名字的 JSON 字段和单个响应信封,而不是某个 App 内部实现。鉴权是一个密钥,而且因为两个端点都返回相同的 { id, status, model, outputs } 结构,重试、日志和错误处理都可以收进一个你写一次、两个都复用的辅助函数里。

正是这种一致性让工作流对 Agent 而言可组合。把一个关键词换成另一个、从 search 切到 search-videos,代码路径完全一样。实际的收益是:你的时间花在”结果对你的研究意味着什么”上,而不是花在维持一个采集器去追一个移动靶。当你需要的不止这两个读取时,在线上列表里查到合适的端点,并在接入前确认它的参数。

局限与边界

  • 仅公开、只读数据。 不发帖、不关注、不涉及私有或仅账号可见的数据。
  • 速率与量级。 把响应当作尽力而为的读取;作为客户端侧的韧性措施,遇到 HTTP 429 等瞬时错误时按退避策略重试。
  • 参数与结构随上游面而定。 两个端点都接一个 keyword;分页用 offset/cursor 加一个 continue_flag/no_more 信号。先看一次真实响应、读一遍结构。
  • 以线上参考核对端点。 可用性和字段可能变化;在依赖某个具体端点前先确认。
  • 这不是微信官方合作。 SandBase 提供对公开数据的统一访问;请就你的使用场景遵守微信条款和适用规则。

常见问题

我需要微信开发者应用或登录吗? 不需要。你用自己的 SANDBASE_API_KEY 向 SandBase 鉴权。这些读取端点不需要你这边有微信账号或 OAuth。

这两个端点各接什么? search 和 search-videos 都接一个 keyword。通用搜索把结果按类目分组;视频搜索返回视频。

分页怎么做? 响应返回一个 offset/cursor 和一个 continue_flag/no_more 信号;在 continue_flag 指示还有更多页时,下一次请求把 offset 或 cursor 传回去。请查阅每个端点的结构。

我能读私聊或仅账号可见的数据吗? 不能。这套 API 只返回公开搜索数据。私聊和账号授权内容不在范围内。

从一次搜索开始

创建一个 SandBase API 密钥,用一个关键词调用 search,在翻页或转到视频搜索之前先检查返回的结构。准备好后: