Douyin 抖音 Search Scraper
Pricing
from $4.46 / 1,000 search results
Douyin 抖音 Search Scraper
Search Douyin (抖音), also known as TikTok China, by keyword. Export unique posts with creator profiles, engagement stats, music and media URLs. No login, no signing algorithm to maintain. Filter by sort, publish time and duration. Transparent flat pricing: $0.0005/run + $0.00449/result.
Pricing
from $4.46 / 1,000 search results
Rating
5.0
(2)
Developer
BatScrape
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Douyin 抖音 Search Scraper: Keyword Search with Creator & Engagement Data 🔍
Search Douyin (抖音) — also known as TikTok China — by keyword and export unique posts as clean JSON: creator profile, engagement stats, music and media URLs included, with transparent flat per-result pricing. No Douyin login to work around, no signing algorithm to babysit. Perfect for trend research, competitor/brand tracking, hashtag monitoring, and content discovery on China's leading short-video platform.
按关键词搜索抖音(Douyin,海外也称 "TikTok China"),一键导出结构化 JSON 数据:包含文案、达人资料、互动数据以及音乐和媒体链接,价格透明、按结果计费。无需登录抖音账号,也无需自行维护签名算法。适合趋势研究、品牌与竞品监测、话题标签追踪,以及在这一中国领先短视频平台上的内容发现。
💰 Price: $0.0005 flat per run + $0.00449/result (no separate query fee) 🌏 Coverage: Douyin (抖音) / TikTok China keyword search — Chinese, English, hashtags, brand names & emoji all work 📊 Data: Post text/caption, creator profile, video & music URLs, engagement stats, hashtags 🎯 Filters: Sort (relevance / most-liked / latest), publish-time window, video duration 🛡️ Flat Per-Result Pricing
💰 价格:每次运行固定 $0.0005 + 每条结果 $0.00449(无单独查询费) 🌏 覆盖范围:抖音 / TikTok China 关键词搜索——支持中文、英文、话题标签、品牌名和表情符号 📊 数据字段:文案、达人资料、视频与音乐链接、互动数据、话题标签 🎯 筛选项:排序(综合/最多点赞/最新)、发布时间范围、视频时长 🛡️ 按结果计费,透明清晰
Quick Navigation
- 🧭 What Does This Actor Do?
- 🐉 Features and Functionality
- 💰 Pricing: Transparent Event-Based Costs
- 🎎 Who Needs This?
- 🍚 Input Parameters
- 💡 Input Strategy Guide
- 🔎 Example Requests
- 📦 Output
- 🧩 Custom Map Function
- ❔ FAQ
- 📞 Contact
Each section below includes an English description followed by a Simplified Chinese (简体中文) translation. / 以下每个章节均附有对应的简体中文说明。
🧭 What Does This Actor Do?
This actor searches Douyin (抖音) by keyword and pushes results to your dataset as structured JSON — no headless browser, no signing algorithm to maintain, no login wall to work around on your end. Give it one or more keywords and it queues exactly the searches needed, deduplicating across keywords and respecting your maxItems cap and pay-per-event budget as it goes.
🔍 Keyword Search — search as many keywords as you like in one run (Chinese, English, hashtags, brand names, emoji), each searched independently.
🎯 Sort & Filter — relevance / most-liked / latest sort, a publish-time window, and a video-duration filter, so you get exactly the slice of results you're after.
👤 Creator Data Included — every result carries the posting creator's profile (name, handle, follower count, verification, bio) at no extra charge — no separate profile lookup needed.
本爬虫按关键词搜索抖音,并将结果以结构化 JSON 形式写入数据集——无需无头浏览器,无需维护签名算法,也无需在你这一端处理登录验证。只需提供一个或多个关键词,爬虫会自动排队执行所需的搜索请求,在关键词之间去重,并根据你设置的 maxItems 上限和按次计费预算实时控制进度。
🔍 关键词搜索 —— 一次运行可搜索任意数量的关键词(中文、英文、话题标签、品牌名、表情符号均可),每个关键词独立搜索。
🎯 排序与筛选 —— 支持综合排序 / 最多点赞 / 最新排序,以及发布时间范围和视频时长筛选,精准获取你需要的那部分结果。
👤 附带达人资料 —— 每条结果都包含发布者的资料(昵称、账号、粉丝数、认证状态、简介),不产生额外费用,无需单独查询博主主页。
🐉 Features and Functionality
| Feature | Description | Benefit |
|---|---|---|
| 💰 Flat Per-Result Pricing | One price per unique post delivered, no separate query fee | Predictable cost — no surprise per-page or per-query charges |
| 🔍 Multi-Keyword Search | Search as many keywords as you like in one run | Broad coverage from a single actor run |
| 🧹 Cross-Keyword Dedup | A post surfaced by two different keywords is stored (and charged) once | Never pay twice for the same result |
| 🎯 Sort & Filter | Relevance, most-liked, or latest; publish-time window; duration | Narrow results down without any extra cost |
| 👤 Creator Data Included | Name, handle, followers, verification, bio on every result | No separate profile lookup needed |
| 🔧 Custom Map Function | JavaScript function to reshape or enrich output on the fly | Shape results to match your exact requirements |
| 💵 Budget-Aware | Every result is checked against the run's charge budget before it's stored | A run stops cleanly instead of overspending |
功能与特性(中文说明)
| 功能 | 说明 | 优势 |
|---|---|---|
| 💰 按结果固定计费 | 每条独立结果一个价格,无单独查询费 | 成本可预测——没有意外的分页或查询附加费 |
| 🔍 多关键词搜索 | 一次运行可搜索任意数量的关键词 | 一次运行即可覆盖更广的内容 |
| 🧹 跨关键词去重 | 被两个不同关键词命中的同一结果只存储(计费)一次 | 同一结果绝不会被重复扣费 |
| 🎯 排序与筛选 | 综合排序、最多点赞、最新;发布时间范围;视频时长 | 无需额外费用即可精确筛选结果 |
| 👤 附带达人资料 | 每条结果都包含发布者的昵称、账号、粉丝数、认证状态、简介 | 无需单独查询博主资料 |
| 🔧 自定义映射函数 | 用 JavaScript 函数即时调整或丰富输出内容 | 按你的需求自由改造输出结构 |
| 💵 预算感知 | 每条结果存储前都会检查运行预算 | 运行会平稳停止,不会超支 |
💰 Pricing: Transparent Event-Based Costs
Pay-per-event pricing — no subscription, no hidden fees. A flat run fee, and one charge per unique result actually delivered.
Pricing Structure
| Event | Price (USD) | Charged For |
|---|---|---|
| 🚀 Actor Start | $0.0005 | Once per run, regardless of input |
| 📊 Search Result | $0.00449 | Each unique Douyin post actually delivered |
Apify Console setup (pay-per-event)
When configuring this actor's pricing in the Apify Console's "Set up monetization" wizard, two events need to exist, exactly like this:
| Event name (exact) | Reserved? | Title | Description | Price |
|---|---|---|---|---|
apify-actor-start | ✅ yes | Actor Start | Charged once when the Actor starts running, regardless of input. | $0.0005 |
dataset-item | custom | Search Result | Charged for each unique Douyin post actually delivered. | $0.00449 |
The first is Apify's reserved event name — the Console pre-fills it (non-editable) and bills it automatically the moment the run starts. The second is an ordinary custom event you add yourself. Do not also define Apify's other reserved event, apify-default-dataset-item (the Console's default "Result" suggestion) — dataset-item is charged manually by this actor's own code, so defining both would double-charge every result.
These names/prices must stay in sync with src/services/subscription/events.js — that file is the source of truth this actor's own budget bookkeeping reads from.
How Pricing Works
Every run charges a flat $0.0005 Actor Start fee once, regardless of how many keywords or results you request, then $0.00449 per unique Douyin post actually stored in your dataset — nothing else. A search that returns nothing costs nothing beyond the flat run fee, and the first 2 pages of results per keyword are free of charge for paying users.
💵 Real-World Pricing Examples
| Use Case | Configuration | Total Cost | Breakdown |
|---|---|---|---|
| Quick sample | 1 keyword, 10 results | $0.0454 | $0.0005 + (10 × $0.00449) |
| Single keyword, default settings | 1 keyword, up to 100 results | $0.4495 | $0.0005 + (100 × $0.00449) |
| Multi-keyword sweep | 5 keywords, up to 100 results each (~500 unique) | $2.2455 | $0.0005 + (500 × $0.00449) |
| Large single-keyword pull | 1 keyword, up to 1,000 results | $4.4905 | $0.0005 + (1,000 × $0.00449) |
Result counts vary keyword to keyword — a narrow or low-volume keyword simply returns fewer unique results (and costs less) than a popular one; the rows above are illustrative at the volumes shown.
价格:透明的按事件计费(中文说明)
按次计费——无订阅、无隐藏费用。固定的运行启动费,加上每条实际交付结果收取一次费用。
计费结构
| 事件 | 价格(美元) | 计费对象 |
|---|---|---|
| 🚀 运行启动费 | $0.0005 | 每次运行收取一次,与输入内容无关 |
| 📊 搜索结果 | $0.00449 | 每条实际交付的抖音独立结果 |
Apify Console 设置(按事件计费)
在 Apify Console 的 "Set up monetization" 向导中配置计费时,需要设置以下两个 event,须完全一致:
| Event 名称(精确) | 是否保留字段 | 标题 | 说明 | 价格 |
|---|---|---|---|---|
apify-actor-start | ✅ 是 | Actor Start | 每次运行开始时收取一次,与输入内容无关。 | $0.0005 |
dataset-item | 自定义 | Search Result | 每条实际交付的抖音独立结果收取一次。 | $0.00449 |
第一个是 Apify 的保留 event 名称——Console 会自动填充(不可编辑),并在运行开始时自动扣费。第二个是需要你自己添加的普通自定义 event。请勿同时定义 Apify 的另一个保留 event apify-default-dataset-item(Console 默认建议的 "Result" 项)——dataset-item 已由本爬虫代码手动计费,两者同时存在会导致每条结果被重复扣费两次。
这些名称和价格必须与 src/services/subscription/events.js 保持一致——该文件是本爬虫预算逻辑读取的唯一真实数据源。
计费方式
每次运行固定收取一次 $0.0005 的启动费,无论你请求多少关键词或结果;之后每条实际存入数据集的抖音结果收取 $0.00449,再无其他费用。搜索无结果时,除固定启动费外不产生任何费用;付费用户每个关键词的前 2 页结果免费。
💵 真实计费示例
| 使用场景 | 配置 | 总费用 | 费用构成 |
|---|---|---|---|
| 快速试用 | 1 个关键词,10 条结果 | $0.0454 | $0.0005 + (10 × $0.00449) |
| 单关键词默认设置 | 1 个关键词,最多 100 条结果 | $0.4495 | $0.0005 + (100 × $0.00449) |
| 多关键词批量搜索 | 5 个关键词,每个最多 100 条(约 500 条去重结果) | $2.2455 | $0.0005 + (500 × $0.00449) |
| 单关键词大批量抓取 | 1 个关键词,最多 1,000 条结果 | $4.4905 | $0.0005 + (1,000 × $0.00449) |
不同关键词返回的结果数量会有差异——冷门或小众关键词返回的独立结果更少,费用也更低;上表按给定数量仅作示例说明。
🎎 Who Needs This?
- 📈 Trend & content researchers — see what's trending under a hashtag or topic on Douyin.
- 🏷️ Brand & competitor monitoring — track how competitor keywords or brand names perform across creators.
- 🎵 Music & creator discovery — surface the creators and sounds driving a topic.
- 📊 Data analysts — build structured datasets of Douyin search results for modeling.
- 🤖 AI/ML pipelines — feed real Douyin post and creator data into downstream models.
适合谁使用(中文说明)
- 📈 趋势与内容研究者 —— 追踪抖音上某个话题或标签的热度趋势。
- 🏷️ 品牌与竞品监测 —— 追踪竞品关键词或品牌名在各达人内容中的表现。
- 🎵 音乐与达人发现 —— 发掘推动某个话题走红的达人和背景音乐。
- 📊 数据分析师 —— 为建模构建结构化的抖音搜索数据集。
- 🤖 AI / 机器学习管道 —— 将真实的抖音内容与达人数据输入下游模型。
🍚 Input Parameters
| Field | Description | Default |
|---|---|---|
keywords | Search keywords. Chinese, English, hashtags, brand names and emoji all work. Required (at least one). | — |
maxResultsPerQuery | Results per keyword. 0 = all available (capped at 2,000). | 100 |
sort | general (relevance) / most_liked / latest. | general |
publishTime | unlimited / one_day / one_week / half_year. | unlimited |
duration | unlimited / under_1m / one_to_five / over_5m. | unlimited |
maxItems | Overall cap across all keywords combined. 0/empty = unlimited (each keyword is still separately capped by maxResultsPerQuery). | 1000 |
customMapFunction | (object) => object applied to every item. Must not be used for filtering. | (none) |
See INPUT_SCHEMA.json for the full schema.
输入参数(中文说明)
| 字段 | 说明 | 默认值 |
|---|---|---|
keywords | 搜索关键词,支持中文、英文、话题标签、品牌名和表情符号。必填(至少一个)。 | — |
maxResultsPerQuery | 每个关键词抓取的结果数量。0 表示抓取全部可用结果(上限 2,000)。 | 100 |
sort | general(综合排序)/ most_liked(最多点赞)/ latest(最新)。 | general |
publishTime | unlimited(不限)/ one_day(一天内)/ one_week(一周内)/ half_year(半年内)。 | unlimited |
duration | unlimited(不限)/ under_1m(1分钟以内)/ one_to_five(1-5分钟)/ over_5m(5分钟以上)。 | unlimited |
maxItems | 所有关键词合计的结果上限。0 或留空表示不限(每个关键词仍单独受 maxResultsPerQuery 限制)。 | 1000 |
customMapFunction | 应用于每条结果的 (object) => object 函数,不得用于过滤数据。 | (无) |
💡 Input Strategy Guide
Just want a quick sample? Set maxResultsPerQuery to 10–20 and run a single keyword — a cheap, fast check that the actor and your keyword return what you expect.
Tracking a hashtag or trend? Use sort: latest with a publishTime window (e.g. one_week) to see what's newly posted, not just what's historically popular.
Researching several brands or competitors in one run? List every keyword up front. Cross-keyword dedup means an overlapping result is never charged twice, so batching keywords into one run costs the same as running them separately, minus the duplicates.
Need only recent long-form content? Combine duration: over_5m with sort: most_liked.
输入策略指南(中文说明)
只想快速试一下? 将 maxResultsPerQuery 设为 10–20,只跑一个关键词——低成本、快速验证爬虫和关键词是否符合预期。
追踪话题或热点趋势? 搭配 sort: latest 与 publishTime 时间窗口(如 one_week),只看最新发布的内容,而非历史热门内容。
一次研究多个品牌或竞品? 把所有关键词一次性列出。跨关键词去重意味着重复结果不会被重复扣费,所以把关键词合并到一次运行中,费用只会比分开运行更低(去掉了重复部分)。
只想要近期的长视频内容? 将 duration: over_5m 与 sort: most_liked 搭配使用。
🔎 Example Requests
Search one keyword for food content, most-liked first:
{"keywords": ["美食"],"sort": "most_liked","maxResultsPerQuery": 100}
Track a hashtag's newest posts from the last week:
{"keywords": ["#苹果"],"sort": "latest","publishTime": "one_week"}
Sweep several brand keywords in one run (cross-keyword dedup applies automatically):
{"keywords": ["iphone", "huawei", "xiaomi"],"sort": "latest","maxResultsPerQuery": 200}
请求示例(中文说明)
搜索一个美食相关关键词,按点赞数最多排序:
{"keywords": ["美食"],"sort": "most_liked","maxResultsPerQuery": 100}
追踪某话题标签最近一周的最新发布内容:
{"keywords": ["#苹果"],"sort": "latest","publishTime": "one_week"}
一次运行批量搜索多个品牌关键词(自动进行跨关键词去重):
{"keywords": ["iphone", "huawei", "xiaomi"],"sort": "latest","maxResultsPerQuery": 200}
📦 Output
One dataset item per unique Douyin post. A keyword that returns no matches simply contributes no items — it isn't stored as a placeholder row.
Captured from a real run (keyword: "美食", trimmed for brevity — signed CDN URLs shortened with …):
{"type": "video","id": "7633646113853104116","groupId": "7633646113853104116","url": "https://www.douyin.com/video/7633646113853104116","shareUrl": "https://www.iesdouyin.com/share/video/7633646113853104116/?…","text": "别犹豫 想吃谁做的就@谁 #家常菜 #如果幸福是一顿漂亮饭","caption": "别犹豫 想吃谁做的就@谁 #家常菜","createTime": 1777346739,"createDate": "2026-04-28","region": "CN","authorMeta": {"id": "60065294161","secUid": "MS4wLjABAAAAanuWoPEMHem_eaWR8RQFyLQ8_QiouZlPlb7KAe9GS24","name": "泡芙味的女孩子O","username": "cq3211y","signature": "谢谢你这么好看还关注我💕\n日常喜欢吃喝玩乐爱做饭\n总之拥有快乐一生🥳","verified": true,"avatarThumb": "https://p3.douyinpic.com/aweme/100x100/…","followersCount": 1487394,"followingCount": 0,"awemeCount": 0},"videoMeta": {"duration": 8867,"width": 2160,"height": 2880,"format": "mp4","hasWatermark": true,"cover": "https://p3-sign.douyinpic.com/…","originCover": "https://p3-sign.douyinpic.com/…","dynamicCover": "https://p3-sign.douyinpic.com/…","playUrl": "https://v5-dy-ov-experiment.zjcdn.com/…","downloadUrl": "https://…"},"musicMeta": { "title": "…", "playUrl": "https://…", "isOriginal": true },"statistics": {"diggCount": 12345,"commentCount": 678,"shareCount": 90,"collectCount": 1234,"playCount": 0},"hashtags": [{ "id": "…", "name": "家常菜" }],"searchKeyword": "美食","inputKeyword": "美食"}
text vs caption: Douyin's own desc field (text) carries the full caption with trailing hashtags inline, while caption is a separate, shorter field with those trimmed off — both are genuine Douyin fields, not derived. See tests/schemas/post.schema.js for the validated shape.
输出结果(中文说明)
数据集中每条抖音独立结果对应一条记录。某个关键词若没有匹配结果,则不会产生任何记录——不会写入占位行。
text 与 caption 的区别:抖音原始的 desc 字段(对应 text)包含完整文案及末尾的话题标签,而 caption 是另一个独立的、去掉了话题标签的精简字段——两者都是抖音原生字段,并非本爬虫推导生成。
🧩 Custom Map Function
A synchronous (object) => object function applied to every dataset item. Use it only to add or reshape fields:
(object) => {return { ...object, isViral: (object.statistics?.diggCount || 0) > 10000 };};
Rules enforced by the actor (a violation is logged and the function is ignored — the run never crashes):
- No filtering. Returning
null,{}or a non-object falls back to the original item. - No date-based logic. Sources containing
new Date,Date.nowor1970are rejected. - Synchronous only.
async/ generator functions and returned Promises are rejected.
自定义映射函数(中文说明)
这是一个作用于每条数据集记录的同步函数 (object) => object。仅可用于新增或调整字段:
爬虫强制执行以下规则(违反规则会被记录日志并忽略该函数——运行不会因此崩溃):
- 禁止过滤数据。 返回
null、{}或非对象值时,将回退为原始记录。 - 禁止基于日期的逻辑。 源码中包含
new Date、Date.now或1970将被拒绝。 - 仅支持同步函数。
async/ 生成器函数以及返回 Promise 均会被拒绝。
🔧 Troubleshooting
❓ Getting Few or No Results?
- ✅ Check
maxItems/maxResultsPerQuery— the run stops once either is reached - ✅ Check the charge budget — a run that can't afford another result stops cleanly rather than erroring
- ✅ Try a broader or more common keyword — a very narrow or rare keyword may simply have little content on Douyin
- ✅ Confirm
keywordsisn't empty — at least one keyword is required
💰 Unexpected Costs?
Remember: every run charges a flat $0.0005 Actor Start fee once, no matter what you ask for. Beyond that, cost is purely $0.00449 × unique results delivered — there's no separate per-keyword or per-page fee to budget for.
💡 Want to Minimize Costs?
- ✅ Set
maxResultsPerQueryto only what you actually need per keyword - ✅ Set
maxItemsto a hard cap matching your budget - ✅ Batch related keywords into one run — cross-keyword dedup means overlaps are never charged twice
故障排查(中文说明)
❓ 结果很少或没有结果?
- ✅ 检查
maxItems/maxResultsPerQuery—— 达到上限后运行会停止 - ✅ 检查计费预算 —— 预算不足以支付下一条结果时,运行会平稳停止而不会报错
- ✅ 尝试更宽泛或更常见的关键词 —— 非常冷门或小众的关键词在抖音上本身内容就可能很少
- ✅ 确认
keywords不为空 —— 至少需要填写一个关键词
💰 费用超出预期?
请注意:每次运行只收取一次固定的 $0.0005 启动费,无论你请求什么内容。除此之外,费用完全等于 $0.00449 × 实际交付的独立结果数——没有单独的关键词费用或分页费用需要考虑。
💡 想要降低费用?
- ✅ 将
maxResultsPerQuery设置为每个关键词实际需要的数量 - ✅ 设置
maxItems作为与预算匹配的硬性上限 - ✅ 把相关关键词合并到一次运行中 —— 跨关键词去重意味着重复结果不会被重复扣费
❔ FAQ
Do I need a Douyin account or login to use this actor? No — searches run through a backend service; no login or cookies are required on your end.
Can I search using hashtags?
Yes — any string Douyin's own search box accepts works, including hashtags like #美食.
Is creator (blogger) data included in the price? Yes, at no extra charge — every result includes the poster's profile.
Does this actor download videos? No — it returns each post's metadata and media URLs (including a play URL), but does not download or store video files itself.
常见问题(中文说明)
使用本爬虫需要抖音账号或登录吗? 不需要——搜索通过后端服务代理执行,你这端无需登录或提供 Cookie。
可以用话题标签(Hashtag)搜索吗?
可以——任何抖音搜索框接受的字符串都适用,包括 #美食 这样的话题标签。
达人(博主)资料是否包含在价格内? 是的,无需额外付费——每条结果都包含发布者的资料。
这个爬虫能下载视频吗? 不能——爬虫返回该内容的元数据及媒体链接(含播放地址),但不会自行下载或存储视频文件。
📞 Contact
Reach out to the maintainers directly for support.
- ✉️ Email: batscrape@gmail.com
- 💬 Discord: discord.com/invite/ZRANXwhWU
- 🐦 X (Twitter): x.com/batscrape
- 🛒 Apify: apify.com/batscrape
联系方式(中文说明)
如需支持,请直接联系维护团队。
- ✉️ 邮箱:batscrape@gmail.com
- 💬 Discord:discord.com/invite/ZRANXwhWU
- 🐦 X(推特):x.com/batscrape
- 🛒 Apify:apify.com/batscrape