TweetScout Twitter API 现已更名为 Sorsa API v3
TweetScout API 现在就是 Sorsa API:它在 2025 年更名,TweetScout 时代的 v2 自 2026 年 5 月 1 日起一直返回 410 Gone,其 29 个调用中的 27 个现在运行在 https://api.sorsa.io/v3。
简短回答: 迁移 TweetScout 集成只需四处修改:基础 URL、从路径移到查询参数的用户名、cursor 改名为 next_cursor,以及几个改了名的字段。要运行迁移后的调用,请用 Sorsa API v3:同样的 ApiKey 请求头,45 个接口,每秒 20 次请求,另有 100 次免费请求,足够测试每个旧调用。
api.sorsa.io/v3- 29 个调用中 27 个已迁移
- 价格
- 每 1,000 次 $1.40 起
#TweetScout API 发生了什么
TweetScout API 在 2025 年被团队更名为 Sorsa API,该团队自 2022 年起在 Scouts Labs Inc 运营它;其 TweetScout 时代的版本 v2 已于 2026 年 5 月 1 日下线(在新标签页打开)。现在每个 v2 接口都返回 410 Gone,仍然指向 api.tweetscout.io/v2 的代码,调用的正是这个已下线的版本。
产品按两类受众拆分了。加密货币分析应用变成了 sorsa.io(在新标签页打开) 上的 Sorsa 应用,tweetscout.io 和 app.tweetscout.io 现在都会跳转到那里;开发者 API 则变成了 api.sorsa.io 上的 Sorsa API。TweetScout 评分沿用原方法,换了新名字,叫 Sorsa Score,它的接口属于 v3。Sorsa Score API 指南介绍了分级以及评分的构成方式。
搜索“Tweet Scout”和“Twitter Scout”指向的是同一个产品。对代码来说变化的是版本:v3 保留了 TweetScout 的各项功能,改了一些路径和参数名,并新增了旧 API 从未有过的 20 个接口,共计 45 个。
#四步把 TweetScout 调用迁移到 Sorsa API v3
每个 TweetScout 调用都用同样的四处修改迁移,多数只要改一行。对 TweetScout 集成来说,Sorsa API v3 是直接的继任者:25 个 v3 路径承担了旧的功能,密钥仍然放在 ApiKey 请求头里,所有套餐都是每秒 20 次请求。
-
获取 v3 密钥。 注册后,在控制台的 API Keys 中复制一个密钥。
GET /key-usage-info(在新标签页打开) 可以确认它是否可用并显示剩余请求数,而且它本身不消耗请求额度。 -
替换基础 URL。 把代码中所有的
https://api.tweetscout.io/v2或https://api.sorsa.io/v2换成https://api.sorsa.io/v3。 -
把用户名和 ID 从路径中移出。 TweetScout 把账号放在路径里(
/score/{user_handle}、/info-id/{user_id})。v3 则把它作为查询参数:username、user_id或user_link,三者只能取其一。之前:TweetScout API v2(现已返回 410 Gone) curl "https://api.tweetscout.io/v2/score/orbit_dao_watcher" \ -H "ApiKey: YOUR_API_KEY"之后:Sorsa API v3 curl -G "https://api.sorsa.io/v3/score" \ -H "ApiKey: YOUR_API_KEY" \ --data-urlencode "username=orbit_dao_watcher" -
重命名分页和请求体中的键。
cursor变成next_cursor,link变成user_link,user_handle变成username。在POST /check-follow中,project_handle变成username_1(应该被关注的账号),user_handle变成username_2(你要检查的账号)。
同样的修改放进脚本里是这样:基础 URL 只改一次,用户名移到 params 里,而在 v2 中一次返回的整个数组列表,在 v3 里改为带游标的分页返回。Python 调用 Twitter API 教程涵盖了 v3 基础用法的其余部分。
import requests
BASE = "https://api.sorsa.io/v3" # was https://api.tweetscout.io/v2
HEADERS = {"ApiKey": "YOUR_API_KEY"}
def score(handle):
# v2: GET /score/{handle} -> v3: GET /score?username=
r = requests.get(f"{BASE}/score", headers=HEADERS,
params={"username": handle}, timeout=30)
r.raise_for_status()
return r.json()["score"]
def following(handle):
# v2 returned one array; v3 pages 200 accounts at a time
users, cursor = [], None
while True:
params = {"username": handle}
if cursor:
params["next_cursor"] = cursor
r = requests.get(f"{BASE}/follows", headers=HEADERS,
params=params, timeout=30)
r.raise_for_status()
page = r.json()
users += page["users"]
cursor = page.get("next_cursor")
if not cursor:
return users
print(score("orbit_dao_watcher"))
print(len(following("orbit_dao_watcher")))
401 表示密钥错误,403 表示密钥缺失或请求额度已用完,429 表示一秒内超过了 20 次请求,等一秒再重新发送即可。评分接口只回答 Sorsa Score 数据库中已有的账号,而 v3 现在会给出每个粉丝的关注日期,下面这个 GET /top-followers 的响应就是例子:
{
"users": [
{
"id": "1600000000000000004",
"username": "lattice_fund_research",
"display_name": "Lattice Fund Research",
"followers_count": 48210,
"followings_count": 612,
"verified": true,
"score": 1873,
"follower_date": "2026-03-14T09:21:07Z"
}
]
}
#TweetScout API 接口对照表:v2 到 v3
在 TweetScout 时代 v2 参考文档的 29 个接口中,27 个迁移到了 v3,2 个下线。这 27 个对应 25 个 v3 路径,因为有两对合并了:/info 和 /info-id 合并为一个 GET /info,/score 和 /score-id 合并为一个 GET /score。
把代码或日志里的任何旧调用粘贴到转换器中,就能得到它对应的 v3 请求和需要做的修改。
已迁移 TweetScout GET /v2/score/{user_handle} 现已变为 GET /v3/score (Sorsa API 上)。
curl -G "https://api.sorsa.io/v3/score" \
-H "ApiKey: YOUR_API_KEY" \
--data-urlencode "username=orbit_dao_watcher"
- 基础 URL:
https://api.tweetscout.io/v2变为https://api.sorsa.io/v3. - 用户名不再放在路径里,而是放进
?username=;?user_id=和?user_link=同样可用。 - 每个账号一次请求,每 1,000 个账号低至 $1.40。
粘贴 TweetScout API 调用,或选一个示例,查看替代它的 Sorsa API v3 请求。
完整对照表按旧参考文档的分组列出了每个 v2 调用,以及替换它的 v3 路径和需要做的那处修改。路径没变的调用也仍然需要换成新的基础 URL。
| TweetScout API v2 | Sorsa API v3 | 变化 |
|---|---|---|
GET /info/{user_handle} | GET /info | 用户名移到 ?username= |
GET /info-id/{user_id} | GET /info | ID 移到 ?user_id= |
GET /about | GET /about | link 改为 user_link;也可以用 username |
GET /follows | GET /follows | link 改为 user_link;每页 200 条,用 next_cursor 分页 |
GET /handle-to-id/{user_handle} | GET /username-to-id/{user_handle} | 路径改名 |
GET /id-to-handle/{user_id} | GET /id-to-username/{user_id} | 路径改名;响应里仍是 handle |
POST /user-tweets | POST /user-tweets | link 改为 user_link,cursor 改为 next_cursor |
POST /tweet-info | POST /tweet-info | 请求体相同;推文字段改名 |
POST /tweet-info-bulk | POST /tweet-info-bulk | 请求体相同;响应包在 tweets 里 |
POST /comments | POST /comments | 新增可选的 order_by;响应键 comments 改为 tweets |
POST /search-tweets | POST /search-tweets | 无变化 |
POST /search-users | POST /search-users | 无变化 |
GET /list-members | GET /list-members | 新增 next_cursor 分页 |
GET /list-tweets | GET /list-tweets | cursor 改为 next_cursor |
POST /community-tweets | POST /community-tweets | cursor 改为 next_cursor,order_by 改为 order |
POST /check-member | POST /check-community-member | 路径改名 |
POST /check-follow | POST /check-follow | project_* 改为 *_1,user_* 改为 *_2 |
POST /check-quoted | POST /check-quoted | user_handle 改为 username |
POST /check-retweet | POST /check-retweet | user_handle 改为 username |
GET /check-comment | GET /check-comment | user_handle 改为 username |
GET /score/{user_handle} | GET /score | 用户名移到 ?username= |
GET /score-id/{user_id} | GET /score | ID 移到 ?user_id= |
GET /score-changes | GET /score-changes | user_handle 改为 username |
GET /followers-stats | GET /followers-stats | user_handle 改为 username |
GET /top-followers/{user_handle} | GET /top-followers | 用户名移到 ?username=;去掉 from |
GET /top-following/{user_handle} | GET /top-following | 用户名移到 ?username= |
GET /new-following-7d | GET /new-following-7d | user_handle 改为 username |
POST /when-follow | 已下线 | POST /check-follow 可回答是或否 |
GET /handle-history | 已下线 | GET /about 返回更改次数和最近一次更改的日期 |
GET /info/{user_handle}- Sorsa API v3
GET /info- 变化
- 用户名移到
?username=
GET /info-id/{user_id}- Sorsa API v3
GET /info- 变化
- ID 移到
?user_id=
GET /about- Sorsa API v3
GET /about- 变化
link改为user_link;也可以用username
GET /follows- Sorsa API v3
GET /follows- 变化
link改为user_link;每页 200 条,用next_cursor分页
GET /handle-to-id/{user_handle}- Sorsa API v3
GET /username-to-id/{user_handle}- 变化
- 路径改名
GET /id-to-handle/{user_id}- Sorsa API v3
GET /id-to-username/{user_id}- 变化
- 路径改名;响应里仍是
handle
POST /user-tweets- Sorsa API v3
POST /user-tweets- 变化
link改为user_link,cursor改为next_cursor
POST /tweet-info- Sorsa API v3
POST /tweet-info- 变化
- 请求体相同;推文字段改名
POST /tweet-info-bulk- Sorsa API v3
POST /tweet-info-bulk- 变化
- 请求体相同;响应包在
tweets里
POST /comments- Sorsa API v3
POST /comments- 变化
- 新增可选的
order_by;响应键comments改为tweets
POST /search-tweets- Sorsa API v3
POST /search-tweets- 变化
- 无变化
POST /search-users- Sorsa API v3
POST /search-users- 变化
- 无变化
GET /list-members- Sorsa API v3
GET /list-members- 变化
- 新增
next_cursor分页
GET /list-tweets- Sorsa API v3
GET /list-tweets- 变化
cursor改为next_cursor
POST /community-tweets- Sorsa API v3
POST /community-tweets- 变化
cursor改为next_cursor,order_by改为order
POST /check-member- Sorsa API v3
POST /check-community-member- 变化
- 路径改名
POST /check-follow- Sorsa API v3
POST /check-follow- 变化
project_*改为*_1,user_*改为*_2
POST /check-quoted- Sorsa API v3
POST /check-quoted- 变化
user_handle改为username
POST /check-retweet- Sorsa API v3
POST /check-retweet- 变化
user_handle改为username
GET /check-comment- Sorsa API v3
GET /check-comment- 变化
user_handle改为username
GET /score/{user_handle}- Sorsa API v3
GET /score- 变化
- 用户名移到
?username=
GET /score-id/{user_id}- Sorsa API v3
GET /score- 变化
- ID 移到
?user_id=
GET /score-changes- Sorsa API v3
GET /score-changes- 变化
user_handle改为username
GET /followers-stats- Sorsa API v3
GET /followers-stats- 变化
user_handle改为username
GET /top-followers/{user_handle}- Sorsa API v3
GET /top-followers- 变化
- 用户名移到
?username=;去掉from
GET /top-following/{user_handle}- Sorsa API v3
GET /top-following- 变化
- 用户名移到
?username=
GET /new-following-7d- Sorsa API v3
GET /new-following-7d- 变化
user_handle改为username
POST /when-follow- Sorsa API v3
- 已下线
- 变化
POST /check-follow可回答是或否
GET /handle-history- Sorsa API v3
- 已下线
- 变化
GET /about返回更改次数和最近一次更改的日期
这两个已下线的接口仍然有办法得到同样的答案,下面“没有一对一接口的 TweetScout 调用”一节逐个给出了做法。
#名称变了的响应字段
v3 的响应保持了 TweetScout 响应的结构,但有 10 个字段名变了,而 v2 以裸数组返回的列表,现在包在一个对象里({"users": [...]} 或 {"tweets": [...]})。解析器最先会在这些改名上出错,所以先在代码里搜索旧名称。
| TweetScout API v2 字段 | Sorsa API v3 字段 | 出现位置 |
|---|---|---|
screen_name | username | 用户资料、推文作者、列表成员 |
name | display_name | 用户资料、推文作者 |
friends_count | followings_count | 用户资料、推文作者 |
statuses_count | tweets_count | 推文作者 |
register_date | created_at | 用户资料 |
avatar | profile_image_url | 用户资料、推文作者 |
banner | profile_background_image_url | 用户资料 |
id_str | id | 推文、推文作者 |
favorite_count | likes_count | 推文 |
in_reply_to_status_id_str | in_reply_to_tweet_id | 推文 |
screen_name- Sorsa API v3 字段
username- 出现位置
- 用户资料、推文作者、列表成员
name- Sorsa API v3 字段
display_name- 出现位置
- 用户资料、推文作者
friends_count- Sorsa API v3 字段
followings_count- 出现位置
- 用户资料、推文作者
statuses_count- Sorsa API v3 字段
tweets_count- 出现位置
- 推文作者
register_date- Sorsa API v3 字段
created_at- 出现位置
- 用户资料
avatar- Sorsa API v3 字段
profile_image_url- 出现位置
- 用户资料、推文作者
banner- Sorsa API v3 字段
profile_background_image_url- 出现位置
- 用户资料
id_str- Sorsa API v3 字段
id- 出现位置
- 推文、推文作者
favorite_count- Sorsa API v3 字段
likes_count- 出现位置
- 推文
in_reply_to_status_id_str- Sorsa API v3 字段
in_reply_to_tweet_id- 出现位置
- 推文
旧的顶级粉丝列表中的驼峰式键(screeName、followersCount、friendsCount、registerDate),在 v3 里变成了与其他所有用户资料相同的蛇形命名。名称保持不变的字段包括 full_text、retweet_count、reply_count、quote_count、view_count、bookmark_count 和 can_dm,每个 v3 用户资料还新增了 location、bio_urls、pinned_tweet_ids 和 protected。
须知
关注日期在 v3 里有两种写法:
GET /top-followers中是follower_date,GET /new-followers-7d和GET /new-following-7d中是followerDate。ID 与 v2 一样处处都是字符串,所以在数据库里请保留为文本:很长的 Snowflake ID 在 JavaScript 里按数字处理会丢失位数。
#没有一对一 v3 接口的 TweetScout 调用
两个 v2 接口已下线,另外人们在 TweetScout 名下搜索的三样东西,其实从来就不是 API 接口。每一项在 v3 里仍然有办法得到同样的答案。
/when-follow返回一个账号关注另一个账号的日期,且只限于已在 TweetScout 数据库中的账号。在 v3 里,POST /check-follow(在新标签页打开) 回答关注关系是否存在。要日期的话,GET /top-followers覆盖一个账号最有分量的 20 个粉丝,GET /new-followers-7d(在新标签页打开) 则列出过去 7 天内新关注的加密货币账号。/handle-history返回账号曾用过的用户名。GET /about(在新标签页打开) 返回username_change_count和last_username_change_at,免费的 Twitter 用户名历史查询工具可以显示任何账号的这两项。- “受众质量” 是 TweetScout 应用中查看谁在关注某个账号的视图。在 API 里对应
GET /followers-stats(在新标签页打开),它统计粉丝中的影响者、项目方和 VC 基金,另外还有GET /top-followers和GET /score。 - 情绪分析接口 在 v2 和 v3 里都从未存在。请用
POST /search-tweets或POST /mentions拉取帖子,再用你自己的模型打分,做法见 Twitter 情感分析指南。 /v1/analyze位于 api.tweetscout.io,从来不是 TweetScout 的接口。它出现在生成的交易机器人代码里,并在其中被标注为假设的接口,而该地址返回 404。要完成这个任务,请调用GET /score和GET /followers-stats。
#同一个密钥现在能读到 TweetScout 从未提供的数据
Sorsa API v3 新增了 TweetScout API 从未有过的 20 个接口,所以一个密钥现在就能覆盖加密货币仪表盘过去要向第二家服务商购买的通用 X 数据任务。如果你的 TweetScout 集成旁边还运行着另一个用于粉丝列表或搜索的 API,那就两件事都用 Sorsa API:一个密钥,一张账单,智能粉丝数据也在同一份 JSON 里。
过去让 TweetScout 用户转向第二家服务商的那些任务,在 Sorsa API 上每 1,000 条结果的费用如下,右侧是官方 X API 的价格(在新标签页打开),后者还需要开发者账号和 OAuth,并且每月最多只能读取 300 万条帖子:
| 任务 | Sorsa API 接口 | Sorsa API,每 1,000 条 | 官方 X API,每 1,000 条 |
|---|---|---|---|
| 完整粉丝列表 | GET /followers,每页 200 条 | $0.007 起 | $10.00 |
| 批量获取用户资料 | GET /info-batch,每次请求 100 条 | $0.014 起 | $10.00 |
| 按 ID 获取帖子 | POST /tweet-info-bulk,每次请求 100 条 | $0.014 起 | $5.00 |
| 搜索与提及,可追溯到 2006 年 | POST /search-tweets、POST /mentions,每页约 20 条 | $0.07 起 | $5.00 |
| 加密货币影响力评分与粉丝分类 | GET /score、GET /followers-stats,每次请求一个账号 | $1.40 起 | 不提供 |
完整粉丝列表
- Sorsa API 接口
GET /followers,每页 200 条- Sorsa API,每 1,000 条
- $0.007 起
- 官方 X API,每 1,000 条
- $10.00
批量获取用户资料
- Sorsa API 接口
GET /info-batch,每次请求 100 条- Sorsa API,每 1,000 条
- $0.014 起
- 官方 X API,每 1,000 条
- $10.00
按 ID 获取帖子
- Sorsa API 接口
POST /tweet-info-bulk,每次请求 100 条- Sorsa API,每 1,000 条
- $0.014 起
- 官方 X API,每 1,000 条
- $5.00
搜索与提及,可追溯到 2006 年
- Sorsa API 接口
POST /search-tweets、POST /mentions,每页约 20 条- Sorsa API,每 1,000 条
- $0.07 起
- 官方 X API,每 1,000 条
- $5.00
加密货币影响力评分与粉丝分类
- Sorsa API 接口
GET /score、GET /followers-stats,每次请求一个账号- Sorsa API,每 1,000 条
- $1.40 起
- 官方 X API,每 1,000 条
- 不提供
对于 KOL 和智能粉丝追踪(TweetScout 用户过去在应用里做的事),v3 有四个调用:GET /top-followers 和 GET /followers-stats 用来查看谁在支持一个账号,GET /new-followers-7d 和 GET /new-following-7d 用来查看最近一周的加密货币账号关注动态。不论是否属于加密货币领域的每个粉丝的完整列表,都来自 GET /followers(在新标签页打开);Twitter 粉丝 API 指南展示了完整的导出流程。
其他新增接口可以读取引用、转发者、某个用户的回复和转发、X 长文、Spaces、按地区划分的趋势、认证粉丝、列表粉丝、社群信息、成员和搜索,以及 shadowban 检测。同时也在读取官方 X API 的团队,可以参照类似的对照表从 Twitter/X API 迁移。
#今天就迁移你的第一个 TweetScout 调用
TweetScout API 以 Sorsa API v3 的形式延续了下来:换掉基础 URL,把用户名移到查询参数里,把 cursor 改名,旧的 29 个调用中就有 27 个能重新运行。Sorsa API 就是运行它们的地方:45 个接口(包括 Sorsa Score),所有套餐都是每秒 20 次请求,另有 100 次免费请求,让你在选择套餐之前先把整个集成转换并测试一遍。
#常见问题
TweetScout 就是 Sorsa API 吗?
是的。TweetScout 既是一个加密货币分析应用,也是它的开发者 API,由 Scouts Labs Inc 自 2022 年起运营。2025 年,应用变成了 sorsa.io 上的 Sorsa 应用,API 变成了 api.sorsa.io 上的 Sorsa API,背后是同一个团队。Sorsa API 只读取 X 的公开数据,从不发帖,也从不索要你的 X 登录信息,所以你的 X 账号不会面临风险。
TweetScout API 的文档现在在哪里?
TweetScout API 的文档现在就是 docs.sorsa.io(在新标签页打开) 上的 Sorsa API v3 参考文档,它由实时 OpenAPI 文件生成,包含全部 45 个接口及其参数和响应字段。TweetScout 时代的 v2 文档随 v2 在 2026 年 5 月 1 日一起下线了。本页的对照表把每个 v2 路径与替换它的 v3 调用并排列出。
我原来的 TweetScout API 密钥还能用吗?
请使用 Sorsa API 控制台 API Keys 下列出的密钥:那才是每个 v3 接口接受的密钥,同样放在 ApiKey 请求头里。任何对 /v2 路径的请求,不论用什么密钥,都会以 410 Gone 失败。如果你再也打不开原来保存 TweetScout 密钥的账号,新建账号只需一分钟,并且自带 100 次免费请求。
我应该用哪个 API 来代替 TweetScout API?
用 Sorsa API,也就是 TweetScout API 的直接继任者:29 个 TweetScout 调用中的 27 个已迁移,Sorsa Score 仍然来自 GET /score。同一个密钥读取完整粉丝列表每 1,000 条 $0.007 起,读取帖子每 1,000 条 $0.014 起。所有套餐都是每秒 20 次请求,不需要 X 开发者账号,也不需要 OAuth。
我还能通过 API 获取 TweetScout 评分吗?
可以,它现在叫 Sorsa Score,是 TweetScout 评分的新名称,方法也相同:统计哪些加密货币影响者、项目方和基金在关注某个账号。GET /score(在新标签页打开) 每次请求返回一个账号的评分,GET /score-changes 返回它在最近一周和一个月内的变化。评分大约每天刷新一次。
前 TweetScout 用户使用 Sorsa API 要花多少钱?
Sorsa API 在每个接口上每次调用都计一次请求,价格从 Starter 套餐的每 1,000 次请求 $4.90,到 Hyperscale 套餐的 $1.40,失败的请求不会计费。每个新账号都有 100 次永不过期、无需绑卡的免费请求,足够转换并测试一个小型的 TweetScout 集成。
#我们如何核实
2026 年 11 月 2 日,我们阅读了 TweetScout 时代的 v2 参考文件(api.sorsa.io/v2/swagger.json 仍然提供它),并与线上的 v3 参考文档对照。我们用脚本把全部 29 个 v2 接口、它们的参数和响应字段与 v3 逐一匹配。同一天,我们在 Sorsa API 文档中确认了 v2 的下线日期,并在 docs.x.com 上确认了官方 X API 的价格。本文没有使用 API 密钥:请求和响应遵循 v3 参考文档,使用的是演示账号。