TikTokitem_search_video关键词视频列表接口对接全攻略:从入门到精通

简介: TikTok item_search_video接口支持按关键词、地区、时间等多维度批量检索全球视频,返回互动数据、创作者信息及商品标签,适用于跨境内容聚合、爆款挖掘与舆情监测。本攻略涵盖权限获取、对接调试到生产优化的全流程,助力开发者高效稳定接入。

TikTok 的item_search_video接口是按关键词批量检索平台视频列表的核心工具,支持按地区、发布时间、互动量、内容类型、带货属性等多维度筛选,返回视频基础信息、互动数据、创作者信息、商品标签等关键内容,适配跨境内容聚合、爆款视频挖掘、带货效果分析、社媒舆情监测等场景。本攻略从接口认知、权限获取、实操对接、调试排错到生产级优化,提供全流程结构化指导,兼顾入门易用性与企业级稳定性,助力开发者高效完成跨境对接。
一、接口核心认知:功能与适配场景

  1. 接口定位与核心价值
    核心功能:输入搜索关键词(支持多关键词组合、语言适配),筛选 TikTok 全球公开视频(短视频、直播回放、创作者合集),支持地区 / 语言过滤、时间范围筛选、排序规则自定义,返回分页视频列表;可联动item_get_video接口获取单视频精细化详情。
    TikTok 平台特性
    全球数据覆盖:收录 150 + 国家 / 地区的公开视频,涵盖娱乐、美妆、3C、跨境电商等 40 + 内容类目,新视频收录延迟 3-5 分钟;
    跨境专属筛选:支持按地区(如 US/UK/IN)、语言(如英语 / 西班牙语)、带货属性(是否挂小黄车)、内容类型(原创 / 转载 / 合拍) 筛选,适配跨境业务需求;
    互动数据前置:搜索结果直接返回播放量、点赞数、完播率等核心互动指标,无需二次调用;
    多关键词逻辑:支持空格分隔(AND 逻辑)、竖线|分隔(OR 逻辑),适配复杂检索场景。
    典型应用场景
    跨境内容聚合:搭建垂直品类内容平台(如 “跨境美妆爆款”“3C 测评” 专区),按关键词聚合 TikTok 相关视频;
    爆款挖掘:按播放量 / 完播率排序,筛选特定地区近期爆款视频,辅助跨境账号选题;
    带货效果分析:筛选带商品标签的视频,统计关键词下商品曝光量、互动转化数据;
    社媒舆情监测:追踪品牌 / 事件关键词相关视频,实时监控传播量与评论倾向,适配跨境品牌合规运营。
  2. 核心参数与返回字段
    (1)请求参数(必填 + 可选,按优先级排序)
    参数名称 类型 是否必填 说明 应用示例
    client_id/key string 是 接口调用标识(官方为 client_id,第三方为 key) tiktok_abc123
    client_secret/secret string 是 签名密钥(官方用于 token 生成,第三方用于签名校验) tiktok_def456
    keyword string 是 搜索关键词(支持多语言,需 URL 编码) smartphone review 手机测评
    region string 否 目标地区(ISO 3166-1 alpha-2,默认 global) US、UK、IN
    language string 否 视频语言(ISO 639-1,默认 auto) en、es、zh
    time_range string 否 发布时间范围,默认all 1day、7days、30days、custom
    start_date string 否 自定义开始日期(time_range=custom 时必填) 2025-01-01
    end_date string 否 自定义结束日期(time_range=custom 时必填) 2025-12-31
    sort_type string 否 排序方式,默认relevance play(播放量倒序)、like(点赞数倒序)、pubtime(发布时间倒序)、completion(完播率倒序)
    has_product int 否 是否仅返回带货视频,默认 0(不限) 1(仅带货视频)
    content_type string 否 内容类型,默认all original(原创)、duet(合拍)、stitch(缝合)
    duration_range string 否 视频时长范围,默认all 0-60(1 分钟内)、60-300(1-5 分钟)、300+(5 分钟以上)
    page_no int 否 页码,默认 1,最大支持 100 页 1、5、10
    page_size int 否 每页视频数,默认 20,最大支持 50 20、30、50
    access_token string 官方必填 OAuth2.0 授权令牌(有效期 2 小时) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    timestamp long 第三方必填 请求时间戳(毫秒级,有效期 5 分钟) 1735689600000
    sign string 第三方必填 签名值(MD5 32 位大写,核心校验项) 32 位 MD5 大写串
    注意事项
    地区参数region需用 ISO 3166-1 alpha-2 标准码,如美国US、印度IN、英国UK;
    时间范围custom模式下,start_date和end_date需同时传入,格式为YYYY-MM-DD,跨度不超过 1 年;
    排序方式play对应近 30 天播放量,适配爆款视频筛选;completion需企业权限。
    (2)返回核心字段(按业务场景分类)
    字段分类 核心字段 说明
    视频基础信息 video_id 视频唯一 ID(TikTok 原生标识)
    title 视频标题(多语言,含话题标签)
    cover_url 高清封面图 URL
    duration 视频时长(秒)
    create_time 发布时间(时间戳 / 格式化字符串)
    region 视频所属地区
    language 视频语言
    content_type 内容类型(原创 / 合拍 / 缝合)
    status 视频状态(0 = 正常,1 = 审核中,2 = 已下架)
    互动数据 play_count 近 30 天播放量
    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、名称、价格、链接)
    hashtags 话题标签列表(如 #fyp、#tiktokmademebuyit)
    music_id BGM 音乐 ID
    music_title BGM 名称
    分页信息 total 关键词匹配视频总数
    page_no 当前页码
    page_total 总页码
    has_more 是否有更多数据(true/false)
  3. 接口限制与注意事项
    调用频率限制
    接入方式 调用频率 适用场景
    TikTok 官方个人 10 次 / 分钟 个人调研、小型工具
    TikTok 官方企业 60 次 / 分钟 商业内容聚合、舆情监测
    第三方合规服务商 30-100 次 / 分钟 跨境电商数据分析、批量内容采集
    数据缓存规则:搜索结果缓存 30 分钟,热门关键词(如 #fyp)缓存缩短至 10 分钟;企业用户可申请refresh=1强制刷新(需额外权限);
    内容限制:已下架 / 违规视频、隐私视频(仅好友可见)、未过审视频不会返回;版权内容(如音乐 MV)仅返回基础信息,无播放链接;
    合规要求:禁止批量抓取视频源文件用于商用,播放链接需跳转 TikTok 站内,二次创作需遵守 TikTok 版权规则与 GDPR 等数据保护法规。
    二、对接前准备:权限与环境搭建
  4. 获取接口权限(两条合规路径)
    TikTok item_search_video 接口无公开免费接入渠道,需通过官方开放平台或合规第三方服务商获取权限,具体对比如下:
    接入方式 操作步骤 优缺点
    TikTok 官方开放平台 1. 登录 TikTok for Developers;
  5. 完成企业认证(需营业执照、法人信息、跨境业务证明);
  6. 创建应用,选择 “Content Search API” 类目;
  7. 提交item_search_video接口申请,附业务用途说明;
  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 地区 / 语言编码查询工具 获取region/language参数的正确取值
    开发依赖 requests(Python) 发送 HTTP 请求
    hashlib(Python) 生成接口签名
    pandas(Python) 批量整理视频列表数据
    jsonpath-ng 快速解析嵌套 JSON 响应
    python-jose 处理 OAuth2.0 授权(官方接口)
    辅助工具 Redis 缓存搜索结果,减少重复请求
    logging 记录接口调用日志,便于问题追溯
    三、实操步骤:接口对接全流程(Python 示例)
    步骤 1:理解认证与签名规则
    (1)官方接口 OAuth2.0 授权流程
    构建授权 URL,引导用户授权;
    获取授权码,通过client_id、client_secret、授权码获取access_token与refresh_token;
    调用接口时,在 Header 中携带Authorization: Bearer {access_token};
    access_token有效期 2 小时,通过refresh_token每 1.5 小时刷新一次。
    (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
    (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_search_video.log"), logging.StreamHandler()]
)

接口配置(替换为自身信息)

CONFIG = {
"key": "你的第三方key",
"secret": "你的第三方secret",
"api_url": "https://api.example.com/tiktok/item_search_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 {
    "搜索关键词": raw_video.get("keyword", ""),
    "视频ID": raw_video.get("video_id", ""),
    "标题": raw_video.get("title", ""),
    "封面链接": raw_video.get("cover_url", ""),
    "时长": duration_str,
    "发布时间": create_time_str,
    "地区": raw_video.get("region", ""),
    "语言": raw_video.get("language", ""),
    "播放量": 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", ""),
    "认证状态": "认证" 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,
    "视频状态": "正常" if raw_video.get("status", 0) == 0 else "已下架/违规",
    "请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
}

def tiktok_item_search_video(
keyword: str,
region: str = "global",
time_range: str = "all",
sort_type: str = "relevance",
has_product: int = 0,
page_no: int = 1,
page_size: int = 20
) -> dict:
"""调用TikTok item_search_video接口(第三方签名方式)"""

# 校验参数
if time_range == "custom" and not (start_date and end_date):
    logging.error("time_range=custom时,start_date和end_date为必填参数")
    return {"success": False, "error_msg": "缺少自定义时间参数"}

# 构建基础参数
params = {
    "key": CONFIG["key"],
    "keyword": keyword,
    "region": region,
    "time_range": time_range,
    "sort_type": sort_type,
    "has_product": has_product,
    "page_no": page_no,
    "page_size": page_size,
    "timestamp": int(time.time() * 1000)
}

# 补充自定义时间参数
if time_range == "custom":
    params["start_date"] = start_date
    params["end_date"] = end_date

# 生成签名
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_data = result.get("data", {})
        video_list = raw_data.get("item_list", [])
        total = raw_data.get("total", 0)
        page_total = raw_data.get("page_total", 1)

        # 标准化数据
        standard_videos = []
        for video in video_list:
            video["keyword"] = keyword
            standard_videos.append(standardize_video_data(video))

        return {
            "success": True,
            "data": standard_videos,
            "total": total,
            "page_total": page_total,
            "error_msg": ""
        }
    else:
        error_msg = result.get("msg", result.get("message", "接口调用失败"))
        logging.error(f"接口返回错误(关键词:{keyword}):{error_msg}(code={result.get('code')})")
        return {"success": False, "error_msg": error_msg}
except requests.exceptions.RequestException as e:
    logging.error(f"网络请求异常(关键词:{keyword}):{str(e)}")
    return {"success": False, "error_msg": f"网络异常:{str(e)}"}
except Exception as e:
    logging.error(f"数据解析异常(关键词:{keyword}):{str(e)}")
    return {"success": False, "error_msg": f"解析异常:{str(e)}"}

调用示例

if name == "main":

# 单页获取示例:搜索“smartphone review”,美国地区,近30天,按播放量排序
single_page_result = tiktok_item_search_video(
    keyword="smartphone review",
    region="US",
    time_range="30days",
    sort_type="play",
    page_size=20
)
if single_page_result["success"]:
    print(f"获取到 {len(single_page_result['data'])} 条视频数据")
    for video in single_page_result["data"][:5]:
        print(f"标题:{video['标题']} | 播放量:{video['播放量']} | 创作者:{video['创作者昵称']}")
else:
    print(f"单页获取失败:{single_page_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_search(access_token, keyword, region, sort_type):
"""调用TikTok官方视频搜索接口"""
url = "https://open-api.tiktok.com/video/search/"
headers = {"Authorization": f"Bearer {access_token}"}
params = {
"keyword": keyword,
"region": region,
"sort_type": sort_type,
"page_size": 20,
"fields": "id,title,cover_image_url,duration,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、keyword、timestamp等必填项,按需补充region/time_range等参数;
    生成签名 / 携带 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_search_video接口权限;
  9. 无带货 / 完播率数据权限;
  10. 调用频率超限 1. 在开放平台 / 服务商后台确认接口已开通;
  11. 申请对应进阶权限;
  12. 增加请求间隔,降低调用频率
    参数错误(400) 1. region/language格式错误;
  13. time_range=custom未传日期;
  14. sort_type取值非法 1. 查阅 ISO 3166-1/639-1 标准码;
  15. 补充start_date和end_date;
  16. 核对sort_type取值(参考参数表)
    无数据返回 1. 关键词过于精准 / 无匹配视频;
  17. 筛选条件过于严格;
  18. 视频未被接口收录 1. 放宽关键词(如 “smartphone review 2025” 改为 “smartphone review”);
  19. 移除地区 / 时间等筛选条件;
  20. 在 TikTok 官网搜索关键词,确认是否有相关视频
    字段缺失(如无商品列表) 1. 账号无企业权限;
  21. 视频未关联商品;
  22. 接口版本不支持 1. 升级为企业账号或申请专项权限;
  23. 确认视频是否带商品标签;
  24. 联系服务商升级接口版本
    五、进阶优化:生产级稳定性提升
  25. 性能优化
    异步并发请求:多关键词 / 多页码批量获取时,使用aiohttp实现异步请求,控制并发数≤5(避免频率超限),效率比同步提升 4-6 倍;
    智能缓存策略:用 Redis 缓存关键词+地区+时间范围组合的搜索结果,缓存 key=tiktoksearch关键词地区时间范围,有效期 30 分钟;对无结果的关键词,缓存空结果(有效期 10 分钟),避免无效请求;
    分页智能停止:获取第 1 页后,根据page_total计算总页码,仅请求有效页码,避免page_no超过总页码的无效请求。
  26. 数据质量优化
    数据去重:按video_id去重,避免同一视频多次入库;
    异常值过滤:过滤播放量为 0、状态为下架的无效数据;
    关键词扩展:结合多语言分词工具对核心关键词进行扩展(如 “smartphone review” 扩展为 “phone review”“mobile review”),提升搜索覆盖率。
  27. 合规与安全
    密钥管理:生产环境将client_id/key和client_secret/secret存储在环境变量 / 配置中心(如 Nacos),禁止硬编码,定期轮换密钥(每 3 个月一次);
    数据合规:视频数据仅用于合规业务,播放链接需跳转 TikTok 站内,二次创作需获得创作者授权,遵守 GDPR、CCPA 等跨境数据保护法规;
    日志审计:详细记录每次接口调用的参数、响应、错误信息,保留至少 7 天日志,便于合规审计与问题追溯。
    六、扩展场景:接口联动与功能升级
    联动item_get_video接口:通过item_search_video获取video_id列表后,批量调用item_get_video获取视频分 P、字幕、播放链接等精细化详情;
    跨境爆款分析模型:结合播放量、完播率、商品转化率等指标,构建爆款评分公式,自动筛选优质带货视频;
    实时关键词监测:使用APScheduler定时调用接口,监控目标关键词的视频新增量、播放量变化,触发舆情 / 爆款告警
相关文章
|
10月前
|
缓存 自然语言处理 安全
TikTok item_get_video - 获取视频详情接口对接全攻略:从入门到精通
TikTok `item_get_video` 接口可精准获取视频详情,支持播放量、商品标签、BGM等字段,适用于跨境内容聚合、带货分析与品牌舆情监测。提供官方OAuth2.0与第三方key-secret两种接入方式,本文详解权限申请、签名认证、Python实操及生产优化,助力高效稳定对接。
|
数据采集 监控 数据可视化
Scrapy可视化管理管理工具总结
Scrapy可视化管理管理工具总结
2239 0
Scrapy可视化管理管理工具总结
|
8月前
|
人工智能 运维 监控
2026年OpenClaw/Clawdbot必装10大Skills指南:从部署到技能精通
在AI Agent技术飞速迭代的2026年,OpenClaw(原Clawdbot)凭借轻量化部署、高自由度扩展的特性,成为个人与企业构建自动化工作流的核心工具。而真正决定OpenClaw能力上限的,并非基础模型本身,而是其开放的Skills(技能系统)——这一插件生态如同给AI助手装上“多功能工具包”,可扩展实时搜索、浏览器自动化、网页部署、性能检测等关键能力,让普通问答助手升级为能执行真实任务的智能工作系统。
7246 15
|
7月前
|
人工智能 PHP 开发工具
用 Laravel AI SDK 构建多智能体工作流
Laravel AI SDK 提供轻量、灵活的多智能体工作流实现方案,支持 Prompt Chaining、Routing、Parallelization、Orchestrator-Workers 和 Evaluator-Optimizer 五种经生产验证的模式,一行 `agent()` 即可启动,Pipeline/Concurrency 等 API 让复杂任务模块化、可编排。(239字)
374 7
|
Kubernetes API 开发工具
Kubeflow-Pipelines-架构学习指南
本指南带你深入 Kubeflow Pipelines 架构,从零掌握 ML 工作流编排。涵盖核心组件、代码结构、开发调试及贡献流程,结合实战练习与学习路径,助你由使用者进阶为贡献者。
1513 139
|
7月前
|
机器学习/深度学习 人工智能 算法
美团2026春招笔试复盘:AI知识正式进入必考范围
3月中旬美团春招笔试释放明确信号:AI基础(如Transformer、Attention、Agent等)已成必考项,非仅算法岗。笔试结构稳定但选择题新增大模型考点,编程题难度梯度明显,图论压轴题重模型转化。备考需三足鼎立:构建算法题型模型、夯实AI通识、提升工程实现稳定性。
|
8月前
|
JSON 缓存 API
美客多平台关键词商品搜索API接口实践指南
本文详解美客多(Mercado Libre)关键词商品搜索API的调用方法,涵盖OAuth 2.0认证、请求构建(含分页/排序/过滤)、JSON响应解析、错误处理及最佳实践,助力开发者高效接入拉美最大电商平台的商品数据。(239字)
1380 2
|
10月前
|
缓存 监控 调度
阿里云 CDN 计费体系全解析:基础服务、增值服务与选型指南
在内容分发网络(CDN)领域,阿里云凭借全球节点覆盖与灵活的计费模式,成为个人开发者与企业用户的重要选择。其 CDN 服务计费分为基础服务与增值服务两部分,基础服务提供按流量计费、按带宽峰值计费、月结 95 带宽峰值计费三种核心模式,增值服务则根据功能使用情况单独计费。本文基于 今年最新官方文档与实测数据,从计费规则、价格详情、场景适配、成本优化等维度展开解析,为用户提供客观选型参考。
1265 14
|
JSON 监控 API
抖音视频列表API秘籍!轻松获取视频列表数据
抖音视频列表API是抖音开放平台提供的核心接口,支持按关键词、分类、排序方式筛选视频,适用于内容推荐、趋势分析等场景。接口返回含视频ID、标题、播放量等50+字段,支持分页获取,通过HTTP GET请求调用,返回JSON格式数据,便于开发者快速集成与处理。需注册平台账号获取访问权限。
2827 56
|
9月前
|
运维 并行计算 物联网
用Pandas处理时间序列:滑动窗口、重采样与趋势分析
本文详解Pandas在时间序列分析中的三大核心工具:滑动窗口、重采样与趋势分析,结合物联网、金融、气象等真实场景,展示如何用简洁代码实现异常检测、周期识别与趋势预测,提升数据处理效率与决策精度。
701 0