快速入门 - 研究 API 参考
本指南介绍如何使用研究 API。以下示例展示如何使用研究 API 查询视频数据和获取公开的 TikTok 账号数据。
查看你的客户端注册信息
你的申请通过审核后,系统将为你的项目生成一个研究客户端。可在【研究项目】页面查看已通过审核的项目。从列表中选择一个项目,查看对应的研究客户端的详细信息。
连接研究 API 端点时,需要使用 TikTok 提供的 Client Key 和 Client Secret。Client Key 和 Client Secret 默认隐藏,可点击【显示】按钮(眼睛图标)查看。
警告:Client Secret 是连接 TikTok API 时的身份验证凭证。请勿向任何人透露。
获取客户端访问令牌
获取到项目的 Client Key 和 Client Secret 后,即可生成客户端访问令牌。将生成的访问令牌添加到 HTTP 请求的授权标头 (Authorization) 中,以连接研究 API 端点。
查询 TikTok 公开内容数据
以下 cURL 命令示例展示如何查询视频描述中包含关键词“hello world”且创建地为美国或加拿大的视频的 TikTok ID 和获赞数。
curl --location 'https://open.tiktokapis.com/v2/research/video/query/?fields=id%2Clike_count' \
--header 'authorization: bearer abcdefg' \
--header 'Content-Type: application/json' \
--data '{
"query": {
"and": [
{ "operation": "IN", "field_name": "region_code", "field_values": ["US", "CA"] },
{ "operation": "EQ", "field_name": "keyword", "field_values": ["hello world"] }
]
},
"max_count": 100,
"cursor": 0,
"start_date": "20181207",
"end_date": "20181207",
"is_random": false}
'查询条件
与 SQL 中的 WHERE 子句类似,条件 (Condition) 语句可用于筛选查询 (Query) 操作返回的数据。上述请求等同于以下 SQL 查询:
SELECT id,like_count FROM video_table WHERE region_code IN ["US", "CA"] AND create_date > 20220615Key | 类型 | 描述 | 示例 | 是否必填 |
field_name | 字符串 (String) | 被此条件限制的字段名。 | "region_code" | 是 |
operation | 字符串 (String) | 此条件的比较逻辑。以下任一:“EQ”、“IN”、“GT”、“GTE”、“LT”、“LTE”。 | "GT" | 是 |
field_values | list[string] | 用于比较的值列表。 | ["US", "IN"] | 是 |
注意:系统使用近似字符串匹配(或模糊字符串搜索)来匹配条件。
field_name
field_name 的可选值:
keywordcreate_dateusernameregion_codevideo_idhashtag_namemusic_ideffect_idvideo_length
operation
operation 的可选值:
IN:测试表达式是否匹配列表中的任意值。EQ:测试表达式是否与指定值匹配。GT:测试表达式的值是否大于指定值。GTE:测试表达式的值是否大于或等于指定值。LT:测试表达式的值是否小于指定值。LTE:测试表达式的值是否小于或等于指定值。
AND、OR 或 NOT
使用以下布尔运算符创建条件组:
AND:如果由AND连接的所有条件都为TRUE,则显示记录。OR:如果由OR连接的任一条件为TRUE,则显示记录。NOT:如果由NOT连接的所有条件都为FALSE,则显示记录。
分页
如果符合查询条件的视频总数超过了单次请求可返回的最大数量,响应数据将通过多次请求返回。
字段 | 类型 | 描述 | 示例 | 是否必填 |
max_count | 数值 (Number) | 响应中 TikTok 视频的最大数量。默认值为 10,最大值为 100。 | 12 | 否 |
cursor | 数值 (Number) | 响应中返回的 TikTok 视频的起始索引。默认值:0。 | 100 | 否 |
search_id | 字符串 (String) | 上次查询的 search_id。分页查询时,按顺序继续获取上次查询的结果。 | “7167072234702738478” | 否 |
查询首页结果
发送第一个请求时,无需在请求体中设置 search_id 或 cursor。HTTP 响应中会返回 cursor 和 search_id,可用于后续请求。请求示例:
curl --location 'https://open.tiktokapis.com/v2/research/video/query/?fields=id%2Clike_count' \
--header 'authorization: bearer abcdefg' \
--header 'Content-Type: application/json' \
--data '{
"query": {
"and": [
{ "operation": "IN", "field_name": "region_code", "field_values": ["US", "CA"] },
{ "operation": "EQ", "field_name": "keyword", "field_values": ["hello world"] }
]
},
"max_count": 100,
"cursor": 0,
"start_date": "20181207",
"end_date": "20181207",
"is_random": false}
'返回数据示例:
{
"data": {
"cursor": 10,
"has_more": true,
"search_id": "7160776277492814854",
"videos": [
...
]
},
"error": {
...
}
}获取下一页结果
你可以使用以下 cURL 命令获取下一页的查询结果。
curl --location 'https://open.tiktokapis.com/v2/research/video/query/?fields=id%2Clike_count' \
--header 'authorization: bearer abcdefg' \
--header 'Content-Type: application/json' \
--data '{
"query": {
"and": [
{ "operation": "IN", "field_name": "region_code", "field_values": ["US", "CA"] },
{ "operation": "EQ", "field_name": "keyword", "field_values": ["hello world"] }
]
},
"max_count": 10,
"cursor": 10,
"start_date": "20220615",
"end_date": "20220628",
"search_id": "7160776277492814854"
}
'返回数据示例:
{
"data": {
"cursor": 20,
"has_more": true,
"search_id": "7160776277492814854",
"videos": [
...
]
},
"error": {
...
}
}查询 TikTok 公开账号信息
你可以使用以下 cURL 命令,通过 TikTok 用户名查询 TikTok 公开账号信息。
curl --location --request POST 'https://open.tiktokapis.com/v2/research/user/info/?fields=display_name,bio_description,avatar_url,is_verified,follower_count,following_count,likes_count,video_count' \
--header 'Authorization: bearer {{access_token}}' \
--header 'Content-Type: text/plain' \
--data-raw '{
"username": "example_username"
}'Key | 类型 | 描述 | 示例 | 是否必填 |
username | 字符串 (String) | TikTok 用户的用户名。 | “example_username” | 否 |
返回数据示例:
{
"data": {
"username": "example_username",
"video_count": 64,
"avatar_url": "https://my-awesome-avatar",
"display_name": "joe 1234567",
"follower_count": 111,
"likes_count": 4146,
"bio_description": "joe joe",
"following_count": 103,
"is_verified": false
},
"error": {
...
}
}