TikTok API
TikTok API 允许你查询用户资料、列出视频、读取评论和回复、搜索视频和用户、浏览话题标签以及遍历社交关系图(粉丝/关注)。共十一个端点,每次请求消耗 1 积分。
端点
| 端点 | 描述 |
|---|---|
POST /api/v1/tiktok/profile | 通过用户名或 sec_user_id 获取用户资料 |
POST /api/v1/tiktok/user/posts | 列出用户的视频(支持分页和排序) |
POST /api/v1/tiktok/video | 获取单个视频的完整详情 |
POST /api/v1/tiktok/video/comments | 列出视频的评论 |
POST /api/v1/tiktok/video/comments/replies | 列出某条评论的回复 |
POST /api/v1/tiktok/search/videos | 按关键词搜索 TikTok 视频 |
POST /api/v1/tiktok/search/users | 按关键词搜索 TikTok 用户 |
POST /api/v1/tiktok/hashtag | 获取话题标签详情和统计数据 |
POST /api/v1/tiktok/hashtag/videos | 列出某个话题标签下的视频 |
POST /api/v1/tiktok/user/followers | 列出用户的粉丝 |
POST /api/v1/tiktok/user/followings | 列出用户关注的账号 |
身份验证
| 请求头 | 值 | 是否必填 |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | 是 |
Content-Type | application/json | 是 |
每个成功的响应都包含积分追踪字段: credits_used、credits_remaining 和 response_time(毫秒)。
获取 sec_user_id
大多数端点需要 sec_user_id 而非用户名。请先调用 用户资料端点并传入用户名,然后使用 data.user.sec_uid 进行后续请求。
用户资料
POST https://api.scavio.dev/api/v1/tiktok/profile获取 TikTok 用户资料。传入 username 或 sec_user_id 其中之一。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
username | string | -- | TikTok 用户名(不含 @)。username 或 sec_user_id 必须提供其一。 |
sec_user_id | string | -- | 安全用户 ID。username 或 sec_user_id 必须提供其一。 |
请求示例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/profile' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"username": "tiktok"}'响应字段(data.user)
| 字段 | 类型 | 描述 |
|---|---|---|
unique_id | string | 用户名(昵称标识) |
nickname | string | 显示名称 |
sec_uid | string | 安全用户 ID(用于其他端点) |
uid | string | 数字用户 ID |
signature | string | 个人简介 |
bio_url | string | 简介中的链接 |
follower_count | number | 粉丝数 |
following_count | number | 关注数 |
aweme_count | number | 发布视频总数 |
total_favorited | number | 获赞总数 |
avatar_larger | object | 头像图片(通过 .url_list[0] 获取 URL) |
响应示例
{
"data": {
"user": {
"unique_id": "tiktok",
"nickname": "TikTok",
"sec_uid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"uid": "107955",
"signature": "One TikTok can make a big impact",
"bio_url": "linktr.ee/tiktok",
"follower_count": 94015018,
"following_count": 1,
"aweme_count": 1510,
"total_favorited": 457945663
}
},
"response_time": 1245,
"credits_used": 1,
"credits_remaining": 11753
}用户视频
POST https://api.scavio.dev/api/v1/tiktok/user/posts列出用户的视频。需要 sec_user_id(可从用户资料端点获取)。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
sec_user_id | string | -- | 必填。从用户资料端点获取的安全用户 ID。 |
cursor | string | "0" | 分页游标。使用上一次响应中的 data.max_cursor。 |
count | number | 20 | 每页结果数(1-30)。 |
sort_type | string | "0" | "0" = 最新,"1" = 最热。 |
分页
使用 data.max_cursor 作为下一次请求的 cursor。当 data.has_more 为 0 时停止。
视频字段(data.aweme_list[])
| 字段 | 类型 | 描述 |
|---|---|---|
aweme_id | string | 视频 ID |
desc | string | 视频描述 |
create_time | number | Unix 时间戳(秒) |
statistics.digg_count | number | 点赞数 |
statistics.comment_count | number | 评论数 |
statistics.play_count | number | 播放数 |
statistics.share_count | number | 分享数 |
statistics.collect_count | number | 收藏数 |
author | object | 作者信息(用户资料的子集) |
music | object | 使用的音频 |
video | object | 视频 URL、尺寸、时长 |
视频详情
POST https://api.scavio.dev/api/v1/tiktok/video获取单个视频的完整详情。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
video_id | string | -- | 必填。TikTok 视频 ID。 |
请求示例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/video' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"video_id": "7350810998023949599"}'附加字段(data.aweme_detail)
包含上述所有视频字段,另外还有:
| 字段 | 类型 | 描述 |
|---|---|---|
video.play_addr | object | 视频播放 URL(.url_list[0]) |
video.download_addr | object | 下载 URL(无水印) |
video.cover | object | 封面图片 |
video.duration | number | 时长(毫秒) |
cha_list | array | 使用的话题标签 |
text_extra | array | 描述中的@提及和话题标签 |
响应示例
{
"data": {
"aweme_detail": {
"aweme_id": "7350810998023949599",
"desc": "im so sick of being tired im so tired of being sick",
"create_time": 1711494099,
"statistics": {
"digg_count": 2002382,
"comment_count": 8119,
"play_count": 12171757,
"share_count": 274978,
"collect_count": 211332
}
}
},
"response_time": 1605,
"credits_used": 1,
"credits_remaining": 11752
}视频评论
POST https://api.scavio.dev/api/v1/tiktok/video/comments获取视频的评论。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
video_id | string | -- | 必填。视频 ID。 |
cursor | string | "0" | 分页游标。 |
count | number | 20 | 每页结果数(1-50)。 |
分页
使用 data.cursor 作为下一个游标。当 data.has_more 为 0 时停止。
评论字段(data.comments[])
| 字段 | 类型 | 描述 |
|---|---|---|
cid | string | 评论 ID(用于回复端点) |
text | string | 评论内容 |
create_time | number | Unix 时间戳(秒) |
digg_count | number | 该评论的点赞数 |
reply_comment_total | number | 回复数 |
user | object | 评论者信息(昵称、头像等) |
is_author_digged | number | 如果视频作者点赞了该评论则为 1 |
评论回复
POST https://api.scavio.dev/api/v1/tiktok/video/comments/replies获取某条评论的回复。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
video_id | string | -- | 必填。视频 ID。 |
comment_id | string | -- | 必填。评论 ID(来自评论端点的 cid)。 |
cursor | string | "0" | 分页游标。 |
count | number | 20 | 每页结果数(1-50)。 |
分页
与评论相同:使用 data.cursor,当 data.has_more 为 0 时停止。每条回复具有与评论对象相同的字段。
搜索视频
POST https://api.scavio.dev/api/v1/tiktok/search/videos按关键词搜索 TikTok 视频。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
keyword | string | -- | 必填。搜索关键词(1-500 字符)。 |
cursor | string | "0" | 分页偏移量。 |
count | number | 20 | 每页结果数(1-30)。 |
sort_type | string | "0" | "0" = 相关度,"1" = 最多点赞。 |
publish_time | string | "0" | "0" = 全部时间,"1" = 最近一天, "7" = 一周,"30" = 一个月, "90" = 三个月,"180" = 六个月。 |
请求示例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/search/videos' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"keyword": "cooking recipe", "count": 10, "publish_time": "7"}'分页
使用 data.cursor 作为下一次请求的 cursor。当 data.has_more 为 0 时停止。 data.aweme_list 中的每一项与视频详情结构相同。
搜索用户
POST https://api.scavio.dev/api/v1/tiktok/search/users按关键词搜索 TikTok 用户。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
keyword | string | -- | 必填。搜索关键词(1-500 字符)。 |
cursor | string | "0" | 分页偏移量。 |
count | number | 20 | 每页结果数(1-30)。 |
响应字段(data.user_list[].user_info)
| 字段 | 类型 | 描述 |
|---|---|---|
uid | string | 用户 ID |
unique_id | string | 用户名 |
nickname | string | 显示名称 |
sec_uid | string | 安全用户 ID |
follower_count | number | 粉丝数 |
signature | string | 个人简介 |
话题标签信息
POST https://api.scavio.dev/api/v1/tiktok/hashtag获取话题标签详情和统计数据。传入 hashtag_name 或 hashtag_id 其中之一。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
hashtag_name | string | -- | 话题标签文本(不含 #)。hashtag_name 或 hashtag_id 必须提供其一。 |
hashtag_id | string | -- | 数字话题标签 ID。hashtag_name 或 hashtag_id 必须提供其一。 |
响应字段
| 字段 | 类型 | 描述 |
|---|---|---|
data.challengeInfo.challenge.id | string | 话题标签 ID(用于话题标签视频端点) |
data.challengeInfo.challenge.title | string | 话题标签名称 |
data.challengeInfo.challenge.desc | string | 描述 |
data.challengeInfo.stats.videoCount | number | 视频数量 |
data.challengeInfo.stats.viewCount | number | 总浏览量 |
响应示例
{
"data": {
"challengeInfo": {
"challenge": {
"id": "229207",
"title": "fyp",
"desc": "",
"stats": {
"videoCount": 0,
"viewCount": 118798000000000
}
}
}
},
"response_time": 892,
"credits_used": 1,
"credits_remaining": 11751
}话题标签视频
POST https://api.scavio.dev/api/v1/tiktok/hashtag/videos列出某个话题标签下的视频。需要 hashtag_id(可从话题标签信息端点获取)。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
hashtag_id | string | -- | 必填。从话题标签信息端点获取。 |
cursor | string | "0" | 分页游标。 |
count | number | 20 | 每页结果数(1-30)。 |
分页
使用 data.cursor 作为下一个游标。当 data.has_more 为 0 时停止。响应包含 data.aweme_list[],与搜索和用户视频结构相同。
用户粉丝
POST https://api.scavio.dev/api/v1/tiktok/user/followers获取用户的粉丝列表。
请求体
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
sec_user_id | string | -- | 必填。从用户资料端点获取。 |
count | number | 20 | 每页结果数(1-20)。 |
page_token | string | -- | 来自上一次响应的 data.next_page_token。 |
min_time | number | -- | 来自上一次响应的 data.min_time。 |
分页
同时传入上一次响应中的 page_token 和 min_time。当 data.has_more 为 false 时停止。
粉丝字段(data.followers[])
| 字段 | 类型 | 描述 |
|---|---|---|
unique_id | string | 用户名 |
nickname | string | 显示名称 |
sec_uid | string | 安全用户 ID |
uid | string | 用户 ID |
follower_count | number | 其粉丝数 |
aweme_count | number | 其视频数 |
signature | string | 其个人简介 |
avatar_thumb | object | 头像(.url_list[0]) |
用户关注
POST https://api.scavio.dev/api/v1/tiktok/user/followings获取用户关注的账号。请求格式和参数与粉丝端点相同。响应使用 data.followings[] 而非 data.followers[]。
分页参考
| 方式 | 端点 | 下一页 | 停止条件 |
|---|---|---|---|
| 游标(字符串) | user/posts | cursor = data.max_cursor | data.has_more === 0 |
| 偏移量(数字) | search/*, hashtag/videos, video/comments, video/comments/replies | cursor = data.cursor | data.has_more === 0 |
| 令牌 + 时间 | user/followers, user/followings | page_token + min_time | data.has_more === false |
注意事项
- 所有
create_time字段均为 Unix 时间戳,单位为 秒。在 JavaScript 中使用Date时需乘以 1000。 - 头像和图片字段返回一个包含
url_list数组的对象。使用.url_list[0]获取 URL。 - 参阅错误处理了解
401、429和502的处理方式。