文档
数据订阅 API
用 HTTP 查询已订阅的公众号文章数据。所有接口都是 GET,返回 JSON。
接口地址:https://data.mppro.top
快速开始
- 开通后提供一个
mpp_live_…开头的密钥(只显示一次,请妥善保存)。 - 把它放在请求头
Authorization: Bearer <密钥>。 - 先调
/v1/accounts列出已订阅的公众号与各自可查范围。 - 再用
/v1/posts按号和日期范围查文章。
curl "https://data.mppro.top/v1/posts?account=某财经观察&since=2026-10-16&until=2026-10-23&limit=100" \
-H "Authorization: Bearer mpp_live_xxxxxxxx"认证
所有 /v1/* 接口都要带 Authorization: Bearer <密钥>。
接口一览
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /v1/accounts | 我订阅的公众号列表(含可查窗口) |
GET | /v1/posts | 文章列表:按号 + 时间范围查,游标分页 |
GET | /v1/posts/{post_id} | 单篇详情 |
GET | /v1/usage | 我的用量与剩余额度 |
GET | /openapi.json | OpenAPI 3.1 描述文件 |
查询文章
GET /v1/posts
| 参数 | 必填 | 说明 |
|---|---|---|
account | 是 | 公众号名称(或编号);名称按订阅范围精确匹配,中文需 URL 编码 |
since | 否 | 起始日期 YYYY-MM-DD,缺省 = 可查窗口起点 |
until | 否 | 截止日期 YYYY-MM-DD,缺省 = 今天 |
limit | 否 | 每页条数,默认 50,最大 100 |
cursor | 否 | 上一页返回的 next_cursor,翻页用 |
fields | 否 | 只返回指定字段,逗号分隔(只能取交集) |
返回结构:
{
"ok": true,
"data": [
{
"post_id": "p_8f3k2",
"account_name": "某财经观察",
"title": "一文读懂 CPU Uncore",
"url": "https://mp.weixin.qq.com/s/...",
"publish_at": "2026-10-23T07:12:00+08:00",
"publish_date": "2026-10-23",
"read_count": 12000, "like_count": 88, "wow_count": 21,
"comment_count": 6, "share_count": 340,
"digest": "……", "is_original": true
}
],
"meta": {
"count": 1, "has_more": false, "next_cursor": "",
"window": { "since": "2026-10-16", "until": "2026-10-23", "allowed_days": 14 }
}
}字段
默认返回 13 个字段:标题、链接、发布时间、日期、阅读、点赞、在看、留言、转发、摘要、原创标记等。fields=title,read_count 可以只取其中几个;请求没有权限的字段会返回 403 并列出可用字段。
分页
用游标翻页,不要用 offset:把上一页的 meta.next_cursor 原样带回来即可。meta.has_more 为 false 时表示没有下一页。
import requests
KEY = "mpp_live_xxxxxxxx"
BASE = "https://data.mppro.top"
def fetch(account, since, until, cursor=""):
q = {"account": account, "since": since, "until": until, "limit": 100}
if cursor:
q["cursor"] = cursor
r = requests.get(f"{BASE}/v1/posts", params=q,
headers={"Authorization": f"Bearer {KEY}"}, timeout=30)
r.raise_for_status()
return r.json()
data = fetch("某财经观察", "2026-10-16", "2026-10-23")
for post in data["data"]:
print(post["publish_date"], post["title"], post["read_count"])额度与可查窗口
- 可查范围:从订阅当天开始累计,最多 7 天。 刚订阅时只有当天的数据,之后每天往后长,攒满 7 天为止(云端只保留近 7 天,更早的已归档到 R2)。
- 一次查询最多跨 31 天;分页每页最多 100 条。
- 默认每分钟 5 次、每天 2000 次,超限返回 429。
- 历史数据查询有单独的每日次数上限,默认 50 次。
错误码
| HTTP | code | 说明 |
|---|---|---|
401 | unauthorized | API Key 无效或已被停用 |
402 | payment_required | 订阅到期或超出配额 |
403 | forbidden | 该号不在订阅范围 / 超出可查窗口 / 字段无权限 |
404 | not_found | 文章不存在(或不在订阅范围) |
429 | rate_limited | 超过每分钟或每日调用上限 |
Node 示例:
const KEY = 'mpp_live_xxxxxxxx';
const res = await fetch(
'https://data.mppro.top/v1/posts?account=某财经观察&limit=100',
{ headers: { Authorization: `Bearer ${KEY}` } }
);
const { data, meta } = await res.json();
console.log(data.length, meta.has_more);