Skip to main content
Sorsa API 可访问最早追溯至 2006 年 3 月的 X(原 Twitter)公开数据完整档案。历史数据与近期数据使用相同的端点、身份验证和分页方式。无需单独的“完整档案”套餐、企业合同,搜索也没有时间窗口限制。档案查询与其他调用共用请求配额,因此新账号赠送的 100 次免费请求也可用于测试,无需信用卡。 本页介绍历史数据所用的两个端点、平台可以与无法提供的信息,以及适合大规模处理的方式。
注意: 包含方法对比表、CSV 导出管道和更多代码示例的完整教程,请参阅博客上的历史 Twitter 数据:如何通过 API 搜索旧推文

端点

/search-tweets 支持完整的 X 搜索运算符,包括 since:until:from:to:min_faves:min_retweets:lang:filter:,直接写入 query 字段。/user-tweets 只接收账号标识符(user_linkusernameuser_id),返回该账号的完整时间线,不支持查询筛选。

按关键词搜索档案

需要跨用户获取某日期窗口内所有匹配查询的推文时,使用 /search-tweets。将带日期范围的查询放入 JSON 请求体:
order 支持 "latest"(按时间)和 "popular"(按互动排名)。按日期范围收集档案时使用 "latest";研究内容时,"popular" 可优先返回互动最高的帖子。

完整账号时间线

需要从新到旧获取某账号的完整发帖历史时,使用 /user-tweets,不受 3,200 条推文上限限制。
每次只提供 user_linkusernameuser_id 中的一种。使用 next_cursor 分页,直到它返回 null。端点按时间倒序遍历时间线。 如果只需要某账号在特定日期范围内的推文,应改用 /search-tweetsfrom: 运算符,例如 from:naval since:2020-01-01 until:2021-01-01/user-tweets 不接受日期筛选。

可以获取哪些数据?

历史推文与近期推文返回相同字段:
  • 完整正文,不截断、不替换 URL
  • 六项互动指标:likes_countretweet_countreply_countquote_countview_countbookmark_count
  • 包含完整作者资料的嵌入式 user 对象
  • 包含媒体 URL(图片、视频、GIF)和链接预览的 entities 数组
  • 对话元数据:conversation_id_strin_reply_to_tweet_idis_replyis_quote_status
  • 语言标记(lang
完整字段参考请参阅响应格式

平台层面的限制

以下限制来自 X,而非 Sorsa。任何公开 API 都无法绕过:
  • 已删除推文会从 X 搜索索引移除,无法获取。
  • 受保护账号不包含在任何公开搜索和时间线结果中。
  • 用户资料不是历史快照。 2014 年的推文返回的是作者当前简介、用户名和粉丝数,而非 2014 年的值。
  • 互动指标不是历史快照。 点赞、转推和浏览数反映当前累计值,而非过去某个日期的数值。如果需要特定时间点的互动数据,请通过实时监测持续采集,并自行保存指标。

最佳实践

拆分较大的日期范围

单次跨多年的查询不便于重试,也无法按时间段审计。跨年度收集可按月拆分,变化剧烈的事件窗口可按周拆分。

过滤转推噪声

历史热门搜索可能返回大量原生转推,淹没原创内容。进行情感、观点或内容模式研究时,加入 -filter:nativeretweets。若还要排除旧式 RT @user: 转推,使用 -filter:retweets

结合互动与日期筛选

since:/until:min_faves:min_retweets: 结合,可显著减少噪声和请求量。例如:

全球话题按语言拆分

针对全球事件,按 lang: 分别查询,比混合多种语言更容易得到整洁的各语言数据集。

分页直到游标为空

只在 next_cursor 为 null、空或缺失时结束。不要因为某页数量较少就提前停止。完整方式见分页

相关内容