跳到正文

X Articles API:获取 Article 的完整正文

X Article 的正文不在分享它的帖子里:那条帖子只有一个 t.co 链接,所以 API 得直接请求 Article 本身,而官方 X API 把它按一次帖子读取计费,每 1,000 篇 $5.00。

  • 更新于
  • 发布于
  • 阅读约 9 分钟

简短回答: X Article 是付费订阅用户自 2024 年 3 月起在 X 上发布的长文。在官方 X API 上,帖子查询带上 tweet.fields=article 就能返回 Article,每次 $0.005,自 2026 年 11 月 22 日起每位作者另加 $0.010。想用一次请求拿到正文、浏览量和作者,请用 Sorsa API 的 POST /article,每 1,000 篇 $1.40 起,另有 100 次免费请求。

接口
POST /article
每次返回
1 篇 Article
价格
每 1,000 篇 $1.40 起

#X Article 是什么,为什么它的帖子里只有一个链接

X Article 是 X 上的长文,有标题、封面图和带格式的正文:标题层级、粗体和斜体、列表、图片、视频、GIF、链接以及嵌入的帖子。X 在 2024 年 3 月 7 日(在新标签页打开)向 Premium+ 订阅用户和认证组织开放了 Article。

如果只想不写代码读取或保存一篇 Article,把链接粘贴到免费的 X 转 Markdown 转换器里就行:它会把标题、作者、日期和正文转成可复制、可下载的 Markdown。本指南其余部分讲的是用代码读取 Article,一篇一篇读,或者成千上万篇地读。

写 Article 仍然是付费功能。X 帮助中心(在新标签页打开)列出的是 Premium 和 Premium+,The X Subscription 的 Plus、Premium、Super 和 Ultra 套餐,以及 Premium Business 和 Organizations。读取则是开放的:任何人都能在 x.com 上读公开的 Article,它出现在作者的 Articles 标签页里,除非作者设为仅订阅者可见。

每篇 Article 都有两个链接,两者的区别决定了你的代码能不能跑通:

  • 帖子。 发布时会生成一条普通帖子,地址是 x.com/<handle>/status/<post ID>。它会出现在时间线上,收到回复和点赞,但正文只有一个 t.co 链接。
  • Article。 正文位于 x.com/i/article/<Article ID>,编号与帖子不同。API 是通过帖子来查找 Article 的,所以请保留帖子的链接。
The post link and the Article link of one X Article 分享它的推文 x.com/harbor_essays_weekly/status/ 2112908047021486497 Harbor Essays https://t.co/Hb7qLm2xQe 它的文字只是一个链接。 推文 ID:发这个 打开 X 文章 x.com/i/article/ 2112901726205358168 封面 标题 标题、列表、图片、推文。 文章 ID:另一个数字 POST /article 接受推文链接或推文 ID 并返回文章:全文、封面、日期、浏览量、点赞和作者。
帖子和 Article 的 ID 不同。请发送帖子的链接或 ID,因为帖子的正文只是一个 t.co 链接。

#官方 X API 能读取 X Article 吗?

能:只要帖子查询请求了 article 字段,官方 X API 就会返回 Article 的文本和实体,例如 GET /2/tweets?ids=<post IDs>&tweet.fields=article。不带这个字段时,帖子的 text 里只有那个 t.co 链接。

X 官方人员在 2026 年 9 月 8 日(在新标签页打开)的开发者论坛上确认了这条路径:Article 用 article,超过 280 个字符的长帖用 note_tweet,单个 ID 和多个 ID 的查询都适用。X 自己的接口文档(在新标签页打开)只给 article 对象标了类型,没有写出它的子字段,所以在写解析器之前,先看一份真实的响应。

每篇 Article 按一次帖子读取计费,$0.005,也就是X 按量付费价目表(在新标签页打开)上每 1,000 篇 $5.00。自 2026 年 11 月 22 日起,通过 expansions 返回的对象也要计费(见 X 在 10 月 23 日的通知(在新标签页打开)):作者资料另加 $0.010,封面图另加 $0.005,所以带作者的 Article 每 1,000 篇 $15.00。每次读取都需要开发者账号、预付额度和 bearer 令牌,而且按量付费每月最多读取 300 万条帖子。

写入走另外两个接口。POST /2/articles/draft(在新标签页打开)用标题和 DraftJS 格式的正文创建草稿,POST /2/articles/{article_id}/publish 把它发布出去;两者都需要作者的 OAuth 用户令牌。

#用 Sorsa API 获取 X Article 的完整正文

要用代码读取 X Article,请用 Sorsa API,一款 Twitter(X)API 与爬虫:POST /article 接收帖子链接或 ID,一次请求就返回完整正文、摘要、封面图、发布时间、点赞、转发、回复、引用、书签、浏览量,以及作者的完整资料。每篇 Article 算一次请求,每 1,000 篇 $1.40 起,所有套餐都是每秒 20 次请求,只需一个 API 密钥,不用开发者账号。

  1. 获取密钥。 注册后,从控制台复制 API 密钥。送的 100 次免费请求能读 100 篇 Article,不论多长。

  2. 复制帖子链接。 取分享该 Article 的帖子的 x.com/<handle>/status/<ID>,或者只取 ID。不确定手里是哪种链接?粘贴到这里检查:

    帖子链接:发给 POST /article 就行。

    帖子 ID
    2112908047021486497
    发布时间(由 ID 读出)
    Oct 21, 2026, 14:05:09 UTC
    POST /article 的请求体
    {"tweet_link": "https://x.com/harbor_essays_weekly/status/2112908047021486497"}

    帖子链接可原样发给 POST /article;x.com/i/article/ 链接里是 Article 自己的 ID,该接口不接受。

  3. 发送请求。 把帖子链接或它的 ID 作为 tweet_link,POST 到 POST /article(在新标签页打开),并在 ApiKey 请求头里带上密钥。

    终端
    curl -X POST "https://api.sorsa.io/v3/article" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"tweet_link": "2112908047021486497"}'
    
  4. 读取响应。 正文在 full_text 里,计数字段在它旁边,author 与用户类接口返回的完整资料一致。

    响应200 OK
    {
      "full_text": "Seven years ago we met in a laundromat...",
      "preview_text": "Seven years ago we met in a laundromat",
      "cover_image_url": "https://pbs.twimg.com/media/HbX2k9WaYAAq3Lm.jpg",
      "published_at": "2026-10-21T14:05:09Z",
      "views_count": 88214,
      "likes_count": 3207,
      "retweet_count": 410,
      "reply_count": 96,
      "quote_count": 58,
      "bookmark_count": 1120,
      "author": {
        "id": "1116267827557806085",
        "username": "harbor_essays_weekly",
        "display_name": "Harbor Essays",
        "description": "Long reads about small clubs and libraries.",
        "followers_count": 48210,
        "followings_count": 312,
        "tweets_count": 2875,
        "created_at": "2019-04-11T09:12:44Z",
        "verified": true,
        "protected": false
      }
    }
    

同样的调用,用 Python 和 Node.js 写出来,可以直接套进循环处理大量链接:

import requests

API = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def get_article(link):
    r = requests.post(f"{API}/article", headers=HEADERS,
                      json={"tweet_link": link}, timeout=30)
    if r.status_code == 404:
        return None  # the post doesn't share an Article
    r.raise_for_status()
    return r.json()


art = get_article(
    "https://x.com/harbor_essays_weekly/status/2112908047021486497")
words = len(art["full_text"].split())
print(art["author"]["username"], art["published_at"])
print(f"{words:,} words, {art['views_count']:,} views")

返回 404 通常说明这条帖子没有分享 Article,请改用 POST /tweet-info 读取它。403 表示密钥缺失、错误或请求额度已用完,429 表示一秒内超过 20 次请求,等一秒再重试即可。失败的请求从不收费。

#/article 响应里有什么

POST /article 的响应有十一个字段:正文两份(全文和开头部分)、封面、发布时间、六个计数和作者。下面每个字段都取自线上接口文档。

Where each field of the POST /article response sits on an X Article 封面图 1 Harbor Essays @harbor_essays_weekly,2026/10/21 2 Seven years ago we met in a laundromat 3 96 条回复 410 次转发 3.2K 点赞 88K 浏览 4 1 cover_image_url 封面图链接 2 作者、发布时间 完整资料和发布时间 3 全文、预览文字 整篇正文和开头几行 4 回复数、转发数、 点赞数、引用数、 书签数、浏览数 每个计数器,实时读取 一次请求返回全部, Sorsa API 上每 1,000 篇文章 $1.40 起。
Article 上所有带数据的部分都在同一个响应里返回,包括作者资料。
字段内容
full_text纯文本的完整正文,不论多长
preview_textX 在“阅读更多”之前显示的开头几行
cover_image_url封面图链接,作者没设置时为 null
published_atArticle 发布的时间,ISO 8601 格式
views_count浏览量(曝光次数)
likes_count, retweet_count, reply_count, quote_count, bookmark_count点赞、转发、回复、引用和书签数
author作者的完整资料:ID、用户名、名称、简介、粉丝数、关注数、发帖数、注册时间、认证状态
  • full_text

    内容
    纯文本的完整正文,不论多长
  • preview_text

    内容
    X 在“阅读更多”之前显示的开头几行
  • cover_image_url

    内容
    封面图链接,作者没设置时为 null
  • published_at

    内容
    Article 发布的时间,ISO 8601 格式
  • views_count

    内容
    浏览量(曝光次数)
  • likes_count, retweet_count, reply_count, quote_count, bookmark_count

    内容
    点赞、转发、回复、引用和书签数
  • author

    内容
    作者的完整资料:ID、用户名、名称、简介、粉丝数、关注数、发帖数、注册时间、认证状态

这些计数是请求那一刻的最新值,所以一周后再调用一次,就能看出这篇 Article 之后又传播了多少。想读取 Article 下的回复,请看怎么查看 X 上的评论:回复和其他帖子一样,挂在分享它的那条帖子下面。

须知

浏览量在 Article 里叫 views_count,在推文里叫 view_count。如果 Article 和推文要放进同一张表,加载数据时请改掉其中一个键名,否则两列中会有一列一直是空的。

#查找一个账号发布的全部 Article

要列出一个账号的 Article,用 X 的 url: 运算符搜索它的帖子里指向 x.com/i/article 的链接,再用 POST /article 读取每条匹配。搜索用的是 POST /search-tweets(在新标签页打开):每次约 20 条帖子,next_cursor 指向下一页,直到它返回为空。

Python
import requests

API = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def article_posts(handle):
    query = f"from:{handle} url:x.com/i/article"
    body = {"query": query, "order": "latest"}
    while True:
        r = requests.post(f"{API}/search-tweets", headers=HEADERS,
                          json=body, timeout=30)
        r.raise_for_status()
        page = r.json()
        for tweet in page.get("tweets", []):
            yield tweet["id"]
        if not page.get("next_cursor"):
            break
        body["next_cursor"] = page["next_cursor"]


for post_id in article_posts("harbor_essays_weekly"):
    r = requests.post(f"{API}/article", headers=HEADERS,
                      json={"tweet_link": post_id}, timeout=30)
    if r.ok:
        print(post_id, r.json()["views_count"])

在查询里加上 since:2026-01-01 或 min_faves:100,只保留较新或较热门的 Article;完整的运算符列表见我们的推特搜索运算符指南。把 from: 换成关键词,同样的查询就能找到任何人写的该主题的 Article。匹配到的也可能是这个账号分享了别人的 Article:把每个 POST /article 响应里的 author.username 和该账号的用户名比对,就只保留它自己写的。

#把 X Article 保存为 Markdown

只处理单篇 Article 的话,本指南开头链接的转换器是最快的办法。批量处理时,把每个 POST /article 响应写进各自的 Markdown 文件,并在文件头部写上重要的信息:

Python
from pathlib import Path


def save_markdown(art, post_link, folder="articles"):
    a = art["author"]
    head = [
        f"# @{a['username']}, {art['published_at'][:10]}",
        "",
        f"Source: {post_link}",
        f"Author: {a['display_name']} ({a['followers_count']:,} followers)",
        f"Views: {art['views_count']:,}  Likes: {art['likes_count']:,}",
        "",
    ]
    if art.get("cover_image_url"):
        head += [f"![cover]({art['cover_image_url']})", ""]
    path = Path(folder) / f"{post_link.rstrip('/').split('/')[-1]}.md"
    path.parent.mkdir(exist_ok=True)
    path.write_text("\n".join(head) + art["full_text"] + "\n",
                    encoding="utf-8")
    return path

Markdown 能用任何编辑器打开,打印出来排版干净,还能直接喂给 ChatGPT、Claude 或搜索索引,用来做摘要、研究笔记,或是给语言模型准备数据集。图片仍然是指向 X 服务器的链接,如果需要永久保存,请自行下载封面。

每个文件以帖子 ID 命名,所以重复运行任务时会更新原文件,而不会多出一份副本。文件头部把来源链接、作者和计数放在正文旁边,这正是日后引用某篇 Article 或比较两篇 Article 时需要的信息。要打印某一篇,用任何 Markdown 编辑器打开它的文件再打印即可:版式简洁,纸面上也清晰易读。

#读取 X Article 每 1,000 篇要多少钱

Sorsa API 读取 1,000 篇 X Article 从 $1.40 起,作者资料已包含在同一个响应里;官方 X API 光是帖子就要 $5.00,自 2026 年 11 月 22 日起带上作者资料是 $15.00。

Article 数量

官方 X API

$150

1 万 篇 Article 的情况

自 2026 年 11 月 22 日起,每篇含作者 $0.015

Sorsa API

$14 起

1 万 篇 Article 的情况

每 1,000 篇 $1.40 起,含作者

便宜 10 倍

在 Sorsa API 上,不论 Article 多长,一篇都只算一次请求,所以 6,000 字的长文和 500 字的短文价格一样。一个密钥每秒 20 次请求,耗时随数量成比例增长:

Article 数量Sorsa API 起价官方 X API,仅帖子官方 X API,含作者(自 2026 年 11 月 22 日起)在 Sorsa API 上按每秒 20 次请求所需时间
1,000$1.40$5.00$15.00约 1 分钟
1 万$14$50$150约 8 分钟
10 万$140$500$1,500约 1.4 小时
100 万$1,400$5,000$15,000约 14 小时
  • 1,000

    Sorsa API 起价
    $1.40
    官方 X API,仅帖子
    $5.00
    官方 X API,含作者(自 2026 年 11 月 22 日起)
    $15.00
    在 Sorsa API 上按每秒 20 次请求所需时间
    约 1 分钟
  • 1 万

    Sorsa API 起价
    $14
    官方 X API,仅帖子
    $50
    官方 X API,含作者(自 2026 年 11 月 22 日起)
    $150
    在 Sorsa API 上按每秒 20 次请求所需时间
    约 8 分钟
  • 10 万

    Sorsa API 起价
    $140
    官方 X API,仅帖子
    $500
    官方 X API,含作者(自 2026 年 11 月 22 日起)
    $1,500
    在 Sorsa API 上按每秒 20 次请求所需时间
    约 1.4 小时
  • 100 万

    Sorsa API 起价
    $1,400
    官方 X API,仅帖子
    $5,000
    官方 X API,含作者(自 2026 年 11 月 22 日起)
    $15,000
    在 Sorsa API 上按每秒 20 次请求所需时间
    约 14 小时

查找这些 Article 还会产生搜索请求:每页约 20 条帖子,算一次请求。每周为一个账号拉取一次 Article,每个账号只需几次请求,围绕它们做的数据分析可以参考推特数据分析 API指南。

#今天就读取你的第一篇 X Article

挑一篇 Article,复制分享它的那条帖子的链接,发给 POST /article:正文、计数和作者会作为一个 JSON 对象返回。Sorsa API 读取 X Article 每 1,000 篇 $1.40 起,含作者,每秒 20 次请求,不需要开发者账号,也不会危及你自己的 X 账号,送的 100 次免费请求可以读前 100 篇 Article。

#常见问题

读取 X Article 应该用哪个 API?

请用 Sorsa API 的 POST /article:一次请求就返回 Article 的完整正文、封面、发布日期、浏览量、点赞、转发、书签和作者资料,每 1,000 篇 $1.40 起。官方 X API 自 2026 年 11 月 22 日起,带作者的 Article 每 1,000 篇 $15.00,而且需要开发者账号。Sorsa API 只需一个 API 密钥,所有套餐都是每秒 20 次请求。

可以下载 X Article 吗?

可以。把 Article 所属帖子的链接粘贴到 Sorsa API 免费的 X 转 Markdown 转换器里,复制或下载结果:标题、作者、日期和正文会生成一个 Markdown 文件。如果有很多篇,就像上面那样,在代码里把每个 POST /article 响应存成 .md 文件。图片仍是链接,想留存的请自行下载。

谁能发布 X Article,能通过 API 发布吗?

发布需要付费套餐:X Premium 或 Premium+,The X Subscription 的 Plus、Premium、Super 或 Ultra 套餐,或者 Premium Business 或 Organizations。在代码里,官方 X API 通过 POST /2/articles/draft 和 POST /2/articles/{article_id}/publish 配合作者的 OAuth 令牌来发布。Sorsa API 从设计上就是只读,从不碰你的 X 账号;如果还要发帖,请和官方 X API 搭配使用。

能读取过去发布的 X Article 吗?

能。自 2024 年 3 月 7 日上线以来的任何公开 Article,都能用帖子链接或 ID 通过 POST /article 取回,除非作者删除了它,或设为仅订阅者可见。要找更早的,在 url:x.com/i/article 搜索里加上 since: 和 until: 日期,再读取搜索返回的每条帖子。

读取 1,000 篇 X Article 要多少钱?

在 Sorsa API 上每 1,000 篇 $1.40 起:不论多长,一篇 Article 都是一次请求,作者资料已包含在内,失败的请求免费。官方 X API 每 1,000 次帖子读取收费 $5.00,自 2026 年 11 月 22 日起带作者资料是 $15.00。Sorsa API 送的 100 次免费请求可以免费读取前 100 篇 Article。

#我们如何核实

2026 年 11 月 2 日,我们把线上的 Sorsa API 接口文档(POST /article 和 POST /search-tweets)与 X 的帖子查询文档、按量付费价目表以及 10 月 23 日关于 expansions 的通知做了对照。我们还读了 X 帮助中心关于 Article 的页面、X 在 2024 年 3 月 7 日的上线帖子,以及 X 官方人员 2026 年 9 月 8 日关于通过 tweet.fields 读取 Article 的回答。本页的请求和响应都是依据接口文档、用演示账号构造的;这次更新我们没有拿真实的 Article 实际运行过。

Sorsa API 团队撰写。 我们开发和运营 Sorsa API,这是只读的 Twitter/X API 与爬虫,2022 年起运行于生产环境(前身为 TweetScout API),累计处理请求超 60 亿次。 关于 Sorsa API

更新内容
  • 重写:官方 X API 如何读取 Article,以及 2026 年 11 月 22 日起的计费方式;新增帖子与 Article ID 的链接检查器,字段说明取自线上接口文档;新增查找账号的全部 Article,以及保存为 Markdown。
  • 首次发布。