WeChat Official Accountswechat_mp.accounts.articles.list

Official Account article history API

An Official Account's published articles, newest first, without a QR login.

GEThttps://api.okdata.online/v1/wechat_mp/accounts/articles/list

Price

One call costs $0.04 and returns one page of about 10 articles. Collecting 1,000 articles takes about 100 calls, $4.00 in total. Each page is a separate call; failed calls are not charged.

Parameters

NameTypeDescription
id *requiredstringThe account original ID (gh_…) from accounts.search, or its WeChat ID. e.g. gh_363b924965e9
cursorstringOpaque cursor from page.next_cursor of the previous call. Each page is a separate call.
viewstringcompactstandardfullHow much of each object comes back. full adds platform-specific fields under ext. default standard
fieldsstringComma-separated fields to keep, to save tokens.

cursor, view and fields work the same on every endpoint: how requests work.

Returned fields

Each item is a Post.

FieldTypeDescription
idstringPost ID on the platform.
urlstringLink to the post.
typestringWhat kind of post it is.
titlestring | nullTitle, where the platform has one (videos, notes, articles).
textstringCaption, body or description as plain text; articles come as Markdown.
langstring | nullLanguage code, as reported or detected.
published_atstringWhen it was published, ISO 8601 in UTC.
authorAccountRefWho posted it.
metricsMetricsCounts at fetch time; a count the platform hides is null.
imagesstring[] | nullImage URLs for image posts and notes.
hashtagsstring[] | nullHashtags or topics, without the # sign.
extobjectPlatform-specific extras. Only returned with view=full.

Request

cURL
curl -G "https://api.okdata.online/v1/wechat_mp/accounts/articles/list" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'id=gh_363b924965e9'
Python
import os
import requests

resp = requests.get(
    "https://api.okdata.online/v1/wechat_mp/accounts/articles/list",
    headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
    params={"id": "gh_363b924965e9"},
    timeout=60,
)
body = resp.json()
if body["code"] != "ok":
    raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")

for row in body["data"]["items"]:
    print(row["id"], row["metrics"]["likes"], row["text"][:60])
print("cost: $" + body["meta"]["billing"]["amount"])
TypeScript
const url = new URL('https://api.okdata.online/v1/wechat_mp/accounts/articles/list');
url.searchParams.set('id', "gh_363b924965e9");

const res = await fetch(url, {
  headers: {
    Authorization: `Bearer ${process.env.OKDATA_API_KEY}`,
  },
});
const body = await res.json();
if (body.code !== 'ok') throw new Error(`${body.code}: ${body.message}`);

for (const row of body.data.items) {
  console.log(row.id, row.metrics.likes, row.text.slice(0, 60));
}
console.log('cost: $' + body.meta.billing.amount);
MCPtools/call
{
  "name": "call",
  "arguments": {
    "endpoint": "wechat_mp.accounts.articles.list",
    "params": {
      "id": "gh_363b924965e9"
    }
  }
}

Or ask an agent that has the MCP server connectedUse Official Account article history and list the five posts with the most likes, with links.

Response

200 · application/jsonmeta.billing.amount = 0.04
{
  "code": "ok",
  "request_id": "0f6c2a8e-4b1d-4e0a-9a51-3c7d2b9e1f20",
  "data": {
    "items": [
      {
        "id": "MzA5NTI3MjIwMA==_2650981234_1",
        "url": "https://mp.weixin.qq.com/s/k3Fq9xYbT0aP2mWnR8sVdA",
        "type": "article",
        "title": "一家 12 人的出海团队,怎么做第一年的增长",
        "text": "## 先说结论\n\n第一年最值钱的不是投放,而是……",
        "lang": "zh",
        "published_at": "2026-11-02T09:30:00Z",
        "author": {
          "id": "MzA5NTI3MjIwMA==",
          "username": "chuhai_growth",
          "name": "出海增长笔记",
          "avatar_url": "https://cdn.example.com/avatar/trailkit.jpg",
          "followers": null,
          "verified": true
        },
        "metrics": {
          "views": 1250000,
          "likes": 48200,
          "comments": null,
          "shares": null,
          "favorites": null,
          "reposts": null
        },
        "images": null,
        "hashtags": null
      }
    ]
  },
  "page": {
    "next_cursor": "eyJvIjoyMH0",
    "has_more": true
  },
  "warnings": [],
  "meta": {
    "capability": "wechat_mp.accounts.articles.list",
    "billing": {
      "amount": "0.04",
      "currency": "USD",
      "balance_after": "9.96"
    },
    "unavailable": {
      "metrics.comments": "platform",
      "metrics.shares": "platform",
      "metrics.favorites": "platform",
      "metrics.reposts": "platform"
    },
    "cached": false,
    "replayed": false,
    "fetched_at": "2026-11-11T08:00:00Z"
  }
}

Try it

This sends a real call to https://api.okdata.online and is billed as usual: at most $0.04. Failed calls are free. Your key goes only to that address and is never stored on this site.

Questions

How much does the Official Account article history API cost?

One call costs $0.04 and returns one page of about 10 articles. Collecting 1,000 articles takes about 100 calls, $4.00 in total. Each page is a separate call; failed calls are not charged.

How do I get the next page?

Pass page.next_cursor from the response back as the cursor parameter. When page.has_more is false there is nothing left. Every page is its own call at $0.04.

Do I need a WeChat Official Accounts account, cookies or a QR login?

No. You send only your okdata API key. The data is public data from WeChat Official Accounts; nothing is fetched with your own WeChat Official Accounts account.

Am I charged when a call fails?

No. Every error response says charged: false, except a timeout, which says charged: null until the outcome is known. Resend with the same Idempotency-Key and you are never charged twice.

What if WeChat Official Accounts does not show a field?

The field is null, and meta.unavailable names it with the reason: platform (the platform never shows it) or capability (we cannot fetch it yet).

Answers that use this endpoint

All WeChat Official Accounts endpoints → · Answers