作者:Sorsa 编辑部

更新于 2026 年 7 月 11 日:核实了 4 月 20 日定价变更后当前的 X API 按量付费费率和每月 200 万条帖子上限,并据此刷新了采集成本场景。

核心要点: Twitter/X 上的政治数据分为几类:官方账号帖子、公开选举话语、互动信号,以及派生分数。自免费学术 API 通道 2023 年关闭以来,多数项目改用第三方 API 自己采集:按关键词、话题标签或用户名搜索,按日期界定拉取,追踪提及,按需限定范围并再水化(rehydrate)。

X 仍是政客发布消息、记者爆料、选民公开辩论的地方,因此成了各处最丰富的政治数据源之一。难的地方现在在访问上。为十年政治学论文提供支撑的免费学术研究通道已经没了,官方 API 改成计量、按企业定价。研究者依赖的公开数据集,则是无法再干净地再水化的冻结快照。

Sorsa API 是面向公开数据的 Twitter/X API 替代方案,正是为这种读密集型采集而做,用请求头里一个 API 密钥读取公开帖子、用户资料、搜索结果和互动,没有 OAuth 握手,也没有申请队列,有效费率从每 1,000 条推文 $0.02、每 1,000 份用户资料 $0.01 起。你用 /search-tweets 按关键词、话题标签或用户名搜索,用日期过滤把一次采集框在一个选举窗口里,再用 /mentions 追踪某位候选人的提及,全都按请求计费,不管一个数据集是几千条帖子还是几百万条,价格都可预测。

目录

X 上什么算政治数据 {#what-counts-as-political-data-on-x}

X 上的“政治数据”是个宽泛标签,底下盖着几个碰巧共用一个平台的不同数据集,而一份采集计划必须点明要的是哪一个。把它们混为一谈是第一个错误,因为每一类都需要不同的查询和不同的量预算。

官方账号产出是政客、政党、政府机构和候选人的帖子:一份关于官方参与者说了什么、什么时候说的干净、高信号记录。这是个小数据集,整个立法机构往往一个月也就几千条帖子。

议题和选举话语是公众围绕某位候选人、某项法案、某个话题标签或某场选举发的一切内容。这一类大得多,也嘈杂得多,一场全国投票前后能到数百万条帖子,是多数情绪和民意工作的基础。

互动和扩散是谁放大了什么、多快、传多远:转发、回复、引用帖,以及它们之间的时序。研究者靠这些研究影响力和叙事扩散。

派生信号是在原始帖子之上算出来的情绪、立场、话题和机器人概率分数。这些由你的分析产出,不是现成给你的,而且往往就是实际的研究成果。

第一类和第二类之间的量差,本身就是整个规划问题。政客账号数据集又小又便宜;广泛的选举话语采集才是成本和速率限制开始要紧的地方。

2026 年政治 X 数据从哪来 {#where-political-x-data-comes-from-in-2026}

拿到政治 X 数据有三条现实路线,认真的项目通常会把它们结合起来:官方 X API、冻结的公开研究数据集,以及通过第三方 API 自己采集。

官方 X API 权威又完整,因为它是 X 自己的第一方数据。但从 2023 年起,这条路不再是多数研究预算的现实答案。X 多年运营着一条专门的学术研究通道,免费而慷慨,还带全量存档搜索,已发表的政治学文献很大一部分就建在这条通道上。这条通道被拆掉了,一项 2024 年关于该 API 研究贡献的研究记录了这件事:在访问被切断之前,基于 Twitter 数据、自 2006 年以来发表的论文超过 2.7 万篇。新开发者现在拿到的是和所有人一样的计量、按量付费 API,而研究级别的量会撞进一份历史价格约 4.2 万美元/月起的 Enterprise 合同。

公开研究数据集是第二条路线:大、经过同行评审、已经采集好。研究者围绕重大选举发布了数百万帖级别的采集,例如超过 6 亿条推文的 Election2020 数据集,以及覆盖多国立法者账号的精选数据库。有两条局限。这类数据集冻结在一个固定窗口内,所以回答不了采集结束之后发生了什么;而且多数以推文 ID 而非完整帖子的形式分发,以遵守平台条款。你拿到的是一列 ID,必须通过 API 逐条取回来再水化。过去再水化免费又完整,现在得走付费 API,而数据集构建之后被删除的每条帖子都会返回空。政治敏感帖子的删除率很高,所以一个数年前的选举数据集,可能只能再水化到原始规模的一小部分,还偏向那些从未被撤下的内容。

第三条路线是自己采集:按量付费、当前、贴合你确切的问题,代价是要自己搭采集流程。一种常见组合是:用公开数据集当历史基线,用你自己的前向采集覆盖那个数据集窗口结束之后的一切,只在第一方完整性没得商量的地方做有针对性的官方 API 拉取。针对学术团体,Sorsa 在标准只读接口之上提供一个带折扣访问的学术研究方案

采集政治 Twitter 数据要花多少钱 {#how-much-does-collecting-political-twitter-data-cost}

通过按请求计费的 API 采集政治推文,每 1,000 条推文 $0.02 起、每 1,000 份用户资料 $0.01 起,一个完整月度套餐 $49 起。官方 X API 则按抓取的资源计费,成本直接随数据集大小增长。广泛的选举话语采集很快跑进四位数,或者撞上 X 每月 200 万条帖子的上限,突破上限只能签 Enterprise 合同。

下表把三个常见的政治采集作业映射到两个模型。Sorsa 数字是套餐级的;官方 X API 数字用的是完整 2026 X API 定价拆解里当前的按资源费率。

采集作业官方 X APISorsa 固定套餐
立法机构观察名单(约 500 个账号,资料加近期帖子)帖子每条 $0.005、资料每份 $0.010;几千条帖子的月度刷新要几十美元Starter 够用,$49/月,含 1 万次请求
辩论之夜话语(一个话题标签上约 20 万条帖子)约 20 万条帖子按每条 $0.005,一个晚上约 $1,000,计入 200 万条月上限Pro 够用,$199/月,含 10 万次请求
完整竞选话语(每月 200 万条以上帖子)超过 200 万条帖子读取上限,需要 Enterprise 合同,历史价格约 4.2 万美元/月起Enterprise,$899/月,含 50 万次请求

一次 Sorsa 请求在批量接口上最多返回 100 条推文或 200 份用户资料,所以一个套餐的请求数,比按帖数估算能覆盖的量大得多。这正是按请求计费在读密集型政治采集上占优的地方:同样的负载,最多可比官方 API 便宜 50 倍,也没有一张按资源计量的表压着上限。

有两个“每 1,000 条”的价格,取决于用哪个接口,两个都值得看。批量接口(/tweet-info-bulk/info-batch,每次请求最多 100 项)把有效成本压到每 1,000 条推文 $0.02、每 1,000 份用户资料 $0.01 起。搜索和时间线接口(/search-tweets/user-tweets/mentions)每次请求返回约 20 条帖子,Pro 套餐上折合约每 1,000 条推文 $0.10。话语采集走搜索接口,所以按搜索的数字做预算;资料查找和已知 ID 拉取走批量接口,成本低得多。完整明细见按请求计费的定价页

采集政客和官方账号的帖子 {#collecting-posts-from-politicians-and-official-accounts}

自己能搭出来的最干净的政治数据集,是官方账号产出。你从一份用户名列表出发(一个立法机构的一院、一个内阁,或一组候选人),通过 /user-tweets 按用户名、用户链接或数字用户 ID 拉每个账号的帖子。量小而稳定,远在话语采集的成本之下,还能给出这些参与者所发内容的完整第一方记录。

有两个做法让这个数据集靠得住。第一是用精选的观察名单,而不是靠徽章过滤。2022 年之后,蓝色认证徽章变成了付费订阅,而不再是身份核查,所以资料上的 verified 标志已经不能确认一个账号是真正的官方账号。可靠的办法是从权威来源(比如议会开放数据站点或学术立法者数据库)搭一份用户名列表,并核对一次。真实数据集就是这么搭的:一份来自 692 位巴西联邦众议员的 110 万条帖子的采集,就是从对照众议院开放数据网站取回并手动核对的账号开始,再按每位众议员的选举结果打标注。

第二是用稳定标识符。用户名会变,数字用户 ID 不会。通过 /username-to-id/{handle} 把每个用户名解析成 ID 一次并存下来,这样即便某位政客竞选中途改了账号名,观察名单依然有效。要一次性刷新整份名单的资料数据,/info-batch 每次请求最多接收 100 个用户名或 ID,返回完整资料,只需几次请求就能让整个立法机构的粉丝数和简介变更保持最新。当你需要某个单一账号的完整历史目录时,同一个时间线接口会把整个账号翻完,拉取一个用户完整发帖历史一文讲了这个做法。

采集选举和议题话语 {#collecting-election-and-issue-discourse}

公开话语(所有人发的内容,不只是官方)是更大也更难的采集。这是个关键词问题:你用候选人名字、话题标签和议题短语定义一个查询,钉住一种语言,再翻完结果。Sorsa 的 /search-tweets 接口接受完整的 Twitter 高级搜索语法,所以 from:、引号里的精确短语、话题标签和布尔 OR 都能放在一个查询里,机制在通过 API 搜索推文一文里详述。

查询怎么框定,本身就是一个在采集第一条帖子之前就塑造数据集的决定。你挑的话题标签和短语,决定了你捕捉的是谁的对话:只搜一方的话题标签,你衡量的就是一方。解决办法是用一套平衡、有记录的关键词,覆盖完整名单。一个常被引用的例子,用一套跨两位主要候选人的对称关键词过滤器采集了2016 年美国大选前后 220 万条推文,再把话题标签本身当作种子来构建带标注的训练集。要在一场进行中的竞选期间让关键词集保持最新,可以通过 /trends 按 WOEID 拉该地区的热门话题,把与政治相关的折进查询,这是真实公投研究用来在新兴话题爆发时抓住它们的一种做法。

想不写代码就构建并测试这些查询,可视化搜索生成器在浏览器里拼出一个高级搜索字符串,而高级搜索语法参考列出了该接口接受的每一个操作符。范围和框定一样重要:聚焦在窄窗口上的查询(一个辩论之夜或一项法案的新闻周期)往往比铺得很开的查询是更好的数据集,采集更便宜,指向的问题也更尖锐。

按日期界定的拉取和提及追踪 {#date-bounded-pulls-and-mention-tracking}

日期界限把一个开放、昂贵的查询变成一个限定范围的作业。Sorsa 用两种方式处理。在 /search-tweets 内部,高级搜索的 since:until: 操作符直接写进查询字符串,所以一个完整竞选窗口就当作一趟带日期的扫描来采集。要采集某位特定候选人或账号的提及,/mentions 在请求体里提供原生过滤:YYYY-MM-DD 格式的 since_dateuntil_date,外加 min_likesmin_repliesmin_retweets,在低互动噪音进入数据集之前就挡掉。工作流本身在追踪一个账号的提及一文里讲了。

下面的脚本采集一个日期窗口内匹配某个政治查询的每一条帖子,用响应游标翻完结果,把每一行写进你自己的存储。把 query 换成一个官方用户名的 from: 链,同一个循环就变成政客账号采集器。

python
import requests

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

# 任何政治查询在这里都有效:话题标签、议题短语、带 from: 的
# 候选人用户名,或者布尔组合。since:/until: 界定窗口,
# 所以一个辩论之夜或一场完整竞选就当作一个带日期的作业来采集。
query = "(#election OR ballot OR vote) since:2026-10-20 until:2026-11-05 lang:en"

def collect(query, order="latest", max_pages=50):
    rows, cursor = [], None
    for _ in range(max_pages):
        body = {"query": query, "order": order}
        if cursor:
            body["next_cursor"] = cursor
        r = requests.post(f"{BASE}/search-tweets", json=body,
                          headers=HEADERS, timeout=30)
        r.raise_for_status()
        data = r.json()
        for t in data.get("tweets", []):
            rows.append({
                "id": t["id"],
                "created_at": t["created_at"],
                "lang": t["lang"],
                "author": t["user"]["username"],
                "verified": t["user"]["verified"],
                "text": t["full_text"],
                "retweets": t["retweet_count"],
                "likes": t["likes_count"],
            })
        cursor = data.get("next_cursor")
        if not cursor:
            break
    return rows

rows = collect(query)
print(f"collected {len(rows)} posts")
# 把 rows 持久化到你自己的存储。那个文件就是你的政治数据集。

实时提及追踪有一个任何事后采集都比不了的优势:能在帖子被删除之前就抓住它们。政客删帖率很高,而一次删除本身就是一个发现,不只是缺失数据。定期向前轮询官方账号和候选人提及,就能把删除问题从静默的数据丢失,变成一个你能研究的数据点。在我们跑过的选举窗口采集里,最值得密集轮询的账号,往往正是删得最多的那些。所以一份紧凑的候选人观察名单和一个短轮询间隔,通常是搭配着来的。Sorsa 所有套餐统一 20 次/秒,余量足够在一个选举之夜里轮询一份候选人观察名单,而不会有一个按接口的速率窗口在采集中途重置。

构建带标注的政治数据集 {#building-a-labeled-political-dataset}

采集给你的是原始帖子;研究成果几乎总是一个带标注的数据集。组装是最直接的部分:跑上面的查询、按推文 ID 去重,存下你需要的字段,对多数政治工作来说就是帖子文本、作者用户名、时间戳、语言和互动计数。每条推文响应本身就带着完整作者资料,不用额外请求,所以粉丝数、账号年龄这类账号级特征不用第二次调用就在手边。怎么把一次原始拉取变成训练语料库,完整机制在为机器学习组装 Twitter 数据集一文里。

标注是方法选择的地方。由训练过的编码员做的手动标注是立场和情绪的黄金标准,但过了几千条帖子就扩展不动了。政治学文献里一个常见捷径是用话题标签给标签做种:一条带明显党派话题标签的推文当作弱标签,这些标签训练出一个分类器,再由分类器标注其余内容。上面 2016 年美国大选数据集正是这么做的,从话题标签信号派生出观点类别,构建了一个数十万条推文的训练集。具体到情绪和立场,给推文做情感分类的走查端到端覆盖了从采集到分类。

如果需要比实时采集窗口更早的历史基线,搜索接口可检索到 2006 年以来的完整推文存档,所以一个数据集能从过去的周期拉带日期的上下文,而不必从今天才开始。跨完整存档搜索旧推文一文深入讲了按日期范围的历史拉取。

毁掉一个政治数据集的陷阱 {#pitfalls-that-wreck-a-political-dataset}

有五种失败模式会悄悄毁掉那些没把它们考虑进去就搭起来的政治数据集,而且无论你走哪条采集路线都适用。

X 用户不是选民群体。 平台的用户构成在年龄、地理、教育和政治上都有偏,而且并不是去投票的那个群体。把 X 数据当作在线话语的度量,不是当作一次民调。把两者混为一谈的预测,记录一向很糟。

机器人和协同活动。 政治话题比几乎任何其他主题都更吸引自动化和协同发帖。原始帖子计数和原始情绪会被它们撑大,所以对认真的工作来说,机器人概率过滤不是可选项,而报告你过滤掉了什么是方法的一部分。

已删除和已编辑的帖子。 事后采集的数据集会静默地漏掉删除,而政治敏感帖子的删除率很高。只有前向采集能在一条帖子消失之前抓住它,这也是支持实时轮询、而非一次性历史拉取的理由。

关键词框定偏差。 查询就是一个假设。一套不平衡的关键词产出一个不平衡的数据集,事后再多分析也修不回来,所以话语那一节里那套平衡、有记录的查询,是最重要的上游决定。

可复现性。 如果一个数据集是从不透明的样本搭出来的,别人就重建不了。记录你自己的采集,包括确切的查询、日期、速率和接口,这样即便你的上游来源不可复现,你的工作也可复现。

一个来自实战的采集案例

某大学研究组研究一场全国选举,需要一个完整竞选窗口的公开话语,跨六周约 300 万条帖子,追踪两份候选人名单和一组议题话题标签。在官方 X API 上,这个量超过 200 万条月上限,会把项目推进一份历史价格约 4.2 万美元/月起的 Enterprise 合同,这笔经费他们根本够不着。把同样的采集换到按请求计费的套餐上,数据预算降到每月 $900 以下,降幅超过 90%;而且这个组是在选举之夜之前就向前跑采集,不是事后重建,所以被删的帖子在消失之前就被抓到了。取舍诚实且事先讲明:固定套餐只读,所以任何要写入的工作流都留在官方 API 上,但选举话语采集里没有哪一步需要写入。

常见问题 {#faq}

现在还能从 Twitter 为研究采集政治数据吗?

能,但路线变了。免费学术研究 API 通道 2023 年停用,所以多数研究者现在要么用更早采集的公开数据集,要么通过按请求计费的第三方 API 自己采集。官方 X API 仍然权威、仍是第一方,但研究级别的量是按企业定价,不是按单个项目定价。

怎么从一份政客名单采集推文?

从一份对照权威来源核对过的官方用户名精选名单出发,再通过用户时间线接口按用户名或数字 ID 拉每个账号的帖子。走按请求计费的 API 很便宜,因为量小,整个立法机构一个月也就几千条帖子,而批量资料接口每次请求最多刷新 100 个账号。

采集政治推文要花多少钱?

通过按请求计费的 API,采集从每 1,000 条推文 $0.02、每 1,000 份用户资料 $0.01 起,落在 $49 含 1 万次请求的月度套餐内。一个政客账号数据集一个月也就几美元。广泛的选举话语能跑到数百万条帖子,所以要限定日期范围和关键词集来控账单,别放一个开放查询硬跑。

怎么把一次政治推文采集限定到某个特定日期范围?

有两种方式。在关键词搜索内部,高级搜索操作符 since: 和 until: 写进查询字符串,所以一个竞选窗口就当作一趟带日期的扫描来采集。对某个特定账号的提及,提及接口接受 YYYY-MM-DD 格式的 since_date 和 until_date 字段,外加最低互动过滤。所以一个辩论之夜或单个新闻周期能干净地采集,不必拉整个时间线。

Twitter 数据能预测选举结果吗?

对这种说法要谨慎。X 用户不是选民群体的代表性样本,在年龄、地理和政治上都有偏,所以 X 数据衡量的是在线话语,不是投票意向。这份数据对研究叙事、议程设置和公众对事件的反应真正有价值,但作为独立的选举预测并不可靠。

怎么处理政治 Twitter 数据里的机器人?

默认它们就在场,因为政治话题比多数主题都更吸引自动化和协同发帖。原始帖子和情绪计数会被它们撑大,所以要在分析之前加一道机器人概率过滤,并报告你移除了什么。把原始量当作真实民意,是政治社媒工作里一个常见又严重的错误。

采集政治推文合法吗?

为研究或新闻采集并分析公开帖子被广泛接受,而公共利益的政治账号是彻底公开的。遵守 API 服务商的条款,尊重删除和受保护账号,并按适用于你的规则处理任何个人数据。公开平台上的公开政治言论,是研究起来争议最小的一类社交数据。

如何开始 {#getting-started}

政治采集起步便宜,也容易在投入前先测。注册即送 100 次免费请求:无需绑卡,永不过期,覆盖全部 40 个接口,足够端到端跑一次真实的政客账号拉取,或一个限定范围的话语查询。这相当于最多 1 万条推文或 2 万份用户资料,比按量付费服务商常给的小额试用额度多得多。

先通过在线试用工具 Playground 在浏览器里试一个查询,再把同一个调用用一个 ApiKey 请求头接进脚本。当一次采集超出限定范围的测试时,固定套餐以一个固定价格从每月 1 万次请求扩展到 50 万次,所以一个选举周期项目从一开始就有一份可预测的数据预算。


审校:Keksich(Sorsa 创始人,X API 研究者)

本指南取材于对 Sorsa API 的搜索、时间线和提及接口的亲手操作、截至 2026 年 7 月 11 日对照 X 开发者控制台费率核实的当前 X API 按量付费定价,以及关于 Twitter 数据采集的政治学文献,包括那项 API 研究贡献研究(arXiv 2404.07340)、Election2020 数据集(arXiv 2010.00600)、巴西立法者数据集(arXiv 1805.01589)和 2016 年美国大选观点研究(arXiv 2002.00854)。本文对比了两种采集模型:官方 X API 和 Sorsa 的按请求计费 API。