X Articles API:获取 Article 的完整正文
X Article 的正文不在分享它的帖子里:那条帖子只有一个 t.co 链接,所以 API 得直接请求 Article 本身,而官方 X API 把它按一次帖子读取计费,每 1,000 篇 $5.00。
简短回答: 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 的,所以请保留帖子的链接。
#官方 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 密钥,不用开发者账号。
-
获取密钥。 注册后,从控制台复制 API 密钥。送的 100 次免费请求能读 100 篇 Article,不论多长。
-
复制帖子链接。 取分享该 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,该接口不接受。
-
发送请求。 把帖子链接或它的 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"}' -
读取响应。 正文在
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 的响应有十一个字段:正文两份(全文和开头部分)、封面、发布时间、六个计数和作者。下面每个字段都取自线上接口文档。
| 字段 | 内容 |
|---|---|
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、用户名、名称、简介、粉丝数、关注数、发帖数、注册时间、认证状态 |
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 指向下一页,直到它返回为空。
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 文件,并在文件头部写上重要的信息:
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"", ""]
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。
官方 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 实际运行过。
来源
- About Articles, X Help Center(在新标签页打开)
- Articles on X are now live, X News, March 7, 2024(在新标签页打开)
- Which tweet.fields return an Article's body, X Developer Community, September 8, 2026(在新标签页打开)
- Get Post by ID, X API reference(在新标签页打开)
- Articles endpoints, X API documentation(在新标签页打开)
- X API pay-per-usage pricing(在新标签页打开)
- X API PPU expansions update, October 23, 2026(在新标签页打开)
- Article Data, Sorsa API reference(在新标签页打开)
- X Articles, Sorsa API docs(在新标签页打开)