TikTok, Douyin & Bilibili Scraper โ Videos, Profiles, Comments
Pricing
from $8.00 / 1,000 video scrapeds
TikTok, Douyin & Bilibili Scraper โ Videos, Profiles, Comments
Scrape videos, profiles, posts, comments, likes, live streams, and trending feeds from TikTok, Douyin, and Bilibili. Unified JSON schema, no-watermark MP4 URLs, concurrent processing, automatic retries. No API key required.
Pricing
from $8.00 / 1,000 video scrapeds
Rating
0.0
(0)
Developer
Pika Choo
Maintained by CommunityActor stats
2
Bookmarked
93
Total users
35
Monthly active users
a month ago
Last modified
Categories
Share
๐ฌ TikTok, Douyin & Bilibili Scraper
Scrape videos, profiles, comments, likes, live streams, and trending feeds across TikTok, Douyin, and Bilibili โ all in one actor. Unified JSON schema, no API key required, direct MP4 downloads, from $0.002 per item.
๐ฏ Who needs this?
- ๐ฃ Social media managers tracking competitors and viral trends across Western + Chinese platforms
- ๐จ Content creators sourcing trending music, hashtags, and reference videos
- ๐ Market researchers monitoring brand mentions, sentiment, and virality
- ๐ E-commerce teams identifying influencers and top-performing product creators
- ๐ค AI / ML teams collecting training data for video, caption, or comment analysis
- ๐ข Agencies running influencer discovery and campaign measurement
โจ Features
- ๐ 3 platforms in one actor โ TikTok, Douyin, Bilibili
- ๐ฌ 7 scraping modes โ video detail, user posts, user profile, comments, likes, live info, trending
- ๐ช Auto platform detection โ paste any URL, the actor routes it to the right platform
- ๐ Bulk mode โ scrape many URLs in a single run, processed concurrently
- โฌ๏ธ No-watermark MP4 URLs โ direct video download links (TikTok / Douyin)
- ๐ฌ Full comment threads โ with replies and engagement counts
- ๐ด Live room data โ viewer count, title, status, host
- ๐ฅ Trending feeds โ Douyin hot search, Bilibili popular
- ๐ Automatic retries โ transient failures retried with backoff; persistent failures logged as error rows
- ๐ Unified output schema โ the same field names across all three platforms (raw response also included)
- ๐ก๏ธ Proxy-ready โ Apify residential proxy integration built-in
- ๐ TikTok short-link auto-resolve โ
vm.tiktok.com/vt.tiktok.comURLs are followed to their canonical video URL before scraping - ๐ Crash-proof โ every failure mode (bad input, anti-bot, unsupported combo, network timeout) becomes a structured
errorrow, never a failed run
๐ฅ Input
๐ด Required
| Field | Type | Description |
|---|---|---|
mode ๐ฌ | string | What to scrape. See the mode table below. |
One of url or urls is also required (except for trending mode).
๐ Main fields
| Field | Type | Default | Description |
|---|---|---|---|
platform ๐ | select | auto | auto, tiktok, douyin, or bilibili |
url ๐ | string | โ | Single URL โ video, user profile, or live room |
urls ๐ | array | โ | Bulk list of URLs. Combined with url if both given. |
maxItems ๐ | integer | 100 | Max items per input URL (paginated modes). 1โ5000. |
๐๏ธ Options
| Field | Type | Default | Description |
|---|---|---|---|
downloadVideos โฌ๏ธ | boolean | true | Include no-watermark MP4 URLs in output. Auto-disabled for Douyin (Douyin's CDN currently rate-limits these to 403); pass forceDownload: true to override. TikTok and Bilibili are unaffected. |
forceDownload ๐ | boolean | false | Override the Douyin auto-disable above. Use only if you've confirmed your IP/cookie can pull Douyin no-watermark URLs. |
includeComments ๐ฌ | boolean | false | Also fetch a batch of comments alongside video_detail |
cookie ๐ช | string (secret) | โ | Browser cookie for private / gated content |
proxyConfiguration ๐ก๏ธ | object | RESIDENTIAL | Apify proxy settings โ residential strongly recommended |
๐ฌ Modes ร Platforms
| Mode | TikTok | Douyin | Bilibili | Input expected |
|---|---|---|---|---|
video_detail | โ | โ | โ | Video URL |
user_posts | โ | โ | โ | User profile URL |
user_profile | โ | โ | โ | User profile URL |
video_comments | โ | โ | โ | Video URL |
user_likes | โ | โ | โ | User profile URL |
live_info | โ | โ | โ | Live room URL |
trending | โ | โ | โ | platform only (no URL) |
Unsupported combinations return a clear error record.
๐ค Output
Unified schema across all platforms:
| Field | Description |
|---|---|
platform | tiktok, douyin, or bilibili |
item_type | video, user, comment, live, trending, or error |
item_id | Native platform ID |
url | Canonical URL back to the source |
title, description | Caption / title text |
author_id, author_name, author_username | Creator info |
duration_sec, cover_url, video_url_nowm | Video asset fields |
music_title, music_author | Background audio |
hashtags | Array extracted from caption |
created_at | ISO publish timestamp |
play_count, like_count, comment_count, share_count, collect_count | Engagement stats |
follower_count, following_count, video_count, bio, avatar_url, verified | Profile fields |
comment_id, reply_to_id, comment_text | Comment fields |
live_status, live_title, viewer_count | Live fields |
raw | Full source API response for advanced users |
scraped_at | ISO timestamp when scraped |
๐งช Examples
Single TikTok video with download URL
{"mode": "video_detail","url": "https://www.tiktok.com/@charlidamelio/video/7337889649290054955","downloadVideos": true}
Bulk โ 3 creators' latest 50 posts each (Douyin)
{"mode": "user_posts","urls": ["https://www.douyin.com/user/MS4wLjABAAAA...","https://www.douyin.com/user/MS4wLjABAAAB...","https://www.douyin.com/user/MS4wLjABAAAC..."],"maxItems": 50}
Top 200 comments on a Bilibili video
{"mode": "video_comments","url": "https://www.bilibili.com/video/BV1GJ411x7h7","maxItems": 200}
Douyin trending feed
{"mode": "trending","platform": "douyin","maxItems": 50}
Bilibili live room
{"mode": "live_info","url": "https://live.bilibili.com/21452505"}
๐ต Pricing
Simple pay-per-event โ you only pay for items successfully delivered:
| Event | Price | Covers |
|---|---|---|
| ๐ฌ Video scraped | $0.008 | Any video row (video_detail, user_posts, user_likes, live_info, trending) |
| ๐ฌ Comment scraped | $0.002 | Each comment |
| ๐ค Profile scraped | $0.005 | Each user profile |
Failed URLs return an error row and are not billed.
โ ๏ธ Platform Quirks
The target platforms (TikTok, Douyin, Bilibili) frequently rotate their anti-bot defenses. The actor handles every failure gracefully โ you get a clean error row instead of a failed run โ but data may be partial in these specific cases:
| Area | Behavior | What to do |
|---|---|---|
| ๐ถ Douyin no-watermark MP4 URLs | Douyin CDN currently rate-limits these to 403 | Auto-disabled by default. Metadata still returned. Pass forceDownload: true to attempt anyway. |
| ๐ Douyin user_posts freshness | Douyin's public feed lags by ~6 days for some accounts | Use Bilibili or TikTok for time-sensitive monitoring. |
| ๐บ Bilibili download URLs | Bilibili rotates download tokens; some downloads may fail | Metadata + URL still returned; download via your own client. |
| ๐ต Newer Douyin URL formats | Some short-form Douyin URL shapes are not yet parsed | Use the canonical douyin.com/video/<id> form. |
| ๐ค TikTok user_profile | Some regions return a soft block for profile lookups | Try a residential proxy in a different country group. |
We track these continuously and ship fixes as soon as they're available.
โ FAQ
Q: Do I need a TikTok / Douyin / Bilibili account? No. The actor scrapes public data using the built-in Apify proxy. No login required.
Q: Do no-watermark MP4 URLs expire? Yes, TikTok and Douyin CDN URLs expire in a few hours. Download and store the file promptly.
Q: Can I scrape private accounts?
No โ only public content is supported. For some gated endpoints (private collections, saved videos, TikTok comments), you may pass your browser cookie via the cookie field.
Q: TikTok comments mode returns 0 results?
TikTok's comment API requires a logged-in session. Paste a fresh TikTok browser cookie into the cookie input field. Videos, profiles, and posts work without a cookie; comments need one.
Q: Will one URL appear in my output multiple times? No โ each URL produces a single row (or a single error row).
Q: What happens if a URL is deleted or region-blocked?
You'll get an error row with item_type: "error" and a human-readable error_message. You are not charged for error rows.
Q: Can I run this with my own proxy instead of Apify proxy?
Yes โ set custom proxy URLs in proxyConfiguration.proxyUrls.
Q: Does the actor handle bulk scraping efficiently? Yes โ URLs are processed concurrently. 100 URLs typically finish in 2โ3 minutes.
Q: What's the maximum URLs per run? There's no hard limit, but we recommend โค 500 URLs per run for optimal reliability. Split larger jobs into multiple runs for parallelism.
๐ Troubleshooting
No results for a TikTok URL The video may be deleted, private, or region-blocked. Check the URL in a browser first. Error rows include a status message explaining why.
"Spending limit reached"
You set ACTOR_MAX_TOTAL_CHARGE_USD and the run hit the cap mid-batch. Remaining URLs are skipped and marked as error rows. Increase the cap or split the batch.
Empty dataset on first run
Make sure mode is set and that url/urls match the mode's expected input (e.g. video URL for video_detail, profile URL for user_posts).
Bilibili returns 404
The BV-id may be invalid or deleted. Short links like b23.tv/xxx are auto-resolved.
๐ก๏ธ Legal
- Scrapes public data only.
- You are responsible for compliance with each platform's terms of service and your local laws (GDPR, CCPA, etc.).
- Personal data handling: store / transmit in line with applicable regulations.
โญ Support
If something's not working, open the run โ view the log โ attach the run URL when reaching out. The actor auto-populates error rows with context, so paste those too.
Happy scraping. ๐