WeChat-Search-V2-API

搜视频号视频(时长/排序/时间筛选)/WeChat Channels Video Search

Changed on

[中文]

用途:

  • 专搜视频号视频(video 垂类),并支持搜索结果页里的「时长」「不限/最新/最热」排序与「时间」下拉。
  • 等价于综合搜索 /fetch_search(business_type=video)再叠加筛选,筛选项均实测有效。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 docID / feedNonceId 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • keyword: 搜索关键词(去空白后 1-100 字)。示例 美食
  • duration: 可选,默认 all。时长档(video 垂类专属)—— 不限 all/0 / 短(<5min) short/1 / 中(5-10min) medium/2 / 长(20min+) long/3,字符串键或整数均可,非法值报错(400)。
  • sort: 可选,默认 default。排序 —— 不限(相关性) default/0 / 最新(发布时间降序) latest/1 / 最热(点赞降序) hot/2,字符串键或整数均可,非法值报错(400)。
  • publish_time: 可选,默认 all。发布时间 —— 不限 all/0 / 最近一天 day/1 / 最近七天 week/2 / 最近半年 half_year/3,字符串键或整数均可,非法值报错(400)。
  • offset: 可选,默认 0(>=0)。首页传 0;翻页请用 cursor(只传 offset 无效)。
  • cursor: 可选。翻页游标,用法同综合搜索 /fetch_search。首页留空;翻页时把上一页响应返回的 cursor 原样传回(须同时重复上一页的 duration / sort / publish_time)。
  • raw: 可选,默认 True。True=原始搜索响应;False=精简解析。

返回:

  • 视频号视频搜索结果列表(结构同综合搜索的 video 垂类)

典型链路:

  • 💡 排序下拉里的「账号」选项不是排序,而是切到公众号垂类 —— 用综合搜索 /fetch_search(business_type=account)。
  • 💡 拿视频号详情(媒体下载地址 / decode_key):视频结果项不直接含媒体,只给 exportId(+ jumpInfo.extInfo.feedNonceId)。要下载 / 解密:取 exportId → 走视频号 V2 接口 /api/v1/wechat_channels/v2/fetch_video_detail(传 export_id)拿 media(url / url_token / decode_key)和明文 username。结果字段与响应结构说明同 /fetch_search。

[English]

Purpose:

  • Search WeChat Channels videos specifically (video vertical), with the result page's "duration" filter, "relevance/newest/most-liked" sort, and "time" dropdown.
  • Equivalent to universal search /fetch_search (business_type=video) plus filters; all filters are verified to work.
  • Price: $0.01 per request
  • ⏱️ Due to WeChat server latency, this endpoint responds slowly; please set your client request timeout to 30 seconds — a timeout that is too small may result in being billed without receiving the response.
  • ⚠️ Large-integer ID precision: IDs such as docID / feedNonceId in the response are 64-bit big integers beyond JavaScript's safe-integer range (2^53-1). Always receive / pass such IDs as strings (parse JSON with json-bigint or read them as text), never through JS Number. Swagger UI rounds the trailing digits of huge integers in its docs view — this is expected and does not affect the actual data returned by the API.

Parameters:

  • keyword: Search keyword (1-100 chars after trimming). E.g. 美食
  • duration: Optional, default all. Duration tier (Channels video only) — all/0 / short/1 (<5min) / medium/2 (5-10min) / long/3 (20min+); string key or integer, invalid values rejected (400).
  • sort: Optional, default default. Sort — default/0 (relevance) / latest/1 (newest) / hot/2 (most liked); string key or integer, invalid values rejected (400).
  • publish_time: Optional, default all. Publish time — all/0 / day/1 / week/2 / half_year/3; string key or integer, invalid values rejected (400).
  • offset: Optional, default 0 (>=0). Pass 0 for the first page; use cursor to paginate (offset alone does not work).
  • cursor: Optional. Pagination cursor, same usage as universal search /fetch_search. Leave empty for the first page; for the next page pass back the cursor from the previous response (repeat the same duration / sort / publish_time).
  • raw: Optional, default True. True=raw search response; False=simplified parsing.

Return:

  • Channels video search result list (same structure as the video vertical of universal search)

Typical chains:

  • 💡 The "account" option in the sort dropdown is not a sort — it switches to the official-account vertical; use universal search /fetch_search (business_type=account).
  • 💡 To get Channels video detail (media download address / decode_key): video result items do not contain media directly — only exportId (+ jumpInfo.extInfo.feedNonceId). To download / decrypt: take exportId → call the Channels V2 endpoint /api/v1/wechat_channels/v2/fetch_video_detail (pass export_id) to get media (url / url_token / decode_key) and the plain username. Result fields and response structure are the same as /fetch_search.
post/api/v1/wechat_search/v2/fetch_search_videos

Request

  • Base URL
    https://api.tikhub.io (the document declares no server; this is the origin it was published from)
  • Auth
    HTTP bearer

Request body

keywordstring required

搜索关键词(1-100 字)/Search keyword (1-100 chars)

offsetinteger

首页传 0;翻页请用 cursor(只传 offset 无效)/Pass 0 for the first page; use cursor to paginate (offset alone does not work)

cursorstring nullable

翻页游标,用法同综合搜索:首页留空;翻页时把上一页响应返回的 cursor 原样传回/Pagination cursor, same as universal search: leave empty for the first page; pass back the cursor from the previous response

rawboolean

True=原始搜索响应;False=精简解析结构/True=raw search response; False=simplified parsed structure

Example request

{
  "keyword": "美食"
}

Response

Successful Response

codeinteger

HTTP status code | HTTP状态码

request_idstring nullable

Unique request identifier | 唯一请求标识符

messagestring

Response message (EN-US) | 响应消息 (English)

message_zhstring

Response message (ZH-CN) | 响应消息 (中文)

supportstring

Support message | 支持消息

timestring

The time the response was generated | 生成响应的时间

time_stampinteger

The timestamp the response was generated | 生成响应的时间戳

time_zonestring

The timezone of the response time | 响应时间的时区

docsstring nullable

Link to the API Swagger documentation for this endpoint | 此端点的 API Swagger 文档链接

cache_messagestring nullable

Cache message (EN-US) | 缓存消息 (English)

cache_message_zhstring nullable

Cache message (ZH-CN) | 缓存消息 (中文)

cache_urlstring nullable

The URL to access the cached result | 访问缓存结果的 URL

routerstring

The endpoint that generated this response | 生成此响应的端点

paramsunknown
dataunknown

Changes