Skip to main content

接口列表概览

覆盖微信公众号(WeChat Media Platform)与微信视频号(Channels)的数据检索与详情提取。调用成功每次扣除 0.10 Credits。

获取视频号账号信息/Get WeChat Channels Account Info

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_channel_info

[中文]

用途:

  • 获取指定视频号账号的「更多信息」:基础信息分区(IP 归属地 / 资料所在地 / 视频号 ID=sph 公开号)+ 认证信息分区(服务单位 / 主体类型 / 互联网新闻信息服务许可证编号 / 服务类别 / 认证时间)。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • username: 视频号 finder username(v2_…@finder 格式),示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。
    • 怎么拿到它:
      • fetch_video_detailfetch_user_videos 响应里每个视频对象的 username 字段(最常用)
      • fetch_channel_id_to_username:把视频号 ID(sph… 短号,如 sphi9BjV8GK0Zsl)转成 username
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 视频号账号的基础信息与认证信息

响应结构与 JSON Path:

raw=false(精简):

  • 账号 username: $.data.finder_username
  • 视频号 ID(sph 短号): $.data.channel_id
  • 分区列表(原样保留分区结构): $.data.sections[N].title$.data.sections[N].items[M].title / .content
  • 扁平化后的「标题→内容」字典(最常用): $.data.info,例如 $.data.info['视频号ID']$.data.info['IP归属地']$.data.info['服务单位']$.data.info['主体类型']$.data.info['互联网新闻信息服务许可证编号']$.data.info['服务类别']$.data.info['认证时间']

raw=true(原始):

  • 状态码: $.data.baseResponse.ret(0=成功)
  • 分区数组(camelCase): $.data.sections[N].title$.data.sections[N].items[M].title / .content / .type / .jumpInfo
  • 对应关系: raw=false 的 info/channel_id 对应 raw=true 的 sections[].items[](按 title 扁平化、并剥离富文本图片标记);raw=true 不含 info 扁平字典与 channel_id,需自行从 sections 提取。

[English]

Purpose:

  • Get the “More Info” of a WeChat Channels account: basic info section (IP location / profile location / Channel ID = public sph ID) + verification section (service unit / entity type / internet news service license number / service category / verification time).
  • 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.

Parameters:

  • username: WeChat Channels finder username (v2_…@finder format), e.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People’s Daily).
    • How to get it:
      • The username field of each video object in fetch_video_detail / fetch_user_videos responses (most common)
      • fetch_channel_id_to_username: convert a Channel ID (sph… short ID, e.g. sphi9BjV8GK0Zsl) into a finder username
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Basic info and verification info of the WeChat Channels account

Response structure & JSON Path:

raw=false (simplified):

  • Account username: $.data.finder_username
  • Channel ID (sph short ID): $.data.channel_id
  • Section list (original section structure preserved): $.data.sections[N].title, $.data.sections[N].items[M].title / .content
  • Flattened “title→content” dict (most useful): $.data.info, e.g. $.data.info['视频号ID'], $.data.info['IP归属地'], $.data.info['服务单位'], $.data.info['主体类型'], $.data.info['互联网新闻信息服务许可证编号'], $.data.info['服务类别'], $.data.info['认证时间']

raw=true (raw):

  • Status code: $.data.baseResponse.ret (0=success)
  • Section array (camelCase): $.data.sections[N].title, $.data.sections[N].items[M].title / .content / .type / .jumpInfo
  • Mapping: info/channel_id of raw=false correspond to sections[].items[] of raw=true (flattened by title with rich-text image markers stripped); raw=true does not contain the flattened info dict or channel_id, extract them from sections yourself.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

视频号ID转finder username/Convert Channel ID to Finder Username

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_channel_id_to_username

[中文]

用途:

  • 把对外可见的视频号 ID(sph… 短号)解析成 finder username(v2_…@finder)。
  • 拿到 username 后即可调用 fetch_user_videosfetch_channel_infofetch_user_profile 等接口。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • channel_id: 视频号 ID(sph… 短号),示例 sphi9BjV8GK0Zsl(人民日报)。要求为 sph 开头的短号。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 解析出的 finder username 及账号昵称、简介

响应结构与 JSON Path:

raw=false(精简):

  • 入参回显: $.data.channel_id
  • 解析出的 finder username(可直接喂下游接口): $.data.username
  • 账号昵称(已剥离搜索高亮标记): $.data.nickname
  • 账号简介: $.data.desc(可能为 null)
  • 未命中时: $.data.username 为 null,且带 $.data.error 说明

raw=true(原始):

  • 结果分组: $.data.data[N](每组 type + items[] / subBoxes[].items[]
  • 账号项里的 finder username: $.data.data[N].items[M].jumpInfo.userName$.data.data[N].items[M].noticeParam.finderUsername
  • 标题 / 简介: $.data.data[N].items[M].title / .desc
  • 其它: $.data.query(回显查询)、$.data.continueFlag$.data.offset
  • 对应关系: raw=false 的 username / nickname / desc 即从 raw=true 的 data[].items[](或 subBoxes[].items[])中首个 @finder 账号项提取。

[English]

Purpose:

  • Resolve a publicly visible Channel ID (sph… short ID) into a finder username (v2_…@finder).
  • With the username you can then call fetch_user_videos, fetch_channel_info, fetch_user_profile, etc.
  • 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.

Parameters:

  • channel_id: Channel ID (sph… short ID), e.g. sphi9BjV8GK0Zsl (People’s Daily). Must start with sph.
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Resolved finder username plus account nickname and description

Response structure & JSON Path:

raw=false (simplified):

  • Input echo: $.data.channel_id
  • Resolved finder username (feed directly into downstream endpoints): $.data.username
  • Account nickname (search highlight markers stripped): $.data.nickname
  • Account description: $.data.desc (may be null)
  • On miss: $.data.username is null with an explanation at $.data.error

raw=true (raw):

  • Result groups: $.data.data[N] (each group has type + items[] / subBoxes[].items[])
  • Finder username inside account items: $.data.data[N].items[M].jumpInfo.userName or $.data.data[N].items[M].noticeParam.finderUsername
  • Title / description: $.data.data[N].items[M].title / .desc
  • Others: $.data.query (query echo), $.data.continueFlag, $.data.offset
  • Mapping: username / nickname / desc of raw=false are extracted from the first @finder account item in data[].items[] (or subBoxes[].items[]) of raw=true.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号用户作品列表/Get WeChat Channels User Videos

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_user_videos

[中文]

用途:

  • 获取指定视频号账号主页的作品列表。
  • 每个视频带媒体地址 media(含 url / url_token / full_url / decode_key),可直接下载并解密。
  • 支持翻页获取更多作品。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 id / object_nonce_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • username: 视频号 finder username(v2_…@finder 格式),示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。来源见 fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username 文档。
  • last_buffer: 可选,翻页游标(base64)。首页留空;当响应 up_continue 为真时,传上一页响应的 last_buffer 取下一页。(base64 含 +//= 等字符,故走 body 而非 query。)
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。

返回:

  • 用户作品列表及翻页游标

响应结构与 JSON Path:

raw=false(精简,推荐):

  • 顶层: $.data.username / $.data.nickname / $.data.count(本页视频数)/ $.data.up_continue(是否有下一页)/ $.data.last_buffer(翻页游标)
  • 每个视频 $.data.videos[N](N 为下标):
    • id(作品 objectId,喂 fetch_video_detail / fetch_video_comments): $.data.videos[N].id
    • object_nonce_id: $.data.videos[N].object_nonce_id
    • username / nickname / title: $.data.videos[N].username
    • 互动计数: $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • 发布时间: $.data.videos[N].create_time
    • 位置: $.data.videos[N].location

raw=true(原始):

  • 状态码: $.data.baseResponse.ret
  • 视频数组(注意是 object 单数,camelCase): $.data.object[N]
  • 翻页: $.data.upContinueFlag$.data.lastBuffer(另附别名 $.data.last_buffer
  • 账号资料: $.data.contact(昵称/签名/认证 authInfo 等)、$.data.finderUserInfo
  • 对应关系: raw=false 的 videos[] 对应 raw=true 的 object[]nickname 取自 finderUserInfo / contact.nickname

重要提示(视频下载与解密):

  • 直接访问响应里的 url 可能打不开视频页面 —— 微信视频号做了防盗链。把 urlurl_token 拼成完整 URL 再用任意 HTTP 客户端下载(能打开 = HTTP 200,不代表能播放,文件是加密的)。
  • ⚠️ 视频文件加密说明: 下载的 MP4 若无法播放即为加密文件。请使用接口返回的 decode_key 字段和加密视频文件进行解密。
  • ⚠️ 重要: 微信每次请求都返回新的加密链接和 decode_key(即使同一视频)。务必保证 decode_key 与下载的加密文件来自同一次 API 响应,否则解密失败。
  • JSON Path(逐个视频取 —— N 为下标):
    • raw=false推荐做媒体下载)—— $.data.videos[N].media 是单个对象:
      • 视频 CDN 链接(不带 Token): $.data.videos[N].media.url
      • 视频 CDN 链接的 Token: $.data.videos[N].media.url_token
      • 拼接好的完整 CDN URL(= url + url_token,可直接用): $.data.videos[N].media.full_url
      • 视频解密密钥(每次请求都不一样): $.data.videos[N].media.decode_key
    • raw=true —— media 嵌在 $.data.object[N].objectDesc.media[0](camelCase: url / urlToken / decodeKey,完整 URL = url + urlToken)。做媒体下载建议直接用 raw=false,路径更干净。
  • 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

[English]

Purpose:

  • Get the video list from a WeChat Channels account’s homepage.
  • Each video carries a media object (url / url_token / full_url / decode_key) ready for download and decryption.
  • Supports pagination for more videos.
  • 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 id / object_nonce_id 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:

  • username: WeChat Channels finder username (v2_…@finder format), e.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People’s Daily). See fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username docs for how to obtain it.
  • last_buffer: Optional pagination cursor (base64). Leave empty for the first page; when up_continue in the response is truthy, pass the previous page’s last_buffer to get the next page. (base64 contains +//= characters, hence body instead of query.)
  • raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).

Return:

  • User video list with pagination cursor

Response structure & JSON Path:

  • Top level: $.data.username / $.data.nickname / $.data.count (videos on this page) / $.data.up_continue (has next page) / $.data.last_buffer (pagination cursor)
  • Each video $.data.videos[N] (N is the index):
    • id (video objectId, feed into fetch_video_detail / fetch_video_comments): $.data.videos[N].id
    • object_nonce_id: $.data.videos[N].object_nonce_id
    • username / nickname / title: $.data.videos[N].username etc.
    • Interaction counts: $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • Publish time: $.data.videos[N].create_time
    • Location: $.data.videos[N].location

raw=true (raw):

  • Status code: $.data.baseResponse.ret
  • Video array (note: singular object, camelCase): $.data.object[N]
  • Pagination: $.data.upContinueFlag, $.data.lastBuffer (alias $.data.last_buffer also provided)
  • Account profile: $.data.contact (nickname/signature/authInfo etc.), $.data.finderUserInfo
  • Mapping: videos[] of raw=false corresponds to object[] of raw=true; nickname comes from finderUserInfo / contact.nickname.

Important Note (video download & decryption):

  • Accessing the url field directly may fail to open the video page — WeChat Channels uses anti-hotlinking. Concatenate url and url_token into a full URL and download via any HTTP client (opening = HTTP 200, does not mean playable, the file is encrypted).
  • ⚠️ Video Encryption Notice: If the downloaded MP4 cannot be played, it is encrypted. Use the decode_key field from the response together with the encrypted file to decrypt it.
  • ⚠️ Important: WeChat returns a new encrypted link and decode_key on every request (even for the same video). Make sure the decode_key and the downloaded encrypted file come from the same API response, otherwise decryption will fail.
  • JSON Path (per video — N is the index):
    • raw=false (recommended for media download) — $.data.videos[N].media is a single object:
      • Video CDN link (without Token): $.data.videos[N].media.url
      • Token of the video CDN link: $.data.videos[N].media.url_token
      • Pre-concatenated full CDN URL (= url + url_token, ready to use): $.data.videos[N].media.full_url
      • Video decryption key (different on every request): $.data.videos[N].media.decode_key
    • raw=true — media is nested at $.data.object[N].objectDesc.media[0] (camelCase: url / urlToken / decodeKey, full URL = url + urlToken). For media download, prefer raw=false for cleaner paths.
  • Online decryption tool: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • Self-deployable decryption API (one-click Docker deployment): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号作品详情/Get WeChat Channels Video Detail

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_video_detail

[中文]

用途:

  • 获取视频号作品详情,返回作品完整详情(媒体地址 media + decode_key)。
  • 支持三种入参,三选一、优先级 object_id > export_id > share_url
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • object_id: 最优先,可选。作品 objectId(纯数字),示例 14941130915890399732。可从 fetch_user_videos / fetch_collection_videos 的视频 id 获取。
  • export_id: 其次,可选。搜索结果里的 exportId(须以 export/ 开头)。搜索返回的视频项往往只有 exportId、没有明文 object_id —— 此时直接传 export_id(会过期,需尽快用)。
  • object_nonce_id: 可选。搜索结果里的 feedNonceId(纯数字),搭配上面两者提升命中率。
  • share_url: 最后,可选。视频号分享短链(https://weixin.qq.com/sph/…),示例 https://weixin.qq.com/sph/AH3sCoIPhH。仅在 object_id 与 export_id 都为空时使用。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。
  • 三者须至少传一个;share_url 需为视频号分享短链(https://weixin.qq.com/sph/…)。

返回:

  • 作品完整详情(含媒体下载地址与解密密钥)

典型链路(从作品到账号 / 更多作品):

  1. 本接口 fetch_video_detail → 响应含明文 id(objectId)、usernamev2_…@finder)、mediaurl / url_token / decode_key
  2. 拿到的 username 再喂 → fetch_channel_info(账号资料 / 认证)、fetch_user_videos(该号更多作品)、fetch_user_profile(主页统计)、fetch_video_comments(本视频评论,用第 1 步的 id

响应结构与 JSON Path:

raw=false(精简,推荐):

  • data 即单个视频对象:
    • id(作品 objectId): $.data.id
    • usernamev2_…@finder)/ nickname / title: $.data.username
    • 互动计数: $.data.read_count / .like_count / .fav_count / .forward_count / .comment_count
    • 发布时间 / 类型 / 位置: $.data.create_time / $.data.object_type / $.data.location
    • 媒体对象: $.data.media(见下方下载/解密)

raw=true(原始):

  • 状态码: $.data.baseResponse.ret
  • 命中回执: $.data.objectResponses[0].objectId / .exportId
  • 视频对象(注意是 objects 复数,camelCase): $.data.objects[0]
  • 对应关系: raw=false 的扁平字段对应 raw=true 的 objects[0]

重要提示(视频下载与解密):

  • 直接访问响应返回的 url 字段可能无法正确打开视频页面 —— 微信对视频号页面做了防盗链处理。把 urlurl_token 拼成一个完整 URL 再在浏览器 / HTTP 客户端打开。(注:能打开 = HTTP 200,不代表视频能正常播放,因为视频文件是加密的。)
  • ⚠️ 视频文件加密说明: MP4 无法播放即为加密。请使用接口返回的 decode_key 字段和加密视频文件进行解密。
  • ⚠️ 重要: 微信接口每次请求都会返回新的加密文件链接和 decode_key,即使是同一个视频。请确保用于解密的 decode_key 与下载的加密视频文件来自同一次 API 响应,否则解密会失败。
  • JSON Path(区分 raw):
    • raw=false(推荐做媒体下载)—— $.data.media 是单个对象:
      • 视频 CDN 链接(不带 Token): $.data.media.url
      • 视频 CDN 链接的 Token: $.data.media.url_token
      • 拼接好的完整 CDN URL(= url + url_token,可直接用): $.data.media.full_url
      • 视频解密密钥(每次请求都不一样): $.data.media.decode_key
    • raw=true —— $.data.objects[0].objectDesc.media[0]:
      • 视频 CDN 链接(不带 Token): $.data.objects[0].objectDesc.media[0].url
      • Token: $.data.objects[0].objectDesc.media[0].urlToken
      • 完整 URL = url + urlToken(拼接)
      • 视频解密密钥: $.data.objects[0].objectDesc.media[0].decodeKey
  • 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

[English]

Purpose:

  • Get the full detail of a WeChat Channels video (media address media + decode_key).
  • Three input options, choose one, priority object_id > export_id > share_url.
  • 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 id 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:

  • object_id: Highest priority, optional. Video objectId (numeric), e.g. 14941130915890399732. Obtainable from the video id of fetch_user_videos / fetch_collection_videos.
  • export_id: Second priority, optional. exportId from search results (must start with export/). Search results often only carry exportId without a plain object_id — pass export_id directly in that case (it expires, use it soon).
  • object_nonce_id: Optional. feedNonceId (numeric) from search results, pairs with the above to improve hit rate.
  • share_url: Last, optional. Channels share URL (https://weixin.qq.com/sph/…), e.g. https://weixin.qq.com/sph/AH3sCoIPhH. Used only when both object_id and export_id are empty.
  • raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).
  • At least one of the three must be provided; share_url must be a Channels share URL (https://weixin.qq.com/sph/…).

Return:

  • Full video detail (including media download address and decryption key)

Typical chain (from a video to the account / more videos):

  1. This endpoint fetch_video_detail → response contains plain id (objectId), username (v2_…@finder), media (url / url_token / decode_key)
  2. Feed the obtained username into → fetch_channel_info (account info / verification), fetch_user_videos (more videos of the account), fetch_user_profile (homepage stats), fetch_video_comments (comments of this video, using id from step 1)

Response structure & JSON Path:

  • data is a single video object:
    • id (video objectId): $.data.id
    • username (v2_…@finder) / nickname / title: $.data.username etc.
    • Interaction counts: $.data.read_count / .like_count / .fav_count / .forward_count / .comment_count
    • Publish time / type / location: $.data.create_time / $.data.object_type / $.data.location
    • Media object: $.data.media (see download/decryption below)

raw=true (raw):

  • Status code: $.data.baseResponse.ret
  • Hit receipt: $.data.objectResponses[0].objectId / .exportId
  • Video object (note: plural objects, camelCase): $.data.objects[0]
  • Mapping: flat fields of raw=false correspond to objects[0] of raw=true.

Important Note (video download & decryption):

  • Accessing the url field directly may fail to open the video page — WeChat applies anti-hotlinking to Channels pages. Concatenate url and url_token into a complete URL, then open it in a browser / HTTP client. (Note: opening = HTTP 200, does not mean playable, the video file is encrypted.)
  • ⚠️ Video Encryption Notice: If the MP4 cannot be played, it is encrypted. Use the decode_key field from the response together with the encrypted video file to decrypt it.
  • ⚠️ Important: The WeChat API returns a new encrypted file link and decode_key on every request, even for the same video. Make sure the decode_key used for decryption and the downloaded encrypted file come from the same API response, otherwise decryption will fail.
  • JSON Path (by raw):
    • raw=false (recommended for media download) — $.data.media is a single object:
      • Video CDN link (without Token): $.data.media.url
      • Token of the video CDN link: $.data.media.url_token
      • Pre-concatenated full CDN URL (= url + url_token, ready to use): $.data.media.full_url
      • Video decryption key (different on every request): $.data.media.decode_key
    • raw=true$.data.objects[0].objectDesc.media[0]:
      • Video CDN link (without Token): $.data.objects[0].objectDesc.media[0].url
      • Token: $.data.objects[0].objectDesc.media[0].urlToken
      • Full URL = url + urlToken (concatenate)
      • Video decryption key: $.data.objects[0].objectDesc.media[0].decodeKey
  • Online decryption tool: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
  • Self-deployable decryption API (one-click Docker deployment): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号作品评论/Get WeChat Channels Video Comments

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_video_comments

[中文]

用途:

  • 获取作品的一级评论(含 IP 属地 / 点赞数);传 comment_id 则返回该评论下的二级回复。
  • 支持翻页获取更多评论。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 comment_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • object_id: 作品 objectId(纯数字),示例 14941130915890399732。来自 fetch_user_videos / fetch_video_detail 的视频 id
  • last_buffer: 可选,翻页游标(base64)。首页留空;当响应 down_continue 为真时传上一页的 last_buffer
  • comment_id: 可选。展开某条评论的二级回复时传该评论的 comment_id(纯数字);首页留空。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 评论列表及翻页游标

响应结构与 JSON Path:

raw=false(精简):

  • 顶层: $.data.object_id(回显)/ $.data.comment_id(展开回复时回显,否则 null)/ $.data.count(本页评论数)/ $.data.down_continue(是否有下一页)/ $.data.last_buffer(翻页游标)
  • 每条评论 $.data.comments[N]:
    • 评论 ID(展开其二级回复时回传): $.data.comments[N].comment_id
    • 评论人: $.data.comments[N].nickname / .username / .head_url
    • 正文: $.data.comments[N].content
    • 点赞 / 回复数: $.data.comments[N].like_count / .reply_count
    • 时间 / IP 属地: $.data.comments[N].create_time / .ip_region

raw=true(原始):

  • 状态码: $.data.baseResponse.ret
  • 评论数组(camelCase): $.data.commentInfo[N],关键字段 commentId / nickname / username / content / likeCount / createtime / headUrl / ipRegionInfo.regionText
  • 翻页: $.data.downContinueFlag$.data.lastBuffer(另附别名 $.data.last_buffer
  • 全局计数: $.data.monotonicData.commentCount.commentCount$.data.countInfo(likeCount/favCount/forwardCount 等)
  • 对应关系: raw=false 的 comments[] 对应 raw=true 的 commentInfo[]

[English]

Purpose:

  • Get first-level comments of a video (with IP region / like count); pass comment_id to get second-level replies under that comment.
  • Supports pagination for more comments.
  • 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 comment_id 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:

  • object_id: Video objectId (numeric), e.g. 14941130915890399732. From the video id of fetch_user_videos / fetch_video_detail.
  • last_buffer: Optional pagination cursor (base64). Leave empty for the first page; when down_continue is truthy, pass the previous page’s last_buffer.
  • comment_id: Optional. To expand the replies of a comment, pass its comment_id (numeric); leave empty for the first-level page.
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Comment list with pagination cursor

Response structure & JSON Path:

raw=false (simplified):

  • Top level: $.data.object_id (echo) / $.data.comment_id (echo when expanding replies, otherwise null) / $.data.count (comments on this page) / $.data.down_continue (has next page) / $.data.last_buffer (pagination cursor)
  • Each comment $.data.comments[N]:
    • Comment ID (pass it back to expand its replies): $.data.comments[N].comment_id
    • Commenter: $.data.comments[N].nickname / .username / .head_url
    • Content: $.data.comments[N].content
    • Like / reply counts: $.data.comments[N].like_count / .reply_count
    • Time / IP region: $.data.comments[N].create_time / .ip_region

raw=true (raw):

  • Status code: $.data.baseResponse.ret
  • Comment array (camelCase): $.data.commentInfo[N], key fields commentId / nickname / username / content / likeCount / createtime / headUrl / ipRegionInfo.regionText
  • Pagination: $.data.downContinueFlag, $.data.lastBuffer (alias $.data.last_buffer also provided)
  • Global counts: $.data.monotonicData.commentCount.commentCount, $.data.countInfo (likeCount/favCount/forwardCount etc.)
  • Mapping: comments[] of raw=false corresponds to commentInfo[] of raw=true.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

生成视频号作品分享链接/Generate WeChat Channels Video Share URL

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_video_share_url

[中文]

用途:

  • 给定作品 object_id,返回一条可对外分享的 weixin.qq.com/sph/… 短链(与 fetch_video_detailshare_url 入参互为反向)。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • object_id: 作品 objectId(纯数字),示例 14941130915890399732。来自 fetch_user_videos / fetch_video_detail 的视频 id
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 作品分享短链

响应结构与 JSON Path:

raw=false(精简):

  • 入参回显: $.data.object_id
  • 生成的分享短链(可直接喂 fetch_video_detailshare_url): $.data.share_url

raw=true(原始):

  • 状态码: $.data.baseResponse.ret
  • 分享短链: $.data.feedH5Url
  • 列表形式(批量时逐项): $.data.urlList[N].feedH5Url / $.data.urlList[N].objectId
  • 对应关系: raw=false 的 share_url 取自 raw=true 的 feedH5Url(或 urlList[0].feedH5Url),object_id 即入参回显。

[English]

Purpose:

  • Given a video object_id, return a shareable weixin.qq.com/sph/… short link (the inverse of the share_url input of fetch_video_detail).
  • 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.

Parameters:

  • object_id: Video objectId (numeric), e.g. 14941130915890399732. From the video id of fetch_user_videos / fetch_video_detail.
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Video share short link

Response structure & JSON Path:

raw=false (simplified):

  • Input echo: $.data.object_id
  • Generated share link (feed directly into share_url of fetch_video_detail): $.data.share_url

raw=true (raw):

  • Status code: $.data.baseResponse.ret
  • Share link: $.data.feedH5Url
  • List form (per item when batched): $.data.urlList[N].feedH5Url / $.data.urlList[N].objectId
  • Mapping: share_url of raw=false comes from feedH5Url (or urlList[0].feedH5Url) of raw=true; object_id is the input echo.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号账号主页资料+统计/Get WeChat Channels User Profile & Stats

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_user_profile

[中文]

用途:

  • 获取创作者的主页资料与互动统计。与 fetch_channel_info(认证主体 / 许可证)互补:本接口给昵称 / 签名 / 头像、粉丝 / 作品 / 获赞 / 收藏 / 转发数、直播时长、IP 属地、合集数、关联公众号等。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • username: 视频号 finder username(v2_…@finder 格式)。来源:fetch_video_detailfetch_user_videos 响应里视频对象的 username;或 fetch_channel_id_to_usernamesph… 短号转成 username。示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 账号主页资料与互动统计

响应结构与 JSON Path:

raw=false(精简,snake_case 拍平):

  • $.data.username —— finder username
  • $.data.nickname / $.data.signature / $.data.head_url(头像)/ $.data.region(IP 属地,如「北京」)
  • $.data.fans_count —— 粉丝数。注意:部分账号(如人民日报)返回 0
  • $.data.feeds_count —— 作品数(示例 10555)
  • $.data.like_count / $.data.fav_count / $.data.forward_count —— 获赞 / 收藏 / 转发数(部分账号为 0)
  • $.data.friend_follow_count —— 好友关注数
  • $.data.live_duration_hours —— 累计直播时长(小时)
  • $.data.original_flag —— 原创标记
  • $.data.collection_count —— 合集数(示例 6;明细走 fetch_user_collections
  • $.data.verify_desc —— 认证说明(可能为 null)
  • $.data.linked_accounts[] —— 关联公众号 [{nickname, type}](如 {"nickname":"人民日报","type":"公众号"}

raw=true(完整原始响应,camelCase 嵌套):

  • $.data.contact.nickname / .signature / .headUrlnickname / signature / head_url
  • $.data.contact.usernameusername$.data.contact.originalFlagoriginal_flag
  • $.data.contact.authInfoauthProfession / authIconType …)—— 认证信息
  • $.data.ipRegionInfo.regionTextregion
  • $.data.fansCountfans_count(同样部分账号为 0);$.data.feedsCountfeeds_count
  • $.data.feedsLikeCount / .feedsFavCount / .feedsForwardCountlike_count / fav_count / forward_count
  • $.data.liveDurationHourslive_duration_hours$.data.collectionListInfo.collectionCountcollection_count
  • $.data.bizInfo.info[]bizNickname / serviceTypeName)→ linked_accounts[]
  • 另含 $.data.object[](首屏作品列表)、$.data.anchorStatInfo(直播场次统计)、$.data.lastBuffer / $.data.continueFlag(首屏作品翻页用,本接口只取资料故一般不用)等几十个字段。

[English]

Purpose:

  • Get a creator’s homepage profile and interaction stats. Complementary to fetch_channel_info (verification entity / license): this endpoint provides nickname / signature / avatar, follower / video / like / favorite / forward counts, live duration, IP region, collection count, linked official accounts, etc.
  • 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.

Parameters:

  • username: WeChat Channels finder username (v2_…@finder format). Source: the username field of video objects in fetch_video_detail / fetch_user_videos responses; or convert a sph… short ID via fetch_channel_id_to_username. E.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People’s Daily).
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Account homepage profile and interaction stats

Response structure & JSON Path:

raw=false (simplified, flattened snake_case):

  • $.data.username — finder username
  • $.data.nickname / $.data.signature / $.data.head_url (avatar) / $.data.region (IP region, e.g. “北京”)
  • $.data.fans_count — follower count. Note: some accounts (e.g. People’s Daily) return 0
  • $.data.feeds_count — video count (e.g. 10555)
  • $.data.like_count / $.data.fav_count / $.data.forward_count — like / favorite / forward counts (0 for some accounts)
  • $.data.friend_follow_count — friend-follow count
  • $.data.live_duration_hours — accumulated live streaming hours
  • $.data.original_flag — original-content flag
  • $.data.collection_count — collection count (e.g. 6; details via fetch_user_collections)
  • $.data.verify_desc — verification description (may be null)
  • $.data.linked_accounts[] — linked official accounts [{nickname, type}] (e.g. {"nickname":"人民日报","type":"公众号"})

raw=true (full raw response, nested camelCase):

  • $.data.contact.nickname / .signature / .headUrlnickname / signature / head_url
  • $.data.contact.usernameusername; $.data.contact.originalFlagoriginal_flag
  • $.data.contact.authInfo (authProfession / authIconType …) — verification info
  • $.data.ipRegionInfo.regionTextregion
  • $.data.fansCountfans_count (also 0 for some accounts); $.data.feedsCountfeeds_count
  • $.data.feedsLikeCount / .feedsFavCount / .feedsForwardCountlike_count / fav_count / forward_count
  • $.data.liveDurationHourslive_duration_hours; $.data.collectionListInfo.collectionCountcollection_count
  • $.data.bizInfo.info[] (bizNickname / serviceTypeName) → linked_accounts[]
  • Also contains dozens of raw fields like $.data.object[] (first-screen video list), $.data.anchorStatInfo (live session stats), $.data.lastBuffer / $.data.continueFlag (pagination of the first-screen videos; generally unused here since this endpoint is for profile data).

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号合集列表/Get WeChat Channels User Collections

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_user_collections

[中文]

用途:

  • 获取创作者主页的「合集」列表。每个合集的 topic_id 可传 fetch_collection_videos 取该合集内的视频。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 topic_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • username: 视频号 finder username(v2_…@finder 格式)。示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 合集列表

响应结构与 JSON Path:

raw=false(精简,snake_case):

  • $.data.username —— finder username
  • $.data.count —— 合集总数(示例 6)
  • $.data.collections[] —— 合集数组,逐个(N 为下标):
    • $.data.collections[N].topic_id —— 合集 ID(纯数字,传 fetch_collection_videos,示例 14616794565351966924
    • $.data.collections[N].name —— 合集名(如「早安中国」)
    • $.data.collections[N].desc —— 合集简介(可能为空串)
    • $.data.collections[N].cover_url —— 合集封面
    • $.data.collections[N].feed_count —— 合集内视频数
    • $.data.collections[N].topic_type —— 合集类型(示例 16,与 fetch_collection_videostopic_type 对应)

raw=true(完整原始响应,camelCase):

  • $.data.collectionCountcount
  • $.data.collectionInfo[]collections[],逐个:
    • $.data.collectionInfo[N].collectionTopicIdtopic_id(数字;另有 collectionTopicIdStr 字符串别名)
    • $.data.collectionInfo[N].collectionNamename
    • $.data.collectionInfo[N].collectionDescdesc
    • $.data.collectionInfo[N].coverImgUrlcover_url
    • $.data.collectionInfo[N].feedCountfeed_count
    • $.data.collectionInfo[N].collectionTopicTypetopic_type
    • 另含 lastUpdateTime / readCount / categoryId 等原始字段
  • $.data.lastBuffer —— 合集列表翻页游标(通常为空,合集数少不需翻页)

[English]

Purpose:

  • Get the “Collections” list on a creator’s homepage. Pass each collection’s topic_id to fetch_collection_videos to get its videos.
  • 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 topic_id 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:

  • username: WeChat Channels finder username (v2_…@finder format). E.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People’s Daily).
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Collection list

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • $.data.username — finder username
  • $.data.count — total collections (e.g. 6)
  • $.data.collections[] — collection array, per item (N is the index):
    • $.data.collections[N].topic_id — collection ID (numeric, pass to fetch_collection_videos, e.g. 14616794565351966924)
    • $.data.collections[N].name — collection name (e.g. “早安中国”)
    • $.data.collections[N].desc — collection description (may be empty string)
    • $.data.collections[N].cover_url — collection cover
    • $.data.collections[N].feed_count — number of videos in the collection
    • $.data.collections[N].topic_type — collection type (e.g. 16, matches topic_type of fetch_collection_videos)

raw=true (full raw response, camelCase):

  • $.data.collectionCountcount
  • $.data.collectionInfo[]collections[], per item:
    • $.data.collectionInfo[N].collectionTopicIdtopic_id (number; collectionTopicIdStr provides a string alias)
    • $.data.collectionInfo[N].collectionNamename
    • $.data.collectionInfo[N].collectionDescdesc
    • $.data.collectionInfo[N].coverImgUrlcover_url
    • $.data.collectionInfo[N].feedCountfeed_count
    • $.data.collectionInfo[N].collectionTopicTypetopic_type
    • Also raw fields like lastUpdateTime / readCount / categoryId
  • $.data.lastBuffer — pagination cursor of the collection list (usually empty; few collections, no pagination needed)

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号合集内视频/Get WeChat Channels Collection Videos

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_collection_videos

[中文]

用途:

  • 给定合集 topic_id(来自 fetch_user_collections),返回该合集内的视频列表。
  • 每个视频带媒体地址 media(含 url / url_token / decode_key),可直接下载解密。
  • 支持翻页获取更多视频。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 id / topic_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • topic_id: 合集 ID(纯数字,来自 fetch_user_collectionstopic_id)。示例 14616794565351966924(人民日报「早安中国」合集)。
  • topic: 可选,合集名,提高命中。示例 早安中国
  • username: 可选,创作者 finder username(v2_…@finder 格式),提高命中。
  • last_buffer: 可选,翻页游标(base64),首页留空;当响应 down_continue 为真时,传上一页响应的 last_buffer 取下一页。
  • topic_type: 可选,合集类型,默认 16(与 fetch_user_collections 里该合集的 topic_type 对齐)。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。

返回:

  • 合集内视频列表及翻页游标

响应结构与 JSON Path:

raw=false(精简,snake_case,推荐做媒体下载):

  • $.data.topic_id / $.data.title(合集名)
  • $.data.total_count —— 合集总视频数;$.data.count —— 本页条数(示例 20)
  • $.data.videos[] —— 视频数组,逐个(N 为下标):
    • $.data.videos[N].id —— 作品 objectId(可喂 fetch_video_detail / fetch_video_comments
    • $.data.videos[N].username / .nickname / .title(可能为 null)/ .create_time
    • $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • $.data.videos[N].media —— 媒体对象(单个),下载 + 解密:
      • $.data.videos[N].media.url —— 视频 CDN 链接(不带 Token)
      • $.data.videos[N].media.url_token —— CDN 链接 Token(防盗链)
      • $.data.videos[N].media.full_url —— 已拼好的完整 CDN URL(= url + url_token,可直接下载)
      • $.data.videos[N].media.decode_key —— 视频解密密钥(每次请求都不同
      • 另含 cover_url / duration / width / height / media_type
  • $.data.down_continue —— 是否有下一页(1=有)
  • $.data.last_buffer —— 翻页游标(传回本接口取下一页)

raw=true(完整原始响应,camelCase):

  • $.data.totalCounttotal_count
  • $.data.object[]videos[](完整视频对象),逐个:
    • $.data.object[N].idid$.data.object[N].usernameusername
    • 媒体在 $.data.object[N].objectDesc.media[0]: .urlurl.urlTokenurl_token.decodeKeydecode_keyfull_url 为精简层拼接产物,raw 需自行 url + urlToken 拼接)
  • $.data.downContinueFlagdown_continue(注意 raw 顶层另有 continueFlag,合集翻页以 downContinueFlag 为准)
  • $.data.lastBuffer(别名 $.data.last_buffer)→ last_buffer

重要提示(视频下载与解密):

[English]

Purpose:

  • Given a collection topic_id (from fetch_user_collections), return the video list inside that collection.
  • Each video carries a media object (url / url_token / decode_key) ready for download and decryption.
  • Supports pagination for more videos.
  • 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 id / topic_id 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:

  • topic_id: Collection ID (numeric, from topic_id of fetch_user_collections). E.g. 14616794565351966924 (People’s Daily “早安中国” collection).
  • topic: Optional, collection name, improves hit rate. E.g. 早安中国.
  • username: Optional, creator finder username (v2_…@finder format), improves hit rate.
  • last_buffer: Optional pagination cursor (base64), leave empty for the first page; when down_continue is truthy, pass the previous page’s last_buffer.
  • topic_type: Optional, collection type, default 16 (align with the collection’s topic_type from fetch_user_collections).
  • raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).

Return:

  • Video list of the collection with pagination cursor

Response structure & JSON Path:

  • $.data.topic_id / $.data.title (collection name)
  • $.data.total_count — total videos in the collection; $.data.count — items on this page (e.g. 20)
  • $.data.videos[] — video array, per item (N is the index):
    • $.data.videos[N].id — video objectId (feed into fetch_video_detail / fetch_video_comments)
    • $.data.videos[N].username / .nickname / .title (may be null) / .create_time
    • $.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count
    • $.data.videos[N].media — media object (single), download + decrypt:
      • $.data.videos[N].media.url — video CDN link (without Token)
      • $.data.videos[N].media.url_token — Token of the CDN link (anti-hotlinking)
      • $.data.videos[N].media.full_url — pre-concatenated full CDN URL (= url + url_token, ready to download)
      • $.data.videos[N].media.decode_key — video decryption key (different on every request)
      • Also cover_url / duration / width / height / media_type etc.
  • $.data.down_continue — has next page (1=yes)
  • $.data.last_buffer — pagination cursor (pass back to this endpoint for the next page)

raw=true (full raw response, camelCase):

  • $.data.totalCounttotal_count
  • $.data.object[]videos[] (full video objects), per item:
    • $.data.object[N].idid; $.data.object[N].usernameusername
    • Media at $.data.object[N].objectDesc.media[0]: .urlurl, .urlTokenurl_token, .decodeKeydecode_key (full_url is produced by the simplified layer; for raw, concatenate url + urlToken yourself)
  • $.data.downContinueFlagdown_continue (note: raw top level also has continueFlag; for collection pagination use downContinueFlag)
  • $.data.lastBuffer (alias $.data.last_buffer) → last_buffer

Important Note (video download & decryption):

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号直播回放列表/Get WeChat Channels Live History

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_live_history

[中文]

用途:

  • 获取创作者的直播回放列表。回放本身就是视频对象,每条带媒体地址 media(含 url / url_token / decode_key),可直接下载解密。
  • 支持翻页获取更多回放。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • username: 视频号 finder username(v2_…@finder 格式)。示例(有直播回放的号)v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(虎嗅)。
  • last_buffer: 可选,翻页游标(base64),首页留空;当响应 continue_flag 为真时,传上一页响应的 last_buffer 取下一页。
  • flag: 可选,拉取标志,默认 12。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。

返回:

  • 直播回放列表及翻页游标

响应结构与 JSON Path:

raw=false(精简,snake_case,推荐做媒体下载):

  • $.data.username
  • $.data.count —— 本页条数;$.data.total_count —— 回放总数(无回放时为 0
  • $.data.lives[] —— 回放数组,每条是一个视频对象(结构同 fetch_collection_videos 的 video),逐个(N 为下标):
    • $.data.lives[N].id —— 回放作品 objectId
    • $.data.lives[N].username / .nickname / .title / .create_time
    • $.data.lives[N].like_count / .fav_count / .forward_count / .comment_count 等计数
    • $.data.lives[N].media —— 媒体对象(单个),下载 + 解密:
      • $.data.lives[N].media.url —— 视频 CDN 链接(不带 Token)
      • $.data.lives[N].media.url_token —— CDN 链接 Token(防盗链)
      • $.data.lives[N].media.full_url —— 已拼好的完整 CDN URL(= url + url_token,可直接下载)
      • $.data.lives[N].media.decode_key —— 视频解密密钥(每次请求都不同
  • $.data.continue_flag —— 是否有下一页(1=有)
  • $.data.last_buffer —— 翻页游标(传回本接口取下一页)

raw=true(完整原始响应,camelCase):

  • $.data.totalCounttotal_count
  • $.data.object[]lives[](完整视频对象),逐个媒体在 $.data.object[N].objectDesc.media[0]: .urlurl.urlTokenurl_token.decodeKeydecode_keyfull_url 为精简层拼接产物,raw 需自行 url + urlToken 拼接)
  • $.data.continueFlagcontinue_flag
  • $.data.lastBuffer(别名 $.data.last_buffer)→ last_buffer

重要提示(视频下载与解密):

[English]

Purpose:

  • Get a creator’s live replay list. Each replay is itself a video object with a media object (url / url_token / decode_key) ready for download and decryption.
  • Supports pagination for more replays.
  • 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 id 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:

  • username: WeChat Channels finder username (v2_…@finder format). Example (an account with live replays): v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder (Huxiu).
  • last_buffer: Optional pagination cursor (base64), leave empty for the first page; when continue_flag is truthy, pass the previous page’s last_buffer.
  • flag: Optional fetch flag, default 12.
  • raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).

Return:

  • Live replay list with pagination cursor

Response structure & JSON Path:

  • $.data.username
  • $.data.count — items on this page; $.data.total_count — total replays (0 when none)
  • $.data.lives[] — replay array, each item is a video object (same shape as videos of fetch_collection_videos), per item (N is the index):
    • $.data.lives[N].id — replay video objectId
    • $.data.lives[N].username / .nickname / .title / .create_time
    • $.data.lives[N].like_count / .fav_count / .forward_count / .comment_count etc.
    • $.data.lives[N].media — media object (single), download + decrypt:
      • $.data.lives[N].media.url — video CDN link (without Token)
      • $.data.lives[N].media.url_token — Token of the CDN link (anti-hotlinking)
      • $.data.lives[N].media.full_url — pre-concatenated full CDN URL (= url + url_token, ready to download)
      • $.data.lives[N].media.decode_key — video decryption key (different on every request)
  • $.data.continue_flag — has next page (1=yes)
  • $.data.last_buffer — pagination cursor (pass back to this endpoint for the next page)

raw=true (full raw response, camelCase):

  • $.data.totalCounttotal_count
  • $.data.object[]lives[] (full video objects), media per item at $.data.object[N].objectDesc.media[0]: .urlurl, .urlTokenurl_token, .decodeKeydecode_key (full_url is produced by the simplified layer; for raw, concatenate url + urlToken yourself)
  • $.data.continueFlagcontinue_flag
  • $.data.lastBuffer (alias $.data.last_buffer) → last_buffer

Important Note (video download & decryption):

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取视频号直播间详情/Get WeChat Channels Live Detail

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_live_detail

[中文]

用途:

  • 传直播 live_id 返回直播间详情:主播信息、直播状态、在线人数、回放信息等。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 live_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • live_id: 直播 ID(纯数字)。来源:fetch_live_history 的回放条目、直播入口或直播分享。示例 2078950291205875194
  • scene: 可选,进入场景,默认 5。
  • finder_username: 可选,主播 finder username(v2_…@finder 格式),提高命中。示例 v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(虎嗅)。
  • raw: 可选,默认 True。True=原始响应;False=精简解析结构。

返回:

  • 直播间详情

响应结构与 JSON Path:

raw=false(精简,snake_case):

  • $.data.live_id —— 直播 ID;$.data.object_id —— 关联作品 objectId(可能为空串)
  • $.data.anchor_nickname / $.data.anchor_username / $.data.anchor_head_url —— 主播昵称 / username / 头像
  • $.data.live_cover_url —— 直播封面
  • $.data.live_status —— 直播状态(1=直播中 / 2=已结束 …);$.data.status_desc —— 状态文案(可能为空)
  • $.data.online_count / $.data.max_online_count —— 当前 / 峰值在线人数(已结束的直播一般为 0)
  • $.data.replay_status —— 回放状态;$.data.replay_url —— 回放地址(可能为空);$.data.replay_watch_uv —— 回放观看人数

raw=true(完整原始响应,camelCase):

  • $.data.liveInfo.liveIdlive_id$.data.liveInfo.objectIdobject_id
  • $.data.liveInfo.liveStatuslive_status$.data.liveInfo.statusDescstatus_desc
  • $.data.liveInfo.onlineCntonline_count$.data.liveInfo.maxOnlineCountmax_online_count
  • $.data.liveInfo.replayStatusreplay_status$.data.liveInfo.replayUrlreplay_url
  • $.data.liveInfo.replayInfo.watchUvreplay_watch_uv
  • $.data.anchorContactnickname / username / headUrl / coverImgUrl / liveCoverImgUrl)→ 主播相关字段
  • 另含 $.data.liveCover$.data.anchorInfo$.data.replaySubscribedCount 等几十个原始字段

[English]

Purpose:

  • Pass a live live_id to get live-room detail: anchor info, live status, online count, replay info, etc.
  • 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 live_id 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:

  • live_id: Live ID (numeric). Source: replay items of fetch_live_history, live entry, or live share. E.g. 2078950291205875194.
  • scene: Optional, entry scene, default 5.
  • finder_username: Optional, anchor finder username (v2_…@finder format), improves hit rate. E.g. v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder (Huxiu).
  • raw: Optional, default True. True=raw response; False=simplified parsed structure.

Return:

  • Live room detail

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • $.data.live_id — live ID; $.data.object_id — associated video objectId (may be empty string)
  • $.data.anchor_nickname / $.data.anchor_username / $.data.anchor_head_url — anchor nickname / username / avatar
  • $.data.live_cover_url — live cover
  • $.data.live_status — live status (1=live / 2=ended …); $.data.status_desc — status text (may be empty)
  • $.data.online_count / $.data.max_online_count — current / peak online count (usually 0 for ended lives)
  • $.data.replay_status — replay status; $.data.replay_url — replay address (may be empty); $.data.replay_watch_uv — replay viewer count

raw=true (full raw response, camelCase):

  • $.data.liveInfo.liveIdlive_id; $.data.liveInfo.objectIdobject_id
  • $.data.liveInfo.liveStatuslive_status; $.data.liveInfo.statusDescstatus_desc
  • $.data.liveInfo.onlineCntonline_count; $.data.liveInfo.maxOnlineCountmax_online_count
  • $.data.liveInfo.replayStatusreplay_status; $.data.liveInfo.replayUrlreplay_url
  • $.data.liveInfo.replayInfo.watchUvreplay_watch_uv
  • $.data.anchorContact (nickname / username / headUrl / coverImgUrl / liveCoverImgUrl) → anchor-related fields
  • Also dozens of raw fields like $.data.liveCover, $.data.anchorInfo, $.data.replaySubscribedCount

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

视频号号内搜索/Search Videos Within a WeChat Channel

0.10 Credits / 次 /api/v1/wechat_channels/v2/fetch_search_channel_videos

[中文]

用途:

  • 号内搜:在指定创作者的视频号内,按关键词搜索其发布的视频(只在该号内部检索)。
  • 本接口仅做首页检索(请求侧不暴露 cursor 参数,单页返回),但响应仍带 next_cursor / continue_flag,供需要时自行接续翻页参考。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 doc_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • username: 创作者 finder username(v2_…@finder 格式)。示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。
  • keyword: 在该号内搜索的关键词(去空白后 1-100 字)。示例 新闻
  • raw: 可选,默认 True。True=原始搜索响应;False=精简解析结构。

返回:

  • 号内搜索命中列表

响应结构与 JSON Path:

raw=false(精简,snake_case):

  • $.data.username / $.data.keyword —— 回显入参
  • $.data.count —— 本页命中数(示例 20)
  • $.data.items[] —— 命中数组,逐个(N 为下标):
    • $.data.items[N].type —— 结果类型(如 video
    • $.data.items[N].doc_id —— 文档 id
    • $.data.items[N].title —— 标题(已去搜索高亮标记)
    • $.data.items[N].desc / .thumb_url / .username / .nickname —— 简介 / 缩略图 / 作者(部分项可能为 null
  • $.data.continue_flag —— 是否还有更多(1=有)
  • $.data.next_cursor —— 翻页游标对象(携带检索上下文与 offset 等;本路由首页检索不消费它)

raw=true(完整原始响应,camelCase):

  • $.data.querykeyword$.data.offset —— 下一页偏移(示例 20)
  • $.data.data[] —— 结果分组数组;命中项嵌在 $.data.data[N].subBoxes[M].items[](亦可能在 $.data.data[N].items[]),由精简层拍平成 items[]
  • $.data.continueFlagcontinue_flag
  • $.data.searchID —— 翻页所需上下文,精简层归并进 next_cursor(顶层另注入 $.data.next_cursor

提示:

  • 命中视频要拿媒体(下载地址 / decode_key):本接口不直接给 media,请用命中项走 fetch_video_detailmediaurl / url_token / decode_key),链路与解密说明见 fetch_video_detail 文档。

[English]

Purpose:

  • In-channel search: search a creator’s published videos by keyword within that channel only.
  • This endpoint performs first-page retrieval only (no cursor parameter exposed, single-page result), but the response still carries next_cursor / continue_flag for reference.
  • 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 doc_id 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:

  • username: Creator finder username (v2_…@finder format). E.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People’s Daily).
  • keyword: Keyword to search within the channel (1-100 chars after trimming). E.g. 新闻.
  • raw: Optional, default True. True=raw search response; False=simplified parsed structure.

Return:

  • In-channel search hit list

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • $.data.username / $.data.keyword — input echo
  • $.data.count — hits on this page (e.g. 20)
  • $.data.items[] — hit array, per item (N is the index):
    • $.data.items[N].type — result type (e.g. video)
    • $.data.items[N].doc_id — document id
    • $.data.items[N].title — title (search highlight markers stripped)
    • $.data.items[N].desc / .thumb_url / .username / .nickname — description / thumbnail / author (may be null for some items)
  • $.data.continue_flag — has more (1=yes)
  • $.data.next_cursor — pagination cursor object (carries search context and offset etc.; not consumed by this first-page-only route)

raw=true (full raw response, camelCase):

  • $.data.querykeyword; $.data.offset — next page offset (e.g. 20)
  • $.data.data[] — result group array; hit items are nested at $.data.data[N].subBoxes[M].items[] (or possibly $.data.data[N].items[]), flattened into items[] by the simplified layer
  • $.data.continueFlagcontinue_flag
  • $.data.searchID — context required for pagination, merged into next_cursor by the simplified layer ($.data.next_cursor is also injected at top level)

Tip:

  • To get media (download address / decode_key) of a hit video: this endpoint does not return media directly; feed the hit into fetch_video_detail to get media (url / url_token / decode_key). See fetch_video_detail docs for the chain and decryption notes.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号文章详情/Get WeChat MP Article Detail

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_article_detail

[中文]

用途:

  • 传文章 URL,返回文章正文 / 标题 / 作者 / 封面 / 发布时间 / 合集信息等。
  • 无论 raw 取值,嵌套的 content JSON 串都会被解析成对象(结构归一化),raw 只控制外层字段的投影范围。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 comment_id / msgId 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • url: 公众号文章链接(https://mp.weixin.qq.com/s/… 或带 __biz 的长链)。示例 https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • raw: 可选,默认 True。True=原始响应;False=精简投影。

返回:

  • 文章详情(正文 / 标题 / 作者 / 封面 / 发布时间 / 合集信息)

响应结构与 JSON Path:

raw=false(精简投影):

  • data 顶层仅 4 个字段,文章正文聚合在 content:
    • $.data.url: 文章 URL
    • $.data.bizUin: 公众号 bizUin(int)
    • $.data.itemIdx: 图文位置序号
    • $.data.content: 已解析的正文对象,常用路径:
      • $.data.content.title: 标题
      • $.data.content.nick_name / $.data.content.user_name: 公众号名 / gh_username
      • $.data.content.author: 作者
      • $.data.content.desc: 摘要
      • $.data.content.create_time: 发布时间("2025-03-05 12:22" 文本)
      • $.data.content.ori_create_time: 发布时间戳(int 秒)
      • $.data.content.cdn_url: 封面图
      • $.data.content.comment_id: 评论 id(喂评论接口的内部 id)
      • $.data.content.appmsgalbuminfo: 所属合集(album_id / title / 上下篇链接)
      • $.data.content.content_text: 正文 HTML 转出的纯文字

raw=true(原始):

  • data 为完整 item(含 raw=false 的全部字段,外加模板 / 缓存 / 时间等元信息):
    • $.data.url / $.data.bizUin / $.data.itemIdx: 同精简模式
    • $.data.msgId: 图文消息 id
    • $.data.lastModifyTime: 最后修改时间戳
    • $.data.tmplVersion / $.data.tmplVersions[]: H5 模板版本
    • $.data.clientCacheTime: 客户端缓存秒数
    • $.data.content.*: 与 raw=falsecontent 同结构(同样含 content_text

[English]

Purpose:

  • Pass an article URL to get the article body / title / author / cover / publish time / album info.
  • Regardless of raw, the nested content JSON string is always parsed into an object (structure normalized); raw only controls the projection scope of outer fields.
  • 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 comment_id / msgId 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:

  • url: WeChat MP article URL (https://mp.weixin.qq.com/s/… or long URL with __biz). E.g. https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • raw: Optional, default True. True=raw response; False=simplified projection.

Return:

  • Article detail (body / title / author / cover / publish time / album info)

Response structure & JSON Path:

raw=false (simplified projection):

  • data has only 4 top-level fields; the article body is aggregated in content:
    • $.data.url: article URL
    • $.data.bizUin: official account bizUin (int)
    • $.data.itemIdx: article position index
    • $.data.content: parsed body object, common paths:
      • $.data.content.title: title
      • $.data.content.nick_name / $.data.content.user_name: account name / gh_username
      • $.data.content.author: author
      • $.data.content.desc: digest
      • $.data.content.create_time: publish time (text like "2025-03-05 12:22")
      • $.data.content.ori_create_time: publish timestamp (int seconds)
      • $.data.content.cdn_url: cover image
      • $.data.content.comment_id: comment id (internal id fed into comment endpoints)
      • $.data.content.appmsgalbuminfo: album info (album_id / title / prev & next links)
      • $.data.content.content_text: plain text extracted from the body HTML

raw=true (raw):

  • data is the full item (all fields of raw=false, plus template / cache / time metadata):
    • $.data.url / $.data.bizUin / $.data.itemIdx: same as simplified mode
    • $.data.msgId: message id
    • $.data.lastModifyTime: last modified timestamp
    • $.data.tmplVersion / $.data.tmplVersions[]: H5 template versions
    • $.data.clientCacheTime: client cache seconds
    • $.data.content.*: same structure as content of raw=false (also includes content_text)

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号文章互动数据/Get WeChat MP Article Stats

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_article_stats

[中文]

用途:

  • 传文章 URL,返回文章的互动指标(阅读量 / 点赞 / 在看 / 分享 / 收藏 / 评论数)。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • url: 公众号文章链接(https://mp.weixin.qq.com/s/…)。示例 https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • raw: 可选,默认 True。True=完整原始统计对象(含 show_* 显隐标志位);False=仅精简计数。

返回:

  • 文章互动数据

响应结构与 JSON Path:

raw=false(精简计数):

  • data 为 7 个计数字段:
    • $.data.read_num: 阅读量
    • $.data.like_count: 点赞数
    • $.data.old_like_count: 在看数(旧「在看」)
    • $.data.share_count: 分享数
    • $.data.collect_count: 收藏数
    • $.data.comment_count: 评论数
    • $.data.star_num: 星标 / 喜欢数

raw=true(原始):

  • data 为完整原始统计对象:含 raw=false 的全部计数(同名同义),外加显隐 / 状态标志位:
    • 计数: $.data.read_num / $.data.like_count / $.data.old_like_count / $.data.share_count / $.data.collect_count / $.data.comment_count / $.data.star_num
    • 显隐标志: $.data.show_like / $.data.show_old_like / $.data.show_share / $.data.show_collect / $.data.show_read / $.data.show_star(及对应 *_gray 置灰位)
    • 状态: $.data.comment_enabled(评论开关)/ $.data.get_data_succ(取数成功)/ $.data.is_subscribed / $.data.verify_status / $.data.can_use_star

[English]

Purpose:

  • Pass an article URL to get its interaction metrics (reads / likes / “wow” / shares / favorites / comments).
  • 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.

Parameters:

  • url: WeChat MP article URL (https://mp.weixin.qq.com/s/…). E.g. https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • raw: Optional, default True. True=full raw stats object (with show_* visibility flags); False=simplified counts only.

Return:

  • Article interaction stats

Response structure & JSON Path:

raw=false (simplified counts):

  • data contains 7 count fields:
    • $.data.read_num: read count
    • $.data.like_count: like count
    • $.data.old_like_count: “wow” count (old “Looking”)
    • $.data.share_count: share count
    • $.data.collect_count: favorite count
    • $.data.comment_count: comment count
    • $.data.star_num: star / like count

raw=true (raw):

  • data is the full raw stats object: all counts of raw=false (same names and meanings), plus visibility / status flags:
    • Counts: $.data.read_num / $.data.like_count / $.data.old_like_count / $.data.share_count / $.data.collect_count / $.data.comment_count / $.data.star_num
    • Visibility flags: $.data.show_like / $.data.show_old_like / $.data.show_share / $.data.show_collect / $.data.show_read / $.data.show_star (and corresponding *_gray flags)
    • Status: $.data.comment_enabled (comment switch) / $.data.get_data_succ (fetch success) / $.data.is_subscribed / $.data.verify_status / $.data.can_use_star

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号文章评论/Get WeChat MP Article Comments

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_article_comments

[中文]

用途:

  • 获取公众号文章评论(单页,buffer 游标翻页),返回文章的一页精选评论。
  • 翻页:首页 buffer 留空 → 取响应的 buffer → 下次请求传回 buffer 取下一页;has_more 为 false 即到末页。
  • 逐条评论的二级回复请用 fetch_comment_replies(传评论的 content_id)。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 content_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • url: 公众号文章链接(https://mp.weixin.qq.com/s/…)。示例 https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • buffer: 可选,默认空。翻页游标,首页留空;翻页传上一页响应的 buffer
  • raw: 可选,默认 True。True=完整原始评论对象;False=精简评论视图。

返回:

  • 单页评论列表及翻页游标

响应结构与 JSON Path:

raw=false(精简视图):

  • data 外层为本页汇总,comments[] 为精简评论:
    • $.data.appmsgid: 图文消息 id
    • $.data.elected_total: 精选评论总数
    • $.data.total_count: 评论总数
    • $.data.buffer: 下一页游标(翻页回传 buffer;末页为空串)
    • $.data.has_more: 是否还有下一页
    • $.data.comment_id: 文章评论标识(内部用)
    • $.data.comments[N].content_id: 评论 id(fetch_comment_repliescontent_id
    • $.data.comments[N].nick_name: 评论者昵称
    • $.data.comments[N].content: 评论内容
    • $.data.comments[N].like_num: 点赞数
    • $.data.comments[N].create_time: 评论时间戳
    • $.data.comments[N].ip_wording: IP 归属地(province_name / city_name 等)
    • $.data.comments[N].is_elected / is_top: 是否精选 / 置顶
    • $.data.comments[N].reply_total: 二级回复总数
    • $.data.comments[N].replies[]: 二级回复预览(精简,见 fetch_comment_replies

raw=true(原始):

  • data 外层同上(appmsgid / elected_total / total_count / buffer / has_more / comment_id),comments[] 为完整原始评论对象,字段更全(snake_case):
    • $.data.comments[N].content_id: 评论 id(同精简模式,仍是喂 fetch_comment_replies 的值)
    • $.data.comments[N].content / nick_name / like_num / create_time / ip_wording / is_elected / is_top: 与 raw=false 同名同义
    • 原始模式额外字段: $.data.comments[N].id(楼层序号)/ openid / identity_type / logo_url(头像)/ like_status / is_from_me / $.data.comments[N].reply_new(含 reply_total_cnt / reply_list,对应精简模式的 reply_total / replies

[English]

Purpose:

  • Get WeChat MP article comments (single page, buffer cursor pagination); returns one page of featured comments.
  • Pagination: leave buffer empty for the first page → take buffer from the response → pass it back in the next request; has_more false means the last page.
  • For second-level replies of a specific comment, use fetch_comment_replies (pass the comment’s content_id).
  • 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 content_id 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:

  • url: WeChat MP article URL (https://mp.weixin.qq.com/s/…). E.g. https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw
  • buffer: Optional, default empty. Pagination cursor; leave empty for the first page, pass buffer from the previous response for the next page.
  • raw: Optional, default True. True=full raw comment objects; False=simplified comment view.

Return:

  • One page of comments with pagination cursor

Response structure & JSON Path:

raw=false (simplified view):

  • data outer level is the page summary; comments[] are simplified comments:
    • $.data.appmsgid: message id
    • $.data.elected_total: total featured comments
    • $.data.total_count: total comments
    • $.data.buffer: next-page cursor (pass back as buffer; empty string at the last page)
    • $.data.has_more: whether there is a next page
    • $.data.comment_id: article comment identifier (internal)
    • $.data.comments[N].content_id: comment id (feed into content_id of fetch_comment_replies)
    • $.data.comments[N].nick_name: commenter nickname
    • $.data.comments[N].content: comment content
    • $.data.comments[N].like_num: like count
    • $.data.comments[N].create_time: comment timestamp
    • $.data.comments[N].ip_wording: IP region (province_name / city_name etc.)
    • $.data.comments[N].is_elected / is_top: featured / pinned flags
    • $.data.comments[N].reply_total: total second-level replies
    • $.data.comments[N].replies[]: reply preview (simplified, see fetch_comment_replies)

raw=true (raw):

  • data outer level same as above (appmsgid / elected_total / total_count / buffer / has_more / comment_id); comments[] are full raw comment objects with more fields (snake_case):
    • $.data.comments[N].content_id: comment id (same as simplified mode, still the value fed into fetch_comment_replies)
    • $.data.comments[N].content / nick_name / like_num / create_time / ip_wording / is_elected / is_top: same names and meanings as raw=false
    • Raw-only extra fields: $.data.comments[N].id (floor number) / openid / identity_type / logo_url (avatar) / like_status / is_from_me / $.data.comments[N].reply_new (with reply_total_cnt / reply_list, corresponding to reply_total / replies of the simplified mode)

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号评论的二级回复/Get WeChat MP Comment Replies

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_comment_replies

[中文]

用途:

  • 返回某条一级评论下的二级回复。
  • 链路:先调 fetch_article_comments 取到每条评论的 content_id,再把它喂给本接口。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 content_id / reply_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • url: 公众号文章链接(https://mp.weixin.qq.com/s/…)。示例 http://mp.weixin.qq.com/s?__biz=Mzk3NTA0MzM5NA==&mid=2247483745&idx=1&sn=3f34e768cf457a501038991ed30be1f4#rd
  • content_id: 可选(纯数字)。目标一级评论的 content_id,取自 fetch_article_comments 响应的 $.data.comments[N].content_id不传则自动取第一条有回复的评论。示例 12109128638545265979
  • offset: 可选,默认 0(>=0)。回复翻页偏移;首页 0,has_more=true 时传上次返回的 next_offset 取下一页。all_pages=true 时忽略本参数。
  • all_pages: 可选,默认 False。为 True 时忽略 offset,一次取全部回复(响应不含 offset / next_offset / has_more 翻页字段)。
  • raw: 可选,默认 True。True=完整原始回复对象;False=精简回复。

返回:

  • 二级回复列表及翻页信息
注意:本接口 raw=trueraw=false外层结构一致,差异仅在 replies[] 每个元素的字段粒度(精简视图 vs 完整原始对象)。

响应结构与 JSON Path:

raw=false(精简回复):

  • $.data.content_id: 目标评论 id(回显)
  • $.data.parent_nick: 父评论(被回复者)昵称
  • $.data.reply_total: 二级回复总数
  • $.data.count: 本次返回的回复条数
  • $.data.replies[N].reply_id: 回复 id
  • $.data.replies[N].nick_name: 回复者昵称
  • $.data.replies[N].content: 回复内容
  • $.data.replies[N].create_time: 回复时间戳
  • $.data.replies[N].ip_wording: IP 归属地
  • $.data.replies[N].identity_name: 身份标识
  • $.data.replies[N].from_ai / reply_is_elected: 是否 AI 回复 / 是否精选
  • 仅单页模式(all_pages=false)含翻页: $.data.offset / $.data.next_offset / $.data.has_more

raw=true(原始):

  • 外层 content_id / parent_nick / reply_total / count(及单页模式的 offset / next_offset / has_more)与 raw=false 完全一致;差异仅在 replies[] 元素为完整原始回复对象(含 raw=false 投影掉的字段)。常用路径仍为 $.data.replies[N].content / $.data.replies[N].reply_id / $.data.replies[N].nick_name

[English]

Purpose:

  • Get the second-level replies under a first-level comment.
  • Chain: first call fetch_article_comments to get each comment’s content_id, then feed it into this endpoint.
  • 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 content_id / reply_id 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:

  • url: WeChat MP article URL (https://mp.weixin.qq.com/s/…). E.g. http://mp.weixin.qq.com/s?__biz=Mzk3NTA0MzM5NA==&mid=2247483745&idx=1&sn=3f34e768cf457a501038991ed30be1f4#rd
  • content_id: Optional (numeric). content_id of the target first-level comment, from $.data.comments[N].content_id of the fetch_article_comments response; defaults to the first comment that has replies when omitted. E.g. 12109128638545265979
  • offset: Optional, default 0 (>=0). Reply pagination offset; 0 for the first page, pass next_offset from the previous response when has_more=true. Ignored when all_pages=true.
  • all_pages: Optional, default False. When True, ignores offset and fetches all replies at once (the response omits the offset / next_offset / has_more pagination fields).
  • raw: Optional, default True. True=full raw reply objects; False=simplified replies.

Return:

  • Second-level reply list with pagination info
Note: the outer structure is identical for raw=true and raw=false; the difference is only in the field granularity of each replies[] element (simplified view vs full raw object).

Response structure & JSON Path:

raw=false (simplified replies):

  • $.data.content_id: target comment id (echo)
  • $.data.parent_nick: nickname of the parent comment (the one replied to)
  • $.data.reply_total: total second-level replies
  • $.data.count: number of replies returned this time
  • $.data.replies[N].reply_id: reply id
  • $.data.replies[N].nick_name: replier nickname
  • $.data.replies[N].content: reply content
  • $.data.replies[N].create_time: reply timestamp
  • $.data.replies[N].ip_wording: IP region
  • $.data.replies[N].identity_name: identity label
  • $.data.replies[N].from_ai / reply_is_elected: AI reply / featured flags
  • Pagination fields only in single-page mode (all_pages=false): $.data.offset / $.data.next_offset / $.data.has_more

raw=true (raw):

  • Outer content_id / parent_nick / reply_total / count (and offset / next_offset / has_more in single-page mode) are identical to raw=false; the only difference is that replies[] elements are full raw reply objects (including fields projected away in raw=false). Common paths remain $.data.replies[N].content / $.data.replies[N].reply_id / $.data.replies[N].nick_name.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_related_articles

[中文]

用途:

  • 传文章 URL,返回文章底部「关联 / 相关文章」。未开启该功能的文章返回空列表。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • url: 公众号文章链接(长 / 短链均可)。示例 https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(该文未开启关联文章,返回空)
  • raw: 可选,默认 True。True=完整原始响应;False=精简投影。

返回:

  • 关联文章列表

响应结构与 JSON Path:

raw=false(精简投影):

  • data 为拍平后的三字段:
    • $.data.ret: 返回码(0 正常)
    • $.data.count: 关联文章条数
    • $.data.articles[]: 关联文章列表(命中任一来源列表的合并;空文章为 []

raw=true(原始):

  • data 为完整原始响应:
    • $.data.article_size: 关联文章数量(对应精简模式 count
    • $.data.list[]: 关联文章原始列表(对应精简模式 articles
    • $.data.base_resp.ret: 返回码(对应精简模式 ret);base_resp.exportkey_token: 导出 token
    • $.data.empty_scene: 空结果场景码;$.data.show_rec_reason: 是否展示推荐理由;$.data.report_info: 上报信息(JSON 串)

[English]

Purpose:

  • Pass an article URL to get the “related articles” at the bottom of the article. Articles without this feature return an empty list.
  • 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.

Parameters:

  • url: WeChat MP article URL (long or short form). E.g. https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw (this article has related articles disabled, returns empty)
  • raw: Optional, default True. True=full raw response; False=simplified projection.

Return:

  • Related article list

Response structure & JSON Path:

raw=false (simplified projection):

  • data is flattened into three fields:
    • $.data.ret: return code (0 = OK)
    • $.data.count: number of related articles
    • $.data.articles[]: related article list (merged from whichever source list hits; [] when empty)

raw=true (raw):

  • data is the full raw response:
    • $.data.article_size: number of related articles (corresponds to count in simplified mode)
    • $.data.list[]: raw related article list (corresponds to articles in simplified mode)
    • $.data.base_resp.ret: return code (corresponds to ret in simplified mode); base_resp.exportkey_token: export token
    • $.data.empty_scene: empty-result scene code; $.data.show_rec_reason: whether to show recommendation reason; $.data.report_info: report info (JSON string)

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号文章广告/Get WeChat MP Article Ads

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_article_ad

[中文]

用途:

  • 传文章 URL,返回文章内嵌的广告位信息。该接口响应相对较慢,请耐心等待;未投放广告的文章返回空。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • url: 公众号文章链接。示例 https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(该文无广告,返回空)
  • raw: 可选,默认 True。True=完整原始响应;False=拍平后的广告列表。

返回:

  • 文章广告位信息

响应结构与 JSON Path:

raw=false(精简投影):

  • data 为拍平后的广告列表:
    • $.data.count: 广告条数(合并 advertisement_infoad_slot_data
    • $.data.ads[]: 广告项列表(无广告时为 []

raw=true(原始):

  • data 按抓到的响应聚合:
    • $.data.pages: 响应页数
    • $.data.results[]: 每页完整原始响应(广告原始字段在各页的 advertisement_info / ad_slot_data 内,即精简模式 ads 的来源)

[English]

Purpose:

  • Pass an article URL to get the embedded ad slot info of the article. This endpoint responds relatively slowly, please be patient; articles without ads return empty.
  • 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.

Parameters:

  • url: WeChat MP article URL. E.g. https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw (this article has no ads, returns empty)
  • raw: Optional, default True. True=full raw response; False=flattened ad list.

Return:

  • Article ad slot info

Response structure & JSON Path:

raw=false (simplified projection):

  • data is the flattened ad list:
    • $.data.count: number of ads (merged from advertisement_info and ad_slot_data)
    • $.data.ads[]: ad item list ([] when no ads)

raw=true (raw):

  • data is aggregated by the responses captured:
    • $.data.pages: number of response pages
    • $.data.results[]: full raw response per page (raw ad fields are inside advertisement_info / ad_slot_data of each page — the source of ads in simplified mode)

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号资料页/Get WeChat MP Account Profile

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_account_profile

[中文]

用途:

  • gh_username,返回公众号资料页:名称 / 头像 / 简介 / 认证主体类型等。
  • 部分账号(如示例号)字段稀疏,nick_name / signature / head_url 可能为 null
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • username: 公众号 gh_usernamegh_…)。来源:文章详情 content.user_name、或微信搜索 V2 fetch_search(business_type=account)结果的 jumpInfo.userName。示例 gh_363b924965e9
  • raw: 可选,默认 True。True=原始;False=精简解析。

返回:

  • 公众号资料页信息

响应结构与 JSON Path:

raw=false(精简解析,snake_case):

  • 公众号 username(gh_…): $.data.user_name
  • 昵称(可能为 null): $.data.nick_name
  • 用户角色: $.data.user_role
  • 服务类型(订阅号 / 服务号代码): $.data.service_type
  • 签名 / 简介(可能为 null): $.data.signature
  • 头像(可能为 null): $.data.head_url
  • 封禁类型(0=正常): $.data.ban_type

raw=true(原始,本接口默认):

  • data 为完整原始响应(几十个顶层字段),精简版字段对应其中嵌套位置:
    • 基础信息块: $.data.baseInfo(昵称 / 头像 / 简介等原始来源)
    • 账号信息: $.data.accountInfo(含 userName 等)
    • 统计信息: $.data.statInfo
    • 关联视频号: $.data.videoFinderInfo
    • 服务信息(自定义菜单原始来源): $.data.serviceInfo
    • 文章 Tab / 消息列表: $.data.articleTab / $.data.msgList
    • IP 属地: $.data.ipwording
    • 其余: liveInfo / nameCard / gender / setting / funcFlag

[English]

Purpose:

  • Pass a gh_username to get the official account profile: name / avatar / description / verification entity type, etc.
  • Some accounts (like the example) have sparse fields; nick_name / signature / head_url may be null.
  • 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.

Parameters:

  • username: Official account gh_username (gh_…). Sources: content.user_name from article detail, or jumpInfo.userName from WeChat Search V2 fetch_search (business_type=account) results. E.g. gh_363b924965e9
  • raw: Optional, default True. True=raw; False=simplified parsing.

Return:

  • Official account profile info

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • Account username (gh_…): $.data.user_name
  • Nickname (may be null): $.data.nick_name
  • User role: $.data.user_role
  • Service type (subscription / service account code): $.data.service_type
  • Signature / description (may be null): $.data.signature
  • Avatar (may be null): $.data.head_url
  • Ban type (0=normal): $.data.ban_type

raw=true (raw, default for this endpoint):

  • data is the full raw response (dozens of top-level fields); simplified fields map to nested locations:
    • Base info block: $.data.baseInfo (raw source of nickname / avatar / description)
    • Account info: $.data.accountInfo (with userName etc.)
    • Stats info: $.data.statInfo
    • Linked Channels account: $.data.videoFinderInfo
    • Service info (raw source of custom menu): $.data.serviceInfo
    • Article tab / message list: $.data.articleTab / $.data.msgList
    • IP region: $.data.ipwording
    • Others: liveInfo / nameCard / gender / setting / funcFlag etc.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号文章列表/Get WeChat MP Account Articles

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_account_articles

[中文]

用途:

  • gh_username,返回公众号历史发文(文章 tab)的单页列表。
  • 手动翻页:首页 offset 留空 → 从响应取 next_offset(base64 游标)→ 下次请求放进 offset 取下一页;is_end 为真即末页。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • username: 公众号 gh_usernamegh_…)。示例 gh_363b924965e9
  • page_size: 可选,默认 20,范围 10-20。每页文章数。
  • offset: 可选,翻页游标(base64),首页留空;翻页时传上一页响应的 next_offset。示例 CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ==
  • item_show_type: 可选,内容栏目(对应公众号主页的「文章 / 视频 / 音频」分栏)。留空 / 0=文章(默认)、5=视频、7=音频、8=贴图。默认不传=文章,行为不变。
  • raw: 可选,默认 True。True=原始;False=精简解析。

返回:

  • 公众号文章列表(单页)及翻页游标
提示:offset 是 base64 游标(含 +/=),统一走 POST body。本接口只取单页、不自动翻页

响应结构与 JSON Path:

raw=false(精简解析,snake_case):

  • 公众号 username: $.data.biz_username
  • 是否末页(0/1): $.data.is_end
  • 本页返回文章数: $.data.count
  • 下一页游标(翻页回传 offset;末页为 null): $.data.next_offset
  • 文章列表: $.data.articles[]
  • 单篇(N 为下标):
    • 文章 appmsgid: $.data.articles[N].app_msg_id
    • 标题: $.data.articles[N].title
    • 摘要: $.data.articles[N].digest
    • 链接: $.data.articles[N].url
    • 封面: $.data.articles[N].cover(多比例 $.data.articles[N].covers
    • 发布 / 更新时间戳: $.data.articles[N].create_time / .update_time
    • 群发内位置 / 类型: $.data.articles[N].idx / .msg_type / .item_show_type
    • 图文数 / 付费标志: $.data.articles[N].pic_count / .is_paid / .is_pay_subscribe

raw=true(原始,本接口默认):

  • data 顶层字段与精简版一致(biz_username / is_end / count / next_offset),但 articles[] 为完整原始群发条目(camelCase 嵌套):
    • 单条: $.data.articles[N].appMsg(含 baseInfo / detailInfo)、$.data.articles[N].baseInfomsgId / msgType / dateTime / status
    • 图文正文在 $.data.articles[N].appMsg.detailInfo(一次群发可含多篇:头条 / 次条)
    • 翻页同样用顶层 next_offset 回传 offset。做列表展示建议直接用 raw=false,路径更干净。

[English]

Purpose:

  • Pass a gh_username to get a single page of the account’s historical posts (article tab).
  • Manual paging: leave offset empty for the first page → take next_offset (base64 cursor) from the response → pass it as offset in the next request; is_end truthy means the last page.
  • 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.

Parameters:

  • username: Official account gh_username (gh_…). E.g. gh_363b924965e9
  • page_size: Optional, default 20, range 10-20. Articles per page.
  • offset: Optional pagination cursor (base64), leave empty for the first page; for the next page pass next_offset from the previous response. E.g. CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ==
  • item_show_type: Optional content tab (matches the “Articles / Videos / Audios” tabs on the account homepage). Empty / 0=articles (default), 5=videos, 7=audios, 8=image-text posts. Omitting it = articles, behavior unchanged.
  • raw: Optional, default True. True=raw; False=simplified parsing.

Return:

  • Single page of articles with pagination cursor
Tip: offset is a base64 cursor (contains +/=), hence POST body. This endpoint fetches a single page only and does not auto-paginate.

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • Account username: $.data.biz_username
  • Is last page (0/1): $.data.is_end
  • Articles returned on this page: $.data.count
  • Next-page cursor (pass back as offset; null at the last page): $.data.next_offset
  • Article list: $.data.articles[]
  • Single article (N is the index):
    • Article appmsgid: $.data.articles[N].app_msg_id
    • Title: $.data.articles[N].title
    • Digest: $.data.articles[N].digest
    • URL: $.data.articles[N].url
    • Cover: $.data.articles[N].cover (multi-ratio $.data.articles[N].covers)
    • Publish / update timestamps: $.data.articles[N].create_time / .update_time
    • Position / type within the batch: $.data.articles[N].idx / .msg_type / .item_show_type
    • Image count / paid flags: $.data.articles[N].pic_count / .is_paid / .is_pay_subscribe

raw=true (raw, default for this endpoint):

  • data top-level fields match the simplified version (biz_username / is_end / count / next_offset), but articles[] are full raw batch entries (nested camelCase):
    • Per entry: $.data.articles[N].appMsg (with baseInfo / detailInfo), $.data.articles[N].baseInfo (msgId / msgType / dateTime / status)
    • Article bodies are in $.data.articles[N].appMsg.detailInfo (one batch may contain multiple articles: headline / secondary)
    • Pagination also uses top-level next_offset passed back as offset. For list display, prefer raw=false for cleaner paths.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

获取公众号服务/自定义菜单/Get WeChat MP Account Services & Custom Menu

0.10 Credits / 次 /api/v1/wechat_mp/v2/fetch_account_services

[中文]

用途:

  • gh_username,返回公众号底部的自定义菜单 / 服务入口。未配置自定义菜单的账号返回空菜单。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。

参数:

  • username: 公众号 gh_usernamegh_…)。示例 gh_363b924965e9
  • raw: 可选,默认 True。True=原始;False=精简解析。

返回:

  • 公众号自定义菜单 / 服务入口

响应结构与 JSON Path:

raw=false(精简解析,snake_case):

  • 公众号 username: $.data.biz_username
  • 菜单项列表(无菜单时为 []): $.data.menu[] —— 每项为菜单按钮(名称 / 类型 / 子菜单 / 跳转),无自定义菜单的账号该数组为空。

raw=true(原始,本接口默认):

  • data 为完整原始菜单结构。未配置菜单的账号返回空对象 {}
  • 精简版的 menu[] 即由此原始结构提取而来。

[English]

Purpose:

  • Pass a gh_username to get the custom menu / service entries at the bottom of the official account. Accounts without a custom menu return an empty menu.
  • 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.

Parameters:

  • username: Official account gh_username (gh_…). E.g. gh_363b924965e9
  • raw: Optional, default True. True=raw; False=simplified parsing.

Return:

  • Custom menu / service entries of the official account

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • Account username: $.data.biz_username
  • Menu item list ([] when no menu): $.data.menu[] — each item is a menu button (name / type / sub-menu / jump); the array is empty for accounts without a custom menu.

raw=true (raw, default for this endpoint):

  • data is the full raw menu structure. Accounts without a configured menu return an empty object {}.
  • The simplified menu[] is extracted from this raw structure.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

0.10 Credits / 次 /api/v1/wechat_search/v2/fetch_search

[中文]

用途:

  • 微信「搜一搜」综合搜索,垂类由 business_type 字符串键切换,传关键词即可。
  • 可搜公众号 / 文章 / 视频号视频 / 直播 / 朋友圈 / 新闻 / 读书 / 图片 / 百科 / 微信指数等垂类。
  • 价格:0.01$/次
  • ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
  • ⚠️ 大整数 ID 精度:响应中的 docID / feedNonceId 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。

参数:

  • keyword: 搜索关键词(去空白后 1-100 字)。示例 人民日报
  • business_type: 可选,默认 all。垂类字符串键,仅支持 —— 综合 all / 公众号,视频号,服务号 account / 文章 article / 视频 video / 直播 live_stream / 朋友圈 moments / 新闻 news / 读书 book / 听书 listen / 图片 image / 百科 encyclopedia / 微信指数 weixin_index,传其他值将直接报错(422)。
  • 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: 可选。翻页游标。首页留空;翻页时把上一页响应里返回的 cursor 原样传回(须同时重复上一页的 sort / publish_time),配合 continue_flag 判断是否还有下一页。
  • raw: 可选,默认 True。True=原始搜索响应;False=精简解析。
💡 视频垂类专属的「时长」筛选见 /fetch_search_videosbusiness_type=video + duration)。

返回:

  • 搜索结果列表(结构随垂类略有差异)

典型链路:

  • 💡 拿视频号详情(媒体下载地址 / decode_key):搜索(video / all)的视频结果项不直接含媒体,只给 exportId(+ jumpInfo.extInfo.feedNonceId)。要下载 / 解密:取 exportId → 走视频号 V2 接口 /api/v1/wechat_channels/v2/fetch_video_detail(传 export_id)拿 mediaurl / url_token / decode_key)和明文 username。完整链路与解密说明见该接口文档。
  • 公众号结果项的 jumpInfo.userNamegh_…)可喂给公众号 V2 接口 /api/v1/wechat_mp/v2/fetch_account_profile / fetch_account_articles

响应结构与 JSON Path:

raw=false(精简解析,snake_case):

  • 关键词回填: $.data.keyword
  • 实际生效的垂类代码(如公众号=33554499): $.data.business_type
  • 结果总数(部分垂类为 null): $.data.total
  • 是否还有下一页: $.data.continue_flag
  • 翻页游标(原样回传接口的 cursor 参数取下一页): $.data.cursor
  • 服务端 offset(仅供参考,单独传回无法翻页): $.data.offset
  • 本页结果数: $.data.count
  • 拍平的结果项列表(已把各 box / subBox 的 items 合并): $.data.items[]
  • 单项(N 为下标,字段随垂类不同;以下为 account 公众号示例):
    • 标题(含 <em> 高亮): $.data.items[N].title
    • 描述: $.data.items[N].desc
    • 文档 id: $.data.items[N].docID
    • 类型名(如「公众号」): $.data.items[N].accTypeName
    • 跳转信息: $.data.items[N].jumpInfo.userName = gh_….nickName.signature
    • 视频垂类项另含 exportId(+ jumpInfo.extInfo.feedNonceId)→ 见上「典型链路」

raw=true(原始,本接口默认):

  • data 顶层: keyword / business_type / results做 items 拍平)
  • 完整结果集: $.data.results
  • 结果盒子数组: $.data.results.data[],每个 box 的结果在 $.data.results.data[M].items[]$.data.results.data[M].subBoxes[K].items[] —— 即 raw=falseitems[] 是把这些拍平后的结果。
  • 是否还有下一页: $.data.continue_flagraw=true / raw=false 均在顶层)
  • 翻页游标: $.data.cursor —— 原样回传接口的 cursor 参数取下一页;$.data.offset 仅为服务端 offset,单独传回无法翻页
  • box 内总数: $.data.results.data[M].totalCount(对应 raw=falsetotal
  • 做结果遍历建议直接用 raw=false(items 已拍平),路径更干净。

[English]

Purpose:

  • WeChat “Search” (搜一搜) universal search; the vertical is switched by the business_type string key — just pass a keyword.
  • Searches official accounts / articles / Channels videos / live streams / Moments / news / books / images / encyclopedia / WeChat Index, etc.
  • 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. 人民日报
  • business_type: Optional, default all. Vertical string key, only the following are supported — all / account / article / video / live_stream / moments / news / book / listen / image / encyclopedia / weixin_index; any other value is rejected (422).
  • sort: Optional, default default. Sort (result page “sort” dropdown, common to all verticals) — 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 (result page “time” dropdown, common) — 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 (it returns the first page every time).
  • cursor: Optional. Pagination cursor. Leave empty for the first page; for the next page pass back the cursor returned in the previous response (repeat the same sort / publish_time), and use continue_flag to check whether there are more pages.
  • raw: Optional, default True. True=raw search response; False=simplified parsing.
💡 The “duration” filter specific to the video vertical is available at /fetch_search_videos (business_type=video + duration).

Return:

  • Search result list (structure varies slightly by vertical)

Typical chains:

  • 💡 To get Channels video detail (media download address / decode_key): video result items from search (video / all) 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. See that endpoint’s docs for the full chain and decryption notes.
  • The jumpInfo.userName (gh_…) of official account result items can be fed into the MP V2 endpoints /api/v1/wechat_mp/v2/fetch_account_profile / fetch_account_articles.

Response structure & JSON Path:

raw=false (simplified, snake_case):

  • Keyword echo: $.data.keyword
  • Effective vertical code (e.g. account=33554499): $.data.business_type
  • Total results (null for some verticals): $.data.total
  • Has next page: $.data.continue_flag
  • Pagination cursor (pass back as the cursor parameter for the next page): $.data.cursor
  • Server-side offset (informational only; passing it back alone does not paginate): $.data.offset
  • Results on this page: $.data.count
  • Flattened result item list (items of all boxes / subBoxes merged): $.data.items[]
  • Single item (N is the index; fields vary by vertical; below is an account example):
    • Title (with <em> highlight): $.data.items[N].title
    • Description: $.data.items[N].desc
    • Document id: $.data.items[N].docID
    • Type name (e.g. “公众号”): $.data.items[N].accTypeName
    • Jump info: $.data.items[N].jumpInfo (.userName = gh_…, .nickName, .signature)
    • Video vertical items also carry exportId (+ jumpInfo.extInfo.feedNonceId) → see “Typical chains” above

raw=true (raw, default for this endpoint):

  • data top level: keyword / business_type / results (items are not flattened)
  • Full result set: $.data.results
  • Result box array: $.data.results.data[]; each box’s results are in $.data.results.data[M].items[] and $.data.results.data[M].subBoxes[K].items[] — the items[] of raw=false is the flattened merge of these.
  • Has next page: $.data.continue_flag (top level for both raw=true / raw=false)
  • Pagination cursor: $.data.cursor — pass it back as the cursor parameter for the next page; $.data.offset is only the server-side offset and passing it back alone does not paginate
  • Per-box total: $.data.results.data[M].totalCount (corresponds to total of raw=false)
  • For result iteration, prefer raw=false (items already flattened) for cleaner paths.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python

0.10 Credits / 次 /api/v1/wechat_search/v2/fetch_search_videos

[中文]

用途:

  • 专搜视频号视频(video 垂类),并支持搜索结果页里的「时长」「不限/最新/最热」排序与「时间」下拉。
  • 等价于综合搜索 /fetch_searchbusiness_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_searchbusiness_type=account)。
  • 💡 拿视频号详情(媒体下载地址 / decode_key):视频结果项不直接含媒体,只给 exportId(+ jumpInfo.extInfo.feedNonceId)。要下载 / 解密:取 exportId → 走视频号 V2 接口 /api/v1/wechat_channels/v2/fetch_video_detail(传 export_id)拿 mediaurl / 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.

输入参数 (input 对象)

无需任何特殊参数(传空对象 {} 即可)
cURL
Python