导出推特粉丝列表到 CSV:Python 教程和费用(2026)
导出推特粉丝列表到 CSV:X 官方 API 每个粉丝 $0.010,第三方接口按页翻到底。附只用标准库的 Python 脚本、实测扣费,和 1 万粉丝的真实成本。
Tarun Khatri
发布于 · 更新于 · 阅读约 7 分钟 · Read in English
导出推特粉丝列表,就是把粉丝接口一页一页翻到底,每个账号写成 CSV 里的一行。
这篇写给要把粉丝名单放进表格做受众分析的人。你会拿到 X 官方 API 和 Weir 两套代码,以及每种做法的费用。Weir 是我们做的,哪里有对手比我们便宜,我们也会写出来。
下面这段打印第一页粉丝,只用 Python 自带的库:
import json, os, urllib.request
req = urllib.request.Request(
"https://api.weirapp.io/v1/x/users/XDevelopers/followers",
headers={"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"})
for account in json.load(urllib.request.urlopen(req, timeout=60))["data"]:
print(account["username"], account["followersCount"])
整个教程分四步:
- 拿密钥注册,复制密钥,设置 WEIR_API_KEY。
- 看一页GET /v1/x/users/{user}/followers。
- 翻到底把 meta.nextCursor 传回去,直到它为 null。
- 写 CSV每个账号一行,每页写完就落盘。
任何账号的粉丝列表都能导出吗?
只有公开账号可以。受保护账号的粉丝,只有它批准过的人能看到。X 的 API 和 Weir 都不返回,Weir 会回 404。
粉丝列表是一份人名单,所以要把这个文件当成个人数据:
- 遵守 X 的条款。X 的服务条款限制抓取,你怎么用这些数据,责任在你。
- 有正当理由,只留必要的字段。做受众研究合理,拿去群发私信就不合理。
- 确认适用的隐私法规,包括你所在地和名单上的人所在地。本文不构成法律建议。
用 X 官方 API 导出推特粉丝列表
X 的接口是 GET /2/users/{id}/followers。每次请求最多返回 1,000 个账号,用 pagination_token 翻页。
它的速率限制是每个应用每 15 分钟 300 次请求。
截至 2026 年 10 月,X 的价格页列出读取一个粉丝 $0.010。把用户名换成 ID,还要再付一次 $0.010 的用户读取。同一个 UTC 日内重复读取同一资源只算一次。
用 Tweepy:
import csv, os, tweepy
client = tweepy.Client(bearer_token=os.environ["X_BEARER_TOKEN"])
user = client.get_user(username="XDevelopers").data
with open("followers.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["id", "username", "name", "followers_count"])
for f in tweepy.Paginator(
client.get_users_followers, user.id,
max_results=1000, user_fields=["public_metrics"],
).flatten(limit=5000): # 给账单设个上限
metrics = f.public_metrics or {}
writer.writerow([f.id, f.username, f.name, metrics.get("followers_count")])
用这种方式导出别人账号的 5,000 个粉丝,大约要 $50。
自己的粉丝还有一条免费的路:X 数据存档里的 follower.js。存档的 README 说,它只列出关注你的账号的 ID,没有用户名和粉丝数。存档的申请步骤见如何打开推特存档。
第 1 步:拿到密钥,准备环境
免费注册 Weir,不用绑卡,在 API keys 页面创建密钥,然后:
export WEIR_API_KEY="weir_live_..."
下面的代码只用 Python 自带的库,AI 智能体的沙箱里没有 pip 也能跑。先写一个带密钥的小函数:
import csv, json, os, time, urllib.error, urllib.parse, urllib.request
API = "https://api.weirapp.io"
HEADERS = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}
def get(path, params=None):
url = API + path + ("?" + urllib.parse.urlencode(params) if params else "")
req = urllib.request.Request(url, headers=HEADERS)
with urllib.request.urlopen(req, timeout=60) as r:
return json.load(r)
第 2 步:先看一页粉丝
Weir 的接口是 GET /v1/x/users/{user}/followers。{user} 可以填用户名,也可以填数字 ID,省掉单独的查询。
粉丝按 X 自己列出的顺序返回,大体是最近关注的在前。
page = get("/v1/x/users/XDevelopers/followers")
print(len(page["data"]), "个账号;还有下一页:", page["meta"]["nextCursor"] is not None)
没有 limit 参数,每页多少由 X 决定。2026 年 10 月 26 日,我们对 @XDevelopers 跑了第一页:
每个账号长这样。这是 API 文档里的示例,不是真人:
{
"id": "1593274519387648000",
"username": "example_dev",
"name": "Example Developer",
"description": "Building developer tools. Posts about APIs and data.",
"location": "Lisbon",
"verified": true,
"followersCount": 12840,
"followingCount": 311,
"createdAt": "2022-11-17T15:04:05.000Z",
"protected": false
}
description 和 location 可能是 null。id 要按字符串保存。
第 3 步:翻完所有粉丝
最后一页之后,meta.nextCursor 是 null。下面的生成器每次给出一页:
def follower_pages(user, max_pages=50):
cursor = None
for _ in range(max_pages):
try:
page = get(f"/v1/x/users/{user}/followers", {"cursor": cursor} if cursor else None)
except urllib.error.HTTPError as e:
if e.code != 429: # 402:积分用完;404:账号不存在或受保护
raise
time.sleep(int(e.headers.get("Retry-After", "10"))) # 太快了:等一下,重试同一页
continue
yield page["data"]
cursor = page["meta"]["nextCursor"]
if not cursor:
return
这个循环做对了三件事:
max_pages给费用封顶。15 页大约是 1,050 个账号。- cursor 原样传回。拿别的请求生成的 cursor 会得到
400,见分页文档(英文)。 429和402分开处理。429等过Retry-After就好,所以重试。402只有充值才能解决,所以直接报错,详见X API 402 错误。
第 4 步:把推特粉丝列表写进 CSV
DictWriter 只保留你指定的列。每页写完就 flush,脚本中途停了,文件也能用。
FIELDS = ["id", "username", "name", "description", "location", "verified",
"followersCount", "followingCount", "createdAt", "url"]
seen = set()
with open("followers.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=FIELDS, extrasaction="ignore")
writer.writeheader()
for accounts in follower_pages("XDevelopers", max_pages=15):
for account in accounts:
if account["id"] not in seen: # 防止页与页之间重复
seen.add(account["id"])
writer.writerow(account)
file.flush()
print(f"写入了 {len(seen)} 个粉丝")
用 Excel 打开,中文简介变成乱码? 把 encoding="utf-8" 改成 "utf-8-sig",Excel 就能正确识别 UTF-8。
Excel 还会把很长的 ID 显示成科学计数法。CSV 里每一位数字都在,导入时把 id 列设成文本就行。
/v1/x/users/{user}/following 用法完全一样,导出的是这个账号关注的人。
导出推特粉丝要花多少钱?
Weir 每个账号扣 1 积分,每次调用再扣 1 积分。第一页还要多扣 2 积分,用来查这个账号。
所以满满一页约 71 积分,N 个粉丝大约是 N + N/70 + 2 积分。
截至 2026 年 10 月,三种规模的费用:
| 粉丝数 | Weir 积分 | Weir($5 套餐) | X 官方 API | TwitterAPI.io |
|---|---|---|---|---|
| 1,000 | 1,017 | 免费 | $10 | $0.01 |
| 10,000 | 10,145 | $2.03 | $100 | $0.10 |
| 100,000 | 101,431 | $20.29 | $1,000 | $1.00 |
每月 5,000 免费积分,大约够导出 4,900 个粉丝。
这件事上,TwitterAPI.io 比我们便宜 10 到 20 倍。它的文档写明,每页 200 个时每个粉丝 1 积分,也就是每千个 $0.01。SocialData 标价每千条结果 $0.20。
速度也不一样:
粉丝接口在每分钟限额里算 3 次请求。X 官方 API 更快:每 15 分钟 300 次请求,每次 1,000 个账号。
让 AI 智能体帮你导出
把 Weir 接进 Claude、Cherry Studio 或 Trae 之后,可以直接用中文让它做,接法见推特 MCP 服务器。粘贴这段:
用 Weir 的 get_x_user_followers 工具,取 @XDevelopers 的粉丝,有 nextCursor 就继续翻,最多 3 页。把 username、name、followersCount、createdAt 整理成 CSV 给我。
3 页大约 210 个账号,花约 215 积分:第一页 73,之后每页 71。智能体能跑代码的话,让它直接运行上面的脚本更省事。
什么时候不适合用 Weir
- 你主要就是导出粉丝关系。TwitterAPI.io 每个账号便宜得多。
- 你导出的是自己的粉丝。X 的 Owned Reads 每个只要 $0.001。
- 你需要 X 自己的条款,或者要和 X 签合同。
- 账号有几百万粉丝。这么大的完整导出我们没测过,先跑几页试试。
如果粉丝导出只是你工作的一部分,还要用同一个密钥搜推文、读时间线或拿 Reddit 数据,Weir 才合适。更多选择见推特 API 替代方案。
常见问题
能导出私密推特账号的粉丝吗?
不能。受保护账号的粉丝,只有它批准过的人能看到。X 官方 API 不返回,Weir 回 404。只有公开账号能导出。
导出 1 万个推特粉丝要多少钱?
X 官方 API 约 $100,每个粉丝 $0.010。Weir 要 10,145 积分,用 $5 套餐约 $2.03。按 TwitterAPI.io 公布的价格,约 10 美分。
每次请求能拿多少个粉丝?
X 官方 API 最多 1,000 个,TwitterAPI.io 最多 200 个。Weir 的每页大小由 X 决定,约 70 个,用 meta.nextCursor 翻到下一页。
能导出一个人关注的账号吗?
能。Weir 的 /v1/x/users/{user}/following 用同样的 cursor,返回同样的字段。把脚本路径里的 followers 换成 following 就行。
参考来源
以下均为英文页面。
- X API 按量计费价格和 Owned Reads(2026 年 10 月 26 日核对):https://docs.x.com/x-api/getting-started/pricing
- X API 获取粉丝接口(2026 年 10 月 26 日核对):https://docs.x.com/x-api/users/get-followers
- X API 速率限制(2026 年 10 月 26 日核对):https://docs.x.com/x-api/fundamentals/rate-limits
- X 服务条款,2026 年 10 月 9 日生效(2026 年 10 月 22 日核对):https://x.com/en/tos
- X 数据存档的 README,取自一份公开的存档(2026 年 10 月 26 日核对):https://bitfolk.com/twitter-archive/data/README.txt
- Tweepy(PyPI):https://pypi.org/project/tweepy/
- TwitterAPI.io 价格(2026 年 10 月 26 日核对):https://twitterapi.io/pricing
- TwitterAPI.io 获取粉丝接口(2026 年 10 月 26 日核对):https://docs.twitterapi.io/api-reference/endpoint/get_user_followers
- SocialData 价格(2026 年 10 月 26 日核对):https://socialdata.tools/
- Weir 粉丝接口文档:https://docs.weirapp.io/reference/x/getXUserFollowers
- Weir 计费和速率限制:https://docs.weirapp.io/billing 和 https://docs.weirapp.io/errors
- Weir 分页:https://docs.weirapp.io/pagination
- 我们用 Weir 对 @XDevelopers 粉丝第一页的调用,2026 年 10 月 26 日