浏览器

TikTok Scraper API - Profiles, Videos, Comments, Hashtags

试用

Look up TikTok profiles, search videos, users and sounds, read comments and transcripts, explore hashtags, the Top 50 and Viral 50 sound charts and trending searches and videos, find similar creators, playlists, live status and account region, and traverse followers/followings. 24 endpoints, all at 1 credit per request.

它能做什么

TikTok Profiles, Videos, Comments, Hashtags and Social Graph via Scavio

技能文档

TikTok Profiles, Videos, Comments, Hashtags and Social Graph via Scavio

Search TikTok videos and users, look up profiles, read comments and replies, explore hashtags, and list followers/followings. Returns structured JSON with engagement stats, video metadata, and social graph data.

When to trigger

Use this skill when the user asks to:

  • Look up a TikTok creator's profile, follower count, or bio
  • Search TikTok for videos by keyword or topic
  • Search for TikTok users/creators
  • Get details, stats, or engagement metrics for a specific TikTok video
  • Read comments or replies on a TikTok video
  • Explore a hashtag's stats or trending videos
  • List a creator's followers or who they follow
  • Analyze TikTok trends, influencer reach, or content performance
  • Build RAG pipelines that need short-form video context

Setup

Get a free API key at scavio.dev (50 free credits to get started, no card required):

export SCAVIO_API_KEY=sk_live_your_key

Workflow

  1. Resolving a username: most endpoints require a sec_user_id. Call /tiktok/profile with a username first, then use data.user.sec_uid for subsequent requests.
  2. Browsing a creator's videos: call /tiktok/user/posts with the sec_user_id. Use sort_type: "1" for most popular.
  3. Video deep-dive: call /tiktok/video with a video_id for full details including play URLs, cover images, and duration.
  4. Reading comments: call /tiktok/video/comments for top-level comments, then /tiktok/video/comments/replies with a comment_id for threaded replies.
  5. Searching: call /tiktok/search/videos or /tiktok/search/users with a keyword. Filter by publish_time and sort_type.
  6. Hashtag research: call /tiktok/hashtag by name to get the hashtag_id and view counts, then /tiktok/hashtag/videos to list videos under it.
  7. Social graph: call /tiktok/user/followers or /tiktok/user/followings with a sec_user_id.

Endpoints

EndpointCreditsDescription
POST https://api.scavio.dev/api/v1/tiktok/profile1Get user profile by username or sec_user_id
POST https://api.scavio.dev/api/v1/tiktok/user/posts1List a user's videos (paginated, sortable)
POST https://api.scavio.dev/api/v1/tiktok/video1Get full details for a single video
POST https://api.scavio.dev/api/v1/tiktok/video/comments1List comments on a video
POST https://api.scavio.dev/api/v1/tiktok/video/comments/replies1List replies to a specific comment
POST https://api.scavio.dev/api/v1/tiktok/search/videos1Search videos by keyword
POST https://api.scavio.dev/api/v1/tiktok/search/users1Search users by keyword
POST https://api.scavio.dev/api/v1/tiktok/hashtag1Get hashtag details and stats
POST https://api.scavio.dev/api/v1/tiktok/hashtag/videos1List videos for a hashtag
POST https://api.scavio.dev/api/v1/tiktok/user/followers1List a user's followers
POST https://api.scavio.dev/api/v1/tiktok/user/followings1List accounts a user follows
Authorization: Bearer $SCAVIO_API_KEY

Profile Parameters

ParameterTypeDefaultDescription
usernamestring--TikTok handle (without @). One of username or sec_user_id required.
sec_user_idstring--Secure user ID. One of username or sec_user_id required.

User Posts Parameters

ParameterTypeDefaultDescription
sec_user_idstringrequiredSecure user ID from profile endpoint
cursorstring"0"Pagination cursor. Use data.max_cursor from previous response.
countnumber20Results per page (1-30)
sort_typestring"0""0" = latest, "1" = popular

Video Detail Parameters

ParameterTypeDefaultDescription
video_idstringrequiredTikTok video ID

Video Comments Parameters

ParameterTypeDefaultDescription
video_idstringrequiredVideo ID
cursorstring"0"Pagination cursor
countnumber20Results per page (1-50)

Comment Replies Parameters

ParameterTypeDefaultDescription
video_idstringrequiredVideo ID
comment_idstringrequiredComment ID (cid from comments endpoint)
cursorstring"0"Pagination cursor
countnumber20Results per page (1-50)

Search Videos Parameters

ParameterTypeDefaultDescription
keywordstringrequiredSearch query (1-500 chars)
cursorstring"0"Pagination offset
countnumber20Results per page (1-30)
sort_typestring"0""0" = relevance, "1" = most likes
publish_timestring"0""0" = all time, "1" = last day, "7" = week, "30" = month, "90" = 3 months, "180" = 6 months

Search Users Parameters

ParameterTypeDefaultDescription
keywordstringrequiredSearch query (1-500 chars)
cursorstring"0"Pagination offset
countnumber20Results per page (1-30)

Hashtag Parameters

ParameterTypeDefaultDescription
hashtag_namestring--Hashtag text (without #). One of hashtag_name or hashtag_id required.
hashtag_idstring--Numeric hashtag ID. One of hashtag_name or hashtag_id required.

Hashtag Videos Parameters

ParameterTypeDefaultDescription
hashtag_idstringrequiredFrom hashtag info endpoint
cursorstring"0"Pagination cursor
countnumber20Results per page (1-30)

Followers / Followings Parameters

ParameterTypeDefaultDescription
sec_user_idstringrequiredFrom profile endpoint
countnumber20Results per page (1-20)
page_tokenstring--From previous response data.next_page_token
min_timenumber--From previous response data.min_time

Pagination Reference

StyleEndpointsNext pageStop condition
Cursor stringuser/postscursor = data.max_cursordata.has_more === 0
Offset numbersearch/*, hashtag/videos, video/comments, video/comments/repliescursor = data.cursordata.has_more === 0
Token + timeuser/followers, user/followingspage_token + min_timedata.has_more === false

Examples

import requests

BASE = "https://api.scavio.dev"
# Your key from https://scavio.dev. Load it from your environment or secret
# store in real code - keep it out of source control.
API_KEY = "sk_your_key_here"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1. Look up a profile
profile = requests.post(f"{BASE}/api/v1/tiktok/profile", headers=HEADERS,
    json={"username": "tiktok"}).json()

sec_uid = profile["data"]["user"]["sec_uid"]
print(f"{profile['data']['user']['nickname']}: {profile['data']['user']['follower_count']} followers")

# 2. List their most popular videos
posts = requests.post(f"{BASE}/api/v1/tiktok/user/posts", headers=HEADERS,
    json={"sec_user_id": sec_uid, "sort_type": "1", "count": 5}).json()

for v in posts["data"]["aweme_list"]:
    print(f"{v['desc'][:60]}  -- {v['statistics']['play_count']} views")

# 3. Get details for a specific video
video = requests.post(f"{BASE}/api/v1/tiktok/video", headers=HEADERS,
    json={"video_id": "7350810998023949599"}).json()

detail = video["data"]["aweme_detail"]
print(f"Likes: {detail['statistics']['digg_count']}, Comments: {detail['statistics']['comment_count']}")

# 4. Read comments on that video
comments = requests.post(f"{BASE}/api/v1/tiktok/video/comments", headers=HEADERS,
    json={"video_id": "7350810998023949599", "count": 10}).json()

for c in comments["data"]["comments"]:
    print(f"@{c['user']['unique_id']}: {c['text']}")

# 5. Search for videos
results = requests.post(f"{BASE}/api/v1/tiktok/search/videos", headers=HEADERS,
    json={"keyword": "cooking recipe", "count": 10, "publish_time": "7"}).json()

# 6. Explore a hashtag
tag = requests.post(f"{BASE}/api/v1/tiktok/hashtag", headers=HEADERS,
    json={"hashtag_name": "fyp"}).json()

tag_id = tag["data"]["challengeInfo"]["challenge"]["id"]
print(f"#{tag['data']['challengeInfo']['challenge']['title']}: {tag['data']['challengeInfo']['stats']['viewCount']} views")

# 7. List hashtag videos
tag_vids = requests.post(f"{BASE}/api/v1/tiktok/hashtag/videos", headers=HEADERS,
    json={"hashtag_id": tag_id, "count": 10}).json()

Profile Response

{
  "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": 94066595,
      "following_count": 1,
      "aweme_count": 1511,
      "total_favorited": 458010199
    }
  },
  "response_time": 1428,
  "credits_used": 1,
  "credits_remaining": 6545
}

Video Detail Response

{
  "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": 6544
}

Hashtag Response

{
  "data": {
    "challengeInfo": {
      "challenge": {
        "id": "229207",
        "title": "fyp",
        "desc": "",
        "stats": {
          "videoCount": 0,
          "viewCount": 119178100000000
        }
      }
    }
  },
  "response_time": 969,
  "credits_used": 1,
  "credits_remaining": 6543
}

Guardrails

  • All TikTok calls cost 1 credit each. Inform the user before paginating through many pages.
  • Never fabricate usernames, video captions, follower counts, or comment text. Only return API data.
  • Most endpoints require a sec_user_id, not a username. Always resolve via the profile endpoint first.
  • All create_time fields are Unix timestamps in seconds. Multiply by 1000 for JavaScript Date.
  • Avatar and image fields return an object with a url_list array. Use .url_list[0] for the URL.
  • Do not silently omit any data. Surface all fields so the user can decide what to use.

Failure handling

  • 401 means the API key is invalid or missing. Prompt the user to check their SCAVIO_API_KEY.
  • 429 means rate limit exceeded. Wait before retrying. See https://scavio.dev/docs/rate-limits.
  • 502 / 503 mean upstream is temporarily unavailable. Wait a few seconds before retrying.
  • If search returns no results, suggest different keywords, a broader publish_time, or a different sort_type.
  • If SCAVIO_API_KEY is not set, prompt the user to export it before continuing.

LangChain

pip install langchain-scavio==4.0.2
from langchain_scavio import ScavioSearchTool
tool = ScavioSearchTool(engine="tiktok")

相关技能

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants4.3k 次安装296 星标

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai22 次安装8 星标

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván559 次安装18 星标

诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。

作者 Iván855 次安装69 星标

scavio-ai 的更多技能

浏览全部技能

Pull a Facebook page's profile, posts, reels and photos, one post with its comments, a single reel/video with downloadable URLs, a public group and its posts, an event, and hashtag posts. 11 endpoints, 1 credit each, structured JSON.

作者 scavio-ai3 次安装

Search the Meta Ad Library by keyword or Facebook Page id and walk full cursor pagination through every ad, with creative, run dates, platforms and political spend. 3 endpoints, 1 credit per page.

作者 scavio-ai3 次安装

Search live or SOLD eBay listings, read a listing in full, and look up a seller's profile card as structured JSON. 3 endpoints, 1 credit each. Sold-listing search is the price-research feature eBay itself hides.

作者 scavio-ai1 次安装