TikTok item_get_video - 获取视频详情接口对接全攻略:从入门到精通

简介: TikTok `item_get_video` 接口可精准获取视频详情,支持播放量、商品标签、BGM等字段,适用于跨境内容聚合、带货分析与品牌舆情监测。提供官方OAuth2.0与第三方key-secret两种接入方式,本文详解权限申请、签名认证、Python实操及生产优化,助力高效稳定对接。

TikTok 的item_get_video接口是获取单条视频精细化详情的核心工具,输入视频 ID / 分享链接即可返回基础信息、互动数据、创作者信息、商品标签、版权标识等全量内容,广泛用于跨境内容聚合、社媒数据分析、带货效果评估、品牌舆情监测等场景。该接口存在官方与第三方两条合规接入路径,官方采用 OAuth2.0 授权,第三方多为 key-secret 签名校验,本攻略覆盖全流程实操与生产级优化,兼顾入门与稳定性需求。
一、接口核心认知:功能与适配场景

  1. 接口定位与核心价值
    核心功能:输入 TikTok 视频 ID(video_id)/ 分享链接,获取视频标题、播放量、点赞 / 评论 / 分享数据、创作者信息、视频封面 / 时长、商品标签、发布时间、版权状态等字段,支持多语言返回与直播回放兼容。
    TikTok 平台特性
    数据覆盖:支持短视频、直播回放、创作者合集视频,新视频收录延迟 3-5 分钟;
    专属字段:包含播放完成率、转发率、带货商品列表、音乐 BGM 信息等跨境平台特色字段;
    权限分层:基础字段(标题、播放量)支持普通权限,进阶字段(视频直链、商品标签)需企业级或专项权限;
    多标识兼容:支持 video_id(接口专用)、share_url(分享链接)、item_id(第三方通用 ID)三种查询方式。
    典型应用场景
    跨境内容聚合:搭建多语言视频平台,提供 TikTok 视频检索与播放入口;
    带货数据分析:关联视频与商品标签,评估短视频带货转化效率;
    创作者调研:分析同类视频互动数据,辅助跨境账号选题与内容创作;
    品牌舆情:追踪品牌关键词相关视频的传播量与评论倾向,优化海外营销;
    版权监测:识别违规搬运视频,保护原创内容权益。
  2. 核心参数与返回字段
    (1)请求参数(官方与第三方通用规范)
    参数名称 类型 是否必填 说明 应用示例
    client_id/client_key string 是 应用标识,官方平台为 client_id,第三方为 key awexxxxxx、tiktok_abc123
    client_secret/secret string 是 签名密钥,官方用于生成 token,第三方用于签名校验 tiktok_def456
    access_token string 官方必填 OAuth2.0 授权令牌,有效期 2 小时,需定期刷新 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    video_id string 是 视频唯一标识,支持 TikTok 原生 ID 或第三方映射 ID 7298345678901234567
    share_url string 否 视频分享链接,可替代 video_id(部分第三方支持) https://www.tiktok.com/@user/video/7298345678901234567
    fields string 否 指定返回字段,官方接口必填,第三方默认全量 id,title,stats,author,products
    timestamp long 第三方必填 请求时间戳(毫秒级,有效期 5 分钟) 1735689600000
    sign string 第三方必填 签名值(MD5 32 位大写) 3A9F7C2D1E0B86453210FEDCBA789654
    need_product int 否 是否返回带货商品信息,默认 0(不返回) 1(返回商品 ID、名称、价格)
    need_music int 否 是否返回 BGM 信息,默认 0(不返回) 1(返回音乐 ID、名称、创作者)
    注意事项
    官方接口通过fields指定返回字段,避免冗余;第三方接口通常支持need_xxx控制字段返回;
    video_id可通过 TikTok 分享链接提取,格式为https://www.tiktok.com/@xxx/video/{video_id};
    官方access_token需通过 OAuth2.0 流程获取,刷新周期建议 1.5 小时。
    (2)返回核心字段(按业务场景分类)
    字段分类 核心字段 说明
    视频基础信息 video_id TikTok 视频唯一 ID
    title 视频标题(多语言支持)
    description 视频描述(含标签与话题)
    cover_url 封面图 URL(高清)
    duration 视频时长(秒)
    create_time 发布时间(时间戳 / 格式化字符串)
    aspect_ratio 视频宽高比(如 9:16)
    status 视频状态(0 = 正常,1 = 审核中,2 = 已下架)
    互动数据 play_count 累计播放量
    like_count 点赞数
    comment_count 评论数
    share_count 转发数
    favorite_count 收藏数
    completion_rate 播放完成率(%,需企业权限)
    创作者信息 author_id 创作者 ID
    author_name 创作者昵称
    author_avatar 创作者头像 URL
    author_follower 创作者粉丝数(需权限)
    author_verified 认证状态(0 = 未认证,1 = 个人认证,2 = 企业认证)
    带货与内容信息 products 商品标签列表(含商品 ID、名称、价格、链接)
    music_info BGM 信息(含音乐 ID、名称、创作者)
    hashtags 话题标签列表(如 #fyp、#tiktok)
    copyright_type 版权类型(1 = 原创,2 = 授权,3 = 搬运)
    play_url 视频播放链接(需权限,部分仅返回跳转链接)
  3. 接口限制与注意事项
    调用频率限制
    接入方式 调用频率 适用场景
    TikTok 官方个人 10 次 / 分钟 个人调研、小型工具
    TikTok 官方企业 60 次 / 分钟 商业内容聚合、舆情监测
    第三方合规服务商 30-100 次 / 分钟 跨境电商数据分析、批量内容采集
    数据缓存规则:基础信息缓存 1 小时,互动数据缓存 5 分钟,热门视频缓存缩短至 1 分钟;企业用户可申请refresh=1强制刷新(需额外权限);
    内容限制:已下架 / 违规视频、隐私视频(仅好友可见)、未过审视频不会返回;版权内容(如音乐 MV)仅返回基础信息,无播放链接;
    合规要求:禁止批量抓取视频源文件用于商用,播放链接需跳转 TikTok 站内,二次创作需遵守 TikTok 版权规则与当地数据保护法规(如 GDPR)。
    二、对接前准备:权限与环境搭建
  4. 获取接口权限(两条合规路径)
    TikTok item_get_video 接口无公开免费接入渠道,需通过官方开放平台或合规第三方服务商获取权限,具体对比如下:
    接入方式 操作步骤 优缺点
    TikTok 官方开放平台 1. 登录 TikTok for Developers;
  5. 完成企业认证(需营业执照、法人信息);
  6. 创建应用,选择 “Video API” 类目;
  7. 申请video.detail接口权限,提交业务用途说明;
  8. 通过 OAuth2.0 流程获取access_token 优点:数据权威、字段完整、合规性强;
    缺点:审核严格(周期 7-15 个工作日)、需企业资质、部分字段(播放链接)需专项授权
    第三方合规服务商 1. 选择口碑服务商(如 APISpace、聚合数据);
  9. 注册账号并完成实名认证;
  10. 购买 TikTok 视频接口套餐;
  11. 在服务商后台获取key、secret和接口调用地址 优点:接入快(10 分钟完成)、无需复杂资质、调试工具完善;
    缺点:部分进阶字段(商品标签)需付费升级、调用次数有配额限制
    风险提示:严禁使用非法爬虫接口,违反 TikTok 用户协议及《计算机信息网络国际联网安全保护管理办法》,存在账号封禁、法律追责风险。
  12. 技术环境准备
    (1)支持语言与协议
    协议:HTTPS(强制,保障跨境数据传输安全);
    开发语言:支持 Python、Java、PHP、Go 等所有主流语言,推荐Python(适配跨境数据处理与多语言解析)。
    (2)必备工具与依赖
    工具类型 推荐工具 用途
    调试工具 Postman 快速验证接口可用性,排除代码逻辑干扰
    在线 MD5 工具 校验签名生成正确性
    TikTok 视频 ID 提取工具 从分享链接中提取 video_id
    开发依赖 requests(Python) 发送 HTTP 请求
    hashlib(Python) 生成接口签名
    pandas(Python) 批量整理视频数据
    jsonpath-ng 快速解析嵌套 JSON 响应
    python-jose 处理 OAuth2.0 授权(官方接口)
    辅助工具 Redis 缓存视频详情,减少重复请求
    logging 记录接口调用日志,便于问题追溯
    三、实操步骤:接口对接全流程(Python 示例)
    步骤 1:理解 TikTok 接口认证与签名规则
    (1)官方接口 OAuth2.0 授权流程
    构建授权 URL,引导用户授权;
    获取授权码,通过client_id、client_secret、授权码获取access_token;
    用access_token调用item_get_video接口,每次请求在 Header 中携带Authorization: Bearer {access_token};
    access_token有效期 2 小时,需通过refresh_token定期刷新。
    (2)第三方接口签名规则(MD5 加密)
    剔除参数中的sign字段(若存在);
    将剩余参数按参数名 ASCII 升序排序;
    拼接为key1=value1&key2=value2&...的字符串;
    在字符串末尾拼接&secret=你的secret;
    对拼接后的字符串进行 MD5 加密,生成 32 位大写字符串即为sign。
    步骤 2:完整代码实现(第三方签名 + 官方 OAuth2.0 双示例)
    (1)依赖安装
    bash
    运行
    pip install requests pandas jsonpath-ng python-jose hashlib
    (2)第三方签名方式代码(快速接入)
    import requests
    import hashlib
    import time
    import json
    import pandas as pd
    import logging
    from urllib.parse import urlencode

日志配置

logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[logging.FileHandler("tiktok_item_get_video.log"), logging.StreamHandler()]
)

接口配置(替换为自身的key、secret、接口地址)

CONFIG = {
"key": "你的第三方key",
"secret": "你的第三方secret",
"api_url": "https://api.example.com/tiktok/item_get_video",
"save_path": "TikTok视频详情.xlsx"
}

def generate_sign(params: dict, secret: str) -> str:
"""生成第三方接口签名(MD5 32位大写)"""
params.pop("sign", None)
sorted_params = sorted(params.items(), key=lambda x: x[0])
param_str = urlencode(sorted_params, encoding="utf-8") + f"&secret={secret}"
md5 = hashlib.md5()
md5.update(param_str.encode("utf-8"))
return md5.hexdigest().upper()

def standardize_video_data(raw_video: dict) -> dict:
"""标准化视频数据,统一输出格式"""
create_time = raw_video.get("create_time", 0)
create_time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(create_time)) if create_time else ""
duration = raw_video.get("duration", 0)
duration_str = f"{duration//60}:{duration%60:02d}"

return {
    "视频ID": raw_video.get("video_id", ""),
    "视频标题": raw_video.get("title", ""),
    "视频描述": raw_video.get("description", ""),
    "封面链接": raw_video.get("cover_url", ""),
    "视频时长": duration_str,
    "发布时间": create_time_str,
    "播放量": raw_video.get("play_count", 0),
    "点赞数": raw_video.get("like_count", 0),
    "评论数": raw_video.get("comment_count", 0),
    "分享数": raw_video.get("share_count", 0),
    "收藏数": raw_video.get("favorite_count", 0),
    "创作者ID": raw_video.get("author_id", ""),
    "创作者昵称": raw_video.get("author_name", ""),
    "创作者头像": raw_video.get("author_avatar", ""),
    "认证状态": "认证" if raw_video.get("author_verified", 0) else "未认证",
    "话题标签": ",".join(raw_video.get("hashtags", [])),
    "商品数量": len(raw_video.get("products", [])) if raw_video.get("products") else 0,
    "版权类型": raw_video.get("copyright_type", "未知"),
    "视频状态": "正常" if raw_video.get("status", 0) == 0 else "已下架/违规",
    "请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
}

def tiktok_item_get_video(
video_id: str,
need_product: int = 0,
need_music: int = 0
) -> dict:
"""调用TikTok item_get_video接口(第三方签名方式)"""
params = {
"key": CONFIG["key"],
"video_id": video_id,
"need_product": need_product,
"need_music": need_music,
"timestamp": int(time.time() * 1000)
}
params["sign"] = generate_sign(params, CONFIG["secret"])

try:
    response = requests.post(
        url=CONFIG["api_url"],
        data=json.dumps(params),
        headers={"Content-Type": "application/json"},
        timeout=20,
        verify=True
    )
    response.raise_for_status()
    result = response.json()

    if result.get("code") == 0 or result.get("status") == "success":
        raw_video = result.get("data", {})
        if not raw_video:
            logging.warning(f"无视频数据返回(视频ID:{video_id})")
            return {"success": False, "error_msg": "无视频数据"}
        return {
            "success": True,
            "data": standardize_video_data(raw_video),
            "error_msg": ""
        }
    else:
        error_msg = result.get("msg", result.get("message", "接口调用失败"))
        logging.error(f"接口返回错误(视频ID:{video_id}):{error_msg}(code={result.get('code')})")
        return {"success": False, "error_msg": error_msg}
except requests.exceptions.RequestException as e:
    logging.error(f"网络请求异常(视频ID:{video_id}):{str(e)}")
    return {"success": False, "error_msg": f"网络异常:{str(e)}"}
except Exception as e:
    logging.error(f"数据解析异常(视频ID:{video_id}):{str(e)}")
    return {"success": False, "error_msg": f"解析异常:{str(e)}"}

调用示例

if name == "main":

# 单视频获取示例
video_id = "7298345678901234567"
result = tiktok_item_get_video(video_id=video_id, need_product=1)
if result["success"]:
    print("TikTok视频详情:")
    for k, v in result["data"].items():
        print(f"{k}:{v}")
else:
    print(f"获取失败:{result['error_msg']}")

(3)官方接口 OAuth2.0 调用示例(核心片段)
from jose import jwt
import requests

def get_access_token(client_id, client_secret, code, redirect_uri):
"""通过授权码获取access_token"""
url = "https://open-api.tiktok.com/oauth/access_token/"
data = {
"client_id": client_id,
"client_secret": client_secret,
"code": code,
"grant_type": "authorization_code",
"redirect_uri": redirect_uri
}
response = requests.post(url, data=data)
return response.json().get("access_token")

def tiktok_official_item_get(access_token, video_id):
"""调用TikTok官方视频详情接口"""
url = "https://open-api.tiktok.com/video/detail/"
headers = {"Authorization": f"Bearer {access_token}"}
params = {
"video_id": video_id,
"fields": "id,title,description,duration,cover_image_url,stats,author,products"
}
response = requests.get(url, headers=headers, params=params)
return response.json()
四、调试与问题排查:快速解决对接异常

  1. 优先用 Postman 调试(排除代码干扰)
    构造请求:新建 POST/GET 请求,填写接口 URL,请求头设置Content-Type: application/json;
    填写参数:在请求体 / 参数中输入client_id/key、video_id、timestamp等必填项,按需补充need_product等可选参数;
    生成签名 / 携带 token:官方接口在 Header 中携带Authorization: Bearer {access_token},第三方接口计算sign并填入;
    发送请求:查看响应结果,验证接口可用性。
  2. 高频问题排查表
    问题现象 常见原因 解决方案
    认证失败(401) 1. client_id/key或client_secret/secret错误;
  3. access_token过期 / 无效;
  4. 签名生成错误;
  5. 时间戳过期 1. 核对密钥与后台一致;
  6. 重新获取access_token;
  7. 按 ASCII 升序排序参数并重新计算签名;
  8. 校准本地时间(误差≤5 分钟)
    权限不足(403) 1. 未申请item_get_video接口权限;
  9. 无商品 / 音乐数据权限;
  10. 调用频率超限 1. 在开放平台 / 服务商后台确认接口已开通;
  11. 申请对应进阶权限;
  12. 增加请求间隔,降低调用频率
    参数错误(400) 1. video_id格式错误(非 TikTok 有效 ID);
  13. fields字段非法;
  14. 字段类型错误 1. 在 TikTok 官网验证视频 ID 有效性;
  15. 核对fields取值(参考官方文档);
  16. 检查参数类型(如timestamp为数字)
    无数据返回 1. 视频 ID 无效 / 已下架;
  17. 视频为隐私 / 版权受限内容;
  18. 接口未收录该视频 1. 核对视频 ID,在 TikTok 官网确认视频状态;
  19. 排除版权内容;
  20. 更换服务商或申请官方专项权限
    字段缺失(如无商品列表) 1. 账号无企业权限;
  21. 视频未关联商品;
  22. 接口版本不支持 1. 升级为企业账号或申请专项权限;
  23. 确认视频是否带商品标签;
  24. 联系服务商升级接口版本
    五、进阶优化:生产级稳定性提升
  25. 性能优化
    异步并发请求:批量获取多视频时,使用aiohttp实现异步请求,控制并发数≤5(避免频率超限),效率比同步提升 4-6 倍;
    智能缓存策略:用 Redis 缓存视频详情,缓存 key 为tiktokvideo{video_id},基础信息缓存 1 小时,互动数据缓存 5 分钟,减少重复请求;
    数据复用:通过item_get_video获取的author_id,可联动 TikTok 用户接口获取创作者详细信息,避免重复调用。
  26. 数据质量优化
    数据去重:按video_id去重,避免同一视频多次入库;
    异常值过滤:过滤播放量为 0、状态为下架的无效数据;
    字段补全:对缺失的话题标签,通过视频描述关键词自动补充(如描述含 “#fyp” 则补充分类为 “热门”)。
  27. 合规与安全
    密钥管理:生产环境将client_id/key和client_secret/secret存储在环境变量 / 配置中心(如 Nacos),禁止硬编码,定期轮换密钥;
    数据合规:视频数据仅用于合规业务,播放链接需跳转 TikTok 站内,二次创作需获得创作者授权,遵守 GDPR 等数据保护法规;
    日志审计:详细记录接口调用的参数、响应、错误信息,保留至少 7 天日志,便于合规审计与问题追溯。
    六、扩展场景:接口联动与功能升级
    联动item_search_video接口:先通过关键词搜索获取视频 ID 列表,再批量调用item_get_video获取详情,实现 “搜索 - 详情” 全链路;
    跨境带货分析模型:结合播放量、商品点击量、转化率等指标,构建带货效果评分公式,自动筛选优质带货视频;
    实时监控告警:用APScheduler定时调用接口,监控目标视频的播放量 / 评论数变化,触发舆情 / 爆款告警。
相关文章
|
10天前
|
数据采集 人工智能 安全
|
6天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
321 164
|
5天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
324 155
|
6天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
383 4
|
13天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
920 7