面向学术研究的 Twitter/X API 与爬虫
搜索可回溯到 2006 年的全量历史数据,每次补全 100 个推文 ID,拉取时间线、回复和粉丝。学术访问权限按你的研究定制:从为项目赠送请求到大幅折扣。
无需绑卡,永不过期。
用于 ,需要约
学术访问权限还能更优惠:按你的研究定制,从赠送请求到大幅折扣。
用这个计划申请学术访问权限,围绕你的研究定制
为你的研究赠送请求
我们把项目所需的请求添加到你的 Sorsa API 账号。
套餐大幅折扣
适合长期或大型项目:任意套餐享学术价格。
每个获批项目都能获得
- 全部接口
- 每秒 20 次请求
- 与所有用户相同的文档和 API
- 团队快速回复
谁可以申请
- 博士生
- 硕士生
- 教师
- 博士后
- 科研人员
- NGO 和新闻机构研究人员
任何学科的非商业研究,使用机构邮箱申请。
申请大约需要两分钟。在此期间,你的 100 次免费请求可用于所有接口。
申请学术访问权限研究需要的每种方法
一个 API 密钥,同样的接口,既能查 2006 年,也能查今天早上。
历史搜索
关键词语料、事件窗口、长时间序列。
"heat wave" lang:en since:2022-07-01 until:2022-08-01 -filter:nativeretweets每次请求约 20 条推文,可回溯到 2006 年
按 ID 获取推文
补全共享数据集,或复现已发表的语料。
POST /tweet-info-bulk {"tweet_links": [100 IDs]}每次请求 100 条推文,每条都带作者
账号时间线
政治人物、记者或机构的固定样本。
from: 加日期,或用 /user-tweets 获取账号的完整历史每次请求约 20 条推文,没有 3,200 条上限
对话
回复树、引用链、转发用户。
/comments, /quotes, /retweeters每次请求约 20 条
网络
任意公开账号的粉丝和关注。
/followers?username=…每页 200 份资料
用户资料和账号背景
每次 100 份用户资料;“关于此账号”中的国家、用户名变更和认证状态。
/info-batch, /about每次请求 100 份资料
列表、社区、Space
一个 X 列表可盯住最多 5,000 个账号;社区推文和成员;Space 元数据。
/list-tweets?list_id=…每次请求约 20 条推文
每条推文都带着它的变量
回复 @heat_records_archive
我们的开放数据集发布了:120 万条关于 2022 年欧洲热浪的推文,附推文 ID 和补全代码。#heatwave
2023 年 8 月 18 日上午 10:42
9.64 万 次查看211 次收藏
42 条回复318 次转发27 条引用1,200 个赞
userusername、followers_count、created_at、verified、locationconversation_id_strin_reply_to_tweet_id在推文串中的位置full_textlang全部正文及其语言entities媒体和链接created_at发布时间,精确到秒view_countbookmark_count查看数和收藏数likes_countretweet_countreply_countquote_count当前的互动数据设计研究时请考虑这些限制
已删除的推文和受保护账号不会返回。补全后的列表会比原始列表小。
数量是当前的。点赞、查看和粉丝数都是采集时的数值;如需随时间变化的数量,请定时采集并保留每次快照。
用户资料是当前的。2014 年的推文附带的是作者现在的资料。
需要轮询,没有数据流。新推文在你请求时才返回;一次请求可读取最多 5,000 个账号的 X 列表。
无法获取:谁点赞了推文、用户的点赞或收藏、私信、过去的粉丝列表。
在规划完整采集之前,先用免费请求试试你的日期范围。
从 ID 列表到数据集
import csv, json, time, requests
URL = "https://api.sorsa.io/v3/tweet-info-bulk"
KEY = "YOUR_API_KEY"
ids = [row[0] for row in csv.reader(open("tweet_ids.csv"))]
with open("tweets.ndjson", "w") as out:
for i in range(0, len(ids), 100):
while True:
r = requests.post(URL, headers={"ApiKey": KEY},
json={"tweet_links": ids[i:i + 100]})
if r.status_code != 429:
break
time.sleep(1) # 20 requests per second per key
r.raise_for_status()
for tweet in r.json()["tweets"]:
out.write(json.dumps(tweet) + "\n")library(httr2)
library(jsonlite)
ids <- readLines("tweet_ids.txt")
batches <- split(ids, ceiling(seq_along(ids) / 100))
fetch <- function(batch) {
resp <- request("https://api.sorsa.io/v3/tweet-info-bulk") |>
req_headers(ApiKey = Sys.getenv("SORSA_API_KEY")) |>
req_body_json(list(tweet_links = as.list(batch))) |>
req_retry(max_tries = 5) |>
req_perform()
resp_body_json(resp)$tweets
}
tweets <- unlist(lapply(batches, fetch), recursive = FALSE)
write_json(tweets, "tweets.json", auto_unbox = TRUE)- 100 万个 ID 大约需要八分钟(每秒 20 次请求)。
- 失败的请求不收费。
- 用 AI 助手写代码?把我们的文档文件交给 Claude Code、Cursor 或 Codex,或连接 MCP 服务器。用 AI 构建
写给伦理委员会和方法部分
审查者会问什么
- 什么数据?
- 只有公开推文和用户资料。没有受保护账号,没有私信。
- 有任何互动吗?
- 没有。Sorsa API 是只读的:从不发推、点赞、关注或发消息。
- 用谁的账号?
- 不涉及任何 X 账号或登录,无论是你的还是别人的。
- 服务商保留什么?
- 你发出了哪些请求,保留一年;完整响应,保留 30 天。
- 谁知道这个项目?
- X 不会知道是谁在查询:你的密钥、账号和身份都只留在我们这里。
- 你的副本存在哪里?
- 按你的数据管理计划存放。它属于你。
- 需要书面材料吗?
- 如有需要,我们可以为你的伦理委员会写一封关于数据来源的简短信函。
方法段落
2.1 数据采集
推文通过 Sorsa API(https://api.sorsa.io)采集,这是一个面向 X(Twitter)公开数据的独立 API,采集方式为对 2024 年 1 月 1 日至 3 月 31 日进行全量历史搜索。
要分享数据集?请分享推文 ID 和代码,让其他人可以补全并核查你的工作。
申请学术访问权限
大约两分钟。团队会有专人阅读每份申请,并通过邮件回复。
接下来会发生什么
- 1
提交表单。
- 2
我们阅读申请。
如有不清楚的地方,我们会询问。
- 3
我们确定访问权限。
研究所需的请求或大幅折扣,覆盖研究的整个周期。
- 4
你开始采集。
访问权限会出现在你的 Sorsa API 账号上;每个密钥都是每秒 20 次请求。
在此期间,你的 100 次免费请求可用于所有接口。从 100 次免费请求开始
更喜欢邮件?用机构邮箱写信到 contacts@sorsa.io。
研究人员常问的问题
学术访问权限,围绕你的研究定制
- 为你的研究赠送请求我们把项目所需的请求添加到你的 Sorsa API 账号。
- 套餐大幅折扣适合长期或大型项目:任意套餐享学术价格。
研究需要的每种方法
一个 API 密钥,同样的接口,既能查 2006 年,也能查今天早上。
每条推文都带着它的变量
user回复 @heat_records_archive
in_reply_to_tweet_id我们的开放数据集发布了:120 万条关于 2022 年欧洲热浪的帖子,附帖子 ID 和还原完整内容的代码。#heatwave
full_text2023 年 8 月 18 日上午 10:42
created_at42 回复318 转推27 引用1.2K 赞
likes_count …旧推文的字段和今天的一样。
从 ID 列表到数据集
import csv, json, time, requests
URL = "https://api.sorsa.io/v3/tweet-info-bulk"
KEY = "YOUR_API_KEY"
ids = [row[0] for row in csv.reader(open("tweet_ids.csv"))]
with open("tweets.ndjson", "w") as out:
for i in range(0, len(ids), 100):
while True:
r = requests.post(URL, headers={"ApiKey": KEY},
json={"tweet_links": ids[i:i + 100]})
if r.status_code != 429:
break
time.sleep(1) # 20 requests per second per key
r.raise_for_status()
for tweet in r.json()["tweets"]:
out.write(json.dumps(tweet) + "\n")library(httr2)
library(jsonlite)
ids <- readLines("tweet_ids.txt")
batches <- split(ids, ceiling(seq_along(ids) / 100))
fetch <- function(batch) {
resp <- request("https://api.sorsa.io/v3/tweet-info-bulk") |>
req_headers(ApiKey = Sys.getenv("SORSA_API_KEY")) |>
req_body_json(list(tweet_links = as.list(batch))) |>
req_retry(max_tries = 5) |>
req_perform()
resp_body_json(resp)$tweets
}
tweets <- unlist(lapply(batches, fetch), recursive = FALSE)
write_json(tweets, "tweets.json", auto_unbox = TRUE)- 100 万个 ID 大约需要八分钟(每秒 20 次请求)。
- 失败的请求不收费。
- 用 AI 助手来写? 用 AI 构建
写给伦理委员会和方法部分
什么数据?
只有公开推文和用户资料。没有受保护账号,没有私信。
有任何互动吗?
没有。Sorsa API 是只读的:从不发推、点赞、关注或发消息。
用谁的账号?
不涉及任何 X 账号或登录,无论是你的还是别人的。
服务商保留什么?
你发出了哪些请求,保留一年;完整响应,保留 30 天。
谁知道这个项目?
X 不会知道是谁在查询:你的密钥、账号和身份都只留在我们这里。
你的副本存在哪里?
按你的数据管理计划存放。它属于你。
需要书面材料吗?
如有需要,我们可以为你的伦理委员会写一封关于数据来源的简短信函。
申请学术访问权限
大约两分钟。团队会有专人阅读每一份。大约两分钟,我们通过邮件回复。
- 1发送
- 2我们会阅读
- 3我们同意
- 4你收集
更喜欢邮件?请用你的机构邮箱写信到 contacts@sorsa.io。
研究人员常问的问题
继续阅读
历史搜索
关键词语料、事件窗口、长时间序列。
"heat wave" lang:en since:2022-07-01 until:2022-08-01 -filter:nativeretweets每次请求约 20 条推文,可回溯到 2006 年
在文档中打开按 ID 获取推文
补全共享数据集,或复现已发表的语料。
POST /tweet-info-bulk {"tweet_links": [100 IDs]}每次请求 100 条推文,每条都带作者
在文档中打开设计研究时请考虑这些限制
已删除的推文和受保护账号不会返回。补全后的列表会比原始列表小。
数量是当前的。点赞、查看和粉丝数都是采集时的数值;如需随时间变化的数量,请定时采集并保留每次快照。
用户资料是当前的。2014 年的推文附带的是作者现在的资料。
需要轮询,没有数据流。新推文在你请求时才返回;一次请求可读取最多 5,000 个账号的 X 列表。
无法获取:谁点赞了推文、用户的点赞或收藏、私信、过去的粉丝列表。
在规划完整采集之前,先用免费请求试试你的日期范围。
方法段落
2.1 数据采集
帖子通过 Sorsa API(https://api.sorsa.io)收集,这是一个面向 X(Twitter)公开数据的独立 API,使用 2024 年 1 月 1 日至 3 月 31 日的全量存档搜索。
要分享数据集?请分享推文 ID 和代码,让其他人可以补全并核查你的工作。
谁可以申请?
大学和研究机构的博士生、硕士生、教师、博士后和研究人员,用于任何学科的非商业研究。大学和研究机构的博士生、硕士生、教师和博士后,用于任何学科的非商业研究。 请使用机构邮箱申请。
学术访问权限包含什么?
按你的研究量身定制的权限:从账号获得所需的请求额度,到套餐的大幅折扣。 每个接口、每秒 20 次请求,文档和支持与所有客户相同。
申请之后会怎样?
大约两分钟。团队会有专人阅读每份申请,并通过邮件回复。我们会审核你的申请,并通过邮件回复。 团队会有专人阅读申请并通过邮件回复。如有不清楚的地方我们会询问;然后和你确定用量和周期,并把访问权限添加到你的 Sorsa API 账号。
收到回复之前可以开始吗?
可以。每个账号都有 100 次免费请求:无需绑卡,永不过期,可用于所有接口。最多可获取 1 万条按 ID 的推文或 2 万份粉丝资料,足够试跑你的查询。
没有机构邮箱怎么办?
用你常用的邮箱申请,并附上教师主页、实验室页面、ORCID 或 Google Scholar 链接,方便我们核实你的所属机构。
数据能回溯多久?
到 2006 年。全量搜索支持 X 自己的运算符:from:、to:、since:、until:、lang:、精确短语、话题标签和互动筛选。账号时间线可回溯到第一条推文,没有 3,200 条上限。
可以补全推文 ID 数据集吗?
可以:每次请求 100 个 ID,每条推文都带作者的完整资料。100 万个 ID 需要 1 万次请求,以每秒 20 次请求计大约八分钟。原始采集之后被删除或设为私密的推文不会返回,所以推文数会少于 ID 数。
数据中不包含什么?
已删除的推文、受保护账号、私信、点赞某条推文的用户列表、用户的点赞和收藏,以及过去的粉丝列表。数量和用户资料都是采集时的状态。没有数据流:需要轮询,一次请求可读取最多 5,000 个账号的 X 列表。
该怎么告诉伦理委员会?
数据均为公开的帖子和资料;Sorsa API 是只读的,从不发帖、点赞、关注或发消息;不涉及任何 X 账号或登录;你也不会联系数据中的人。我们会保留你的请求日志一年,完整响应保留 30 天。应你的要求,我们会就数据来源写一封简短的说明信。
可以分享数据集吗?
请分享推文 ID 和采集代码:任何人都可以补全并核查你的工作。能分享多少其他内容,取决于你的伦理批准和数据管理计划。
如何引用 Sorsa API?
在你的方法部分可以写:“Data were collected through Sorsa API (https://api.sorsa.io), an independent API for public X (Twitter) data.” BibTeX 在本页的第 5 节。
合作者可以使用同一权限吗?
可以。你的账号可以有多个 API 密钥:给每个人一个,并在控制台查看各密钥的用量。
可以向大学开发票吗?
可以。在申请中说明,我们会为你的项目安排发票。
X 现在为研究人员提供什么?
X 在 2023 年关闭了 Academic Research 通道。它的按量付费 API 每条帖子收 $0.005,每份用户资料收 $0.010;依据《数字服务法》的欧盟通道只涵盖针对欧盟系统性风险的研究,且需单独申请。Sorsa API 适用于任何学科和主题,一个密钥,无需 X 开发者账号。
和其他学术方案相比如何?
TwitterAPI.io 在你付费后退还研究项目一半的花费,最多 $200。Sorsa API 在你采集之前就按研究定制访问权限,从赠送请求到大幅折扣。
全部 16 个问题
没有匹配的问题。请写信到 contacts@sorsa.io。