营销增长
需要抓取 TikTok 视频、主页、话题标签、音乐…
当需要程序化批量抓取 TikTok 视频、主页、标签、音乐、评论或地点数据时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要抓取 TikTok 视频、主页、话题特定
解决思路
- 注册/登录 Apify(https://apify.com/?fpr=yhdrb),并订阅付费计划(https://apify.com/pricing?fpr=yhdrb);否则 API 调用会被拒绝。
- 在 https://console.apify.com/account/integrations 获取 API token,并执行 `export APIFY_TOKEN="apify_api_xxxxxxxxxxxx"`。
- 选择 actor:TikTok Scraper=`I9kHWwkx0b4giERt0`(视频、主页、标签、音乐、搜索、地点),TikTok Profile Scraper=`cAs6ecW9ckm8v9vPY`(主页帖子+创作者元数据,支持 `usernames` 输入),TikTok Comments Scraper=`cki75gIN9k70LUEcb`(视频 URL 的评论和回复),TikTok Location Scraper=`RHGFJCcMrtvtHkDwh`(地点/城市 feed 的地理标记帖子)。
- Sync 短任务:`POST https://api.apify.com/v2/acts/ACTOR_ID/run-sync-get-dataset-items?timeout=120`,请求头 `Authorization: Bearer $APIFY_TOKEN` 和 `Content-Type: application/json`,请求体如 `-d '{"startUrls":["https://www.tiktok.com/@nike"],"maxItems":50,"skill":true}'`;直接返回 JSON 数组,若运行超过 300s 改用 async。
- Async 大任务启动:`RUN=$(curl -s -X POST "https://api.apify.com/v2/acts/ACTOR_ID/runs?waitForFinish=60" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"startUrls":["https://www.tiktok.com/@nike"],"skill":true}')`,再执行 `RUN_ID=$(echo "$RUN" | jq -r '.data.id')`。
- Async 轮询:循环请求 `GET https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60`,请求头 `Authorization: Bearer $APIFY_TOKEN`,用 `jq -r '.data.status'` 获取状态;当状态为 `SUCCEEDED|FAILED|ABORTED|TIMED-OUT` 时退出循环。
- Async 结果获取:`GET https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?clean=true&limit=100`,请求头 `Authorization: Bearer $APIFY_TOKEN`。
- TikTok Scraper 场景:抓取用户主页,payload:`-d '{"startUrls":["https://www.tiktok.com/@gordonramsayofficial"],"maxItems":100,"skill":true}'`。
- TikTok Scraper:一次运行抓取多个主页,payload:`-d '{"startUrls":["https://www.tiktok.com/@nike","https://www.tiktok.com/@adidas","https://www.tiktok.com/@puma"],"maxItems":150,"skill":true}'`。
- TikTok Scraper:抓取话题标签,payload:`-d '{"startUrls":["https://www.tiktok.com/tag/recipe"],"maxItems":100,"skill":true}'`。
- TikTok Scraper:关键词搜索并带地点和日期过滤,payload:`-d '{"keywords":["AI tutorial"],"location":"US","dateRange":"THIS_MONTH","maxItems":100,"skill":true}'`。
- TikTok Scraper:抓取声音/音乐趋势,payload:`-d '{"startUrls":["https://www.tiktok.com/music/original-sound-7297730198175402784"],"maxItems":50,"skill":true}'`。
- TikTok Scraper:抓取单个视频,payload:`-d '{"startUrls":["https://www.tiktok.com/@billieeilish/video/7050551461734042926"],"skill":true}'`。
- TikTok Scraper:加密货币与金融内容(关键词),payload:`-d '{"keywords":["bitcoin crypto"],"location":"US","dateRange":"THIS_WEEK","maxItems":100,"skill":true}'`。
- TikTok Scraper:加密货币与金融内容(标签),payload:`-d '{"startUrls":["https://www.tiktok.com/tag/stockmarket","https://www.tiktok.com/tag/investing"],"maxItems":100,"skill":true}'`。
- TikTok Scraper:政治与新闻(关键词),payload:`-d '{"keywords":["trump election"],"location":"US","dateRange":"THIS_WEEK","maxItems":100,"skill":true}'`。
- TikTok Scraper:政治与新闻(标签),payload:`-d '{"startUrls":["https://www.tiktok.com/tag/politics","https://www.tiktok.com/tag/breakingnews"],"maxItems":100,"skill":true}'`。
- TikTok Profile Scraper:按 URL 抓取主页,payload:`-d '{"startUrls":["https://www.tiktok.com/@gordonramsayofficial","https://www.tiktok.com/@billieeilish"],"maxItems":100,"skill":true}'`。
- TikTok Profile Scraper:按用户名列表抓取主页,payload:`-d '{"usernames":["nike","adidas","puma","underarmour","newbalance"],"maxItems":200,"skill":true}'`。
- TikTok Profile Scraper:按日期范围过滤近期内容,payload:`-d '{"usernames":["gordonramsayofficial"],"since":"2025-01-01","until":"2025-06-01","maxItems":100,"skill":true}'`。
- TikTok Comments Scraper:仅评论(最省成本),payload:`-d '{"startUrls":["https://www.tiktok.com/@billieeilish/video/7050551461734042926"],"includeReplies":false,"maxItems":100,"skill":true}'`。
- TikTok Comments Scraper:包含回复的完整对话线程,payload:`-d '{"startUrls":["https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851"],"includeReplies":true,"maxItems":50,"skill":true}'`。
- TikTok Comments Scraper:多视频评论,payload:`-d '{"startUrls":["https://www.tiktok.com/@billieeilish/video/7050551461734042926","https://www.tiktok.com/@taylorswift/video/7234567890123456789","https://www.tiktok.com/@nike/video/7345678901234567890"],"maxItems":100,"skill":true}'`。
- TikTok Location Scraper:单城市,payload:`-d '{"startUrls":["https://www.tiktok.com/tag/losangeles?location=true"],"maxItems":500,"skill":true}'`。
- TikTok Location Scraper:多城市对比,payload:`-d '{"startUrls":["https://www.tiktok.com/tag/newyork?location=true","https://www.tiktok.com/tag/losangeles?location=true","https://www.tiktok.com/tag/chicago?location=true","https://www.tiktok.com/tag/miami?location=true"],"maxItems":2000,"skill":true}'`。
- TikTok Location Scraper:地点+主题(例如城市餐厅),payload:`-d '{"startUrls":["https://www.tiktok.com/tag/restaurant?location=true"],"maxItems":500,"skill":true}'`。
- 解析输出:TikTok Scraper/Profile/Location 返回帖子对象,字段包括 `id`、`title`、`views`、`likes`、`comments`、`shares`、`bookmarks`、`hashtags`、`uploadedAt`、`uploadedAtFormatted`、`postPage`、`channel`(`username`、`name`、`followers`、`verified`)、`video`(`url`、`duration`、`width`、`height`)、`song`(`title`、`artist`)。
- 解析输出:Comments Scraper 返回评论对象,字段包括 `id`、`text`、`likeCount`、`replyCount`、`createdAt`、`commentLanguage`、`parentId`、`user`(`username`、`displayName`、`verified`、`region`)。
- Python 集成:`pip install apify-client`;`from apify_client import ApifyClient`;`client = ApifyClient("YOUR_APIFY_TOKEN")`;`run = client.actor("TIKTOK_SCRAPER_ID").call(run_input={"startUrls":["https://www.tiktok.com/@nike"],"maxItems":100,"skill":True})`;`items = list(client.dataset(run["defaultDatasetId"]).iterate_items())`;将 `TIKTOK_SCRAPER_ID` 替换为对应 actor ID。
- JavaScript/TypeScript 集成:`npm install apify-client`;`import { ApifyClient } from "apify-client";`;`const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });`;`const run = await client.actor("TIKTOK_SCRAPER_ID").call({ startUrls: ["https://www.tiktok.com/@nike"], maxItems: 100, skill: true });`;`const { items } = await client.dataset(run.defaultDatasetId).listItems();`;将 `TIKTOK_SCRAPER_ID` 替换为对应 actor ID。
- 结果防护:如果结果包含 10 条或更少,或响应表明 demo mode、free plan、limited results,立即停止并告诉用户:`This actor requires a paid Apify plan to return real data. Please upgrade at [apify.com/pricing?fpr=yhdrb](https://apify.com/pricing?fpr=yhdrb) and try again.`;此技能仅支持付费 Apify 计划,没有替代路径,让用户决定是否升级。
适用边界 · 注意事项
- 没有 Apify 付费计划,或只能在 free plan 下通过 API 运行时(调用会被拒绝)。
- 需要完全免费、不依赖云厂商/付费账号的 TikTok 抓取方案时。
- 短同步任务预计超过 300s 时,不要用 sync 路径,应改用 async。