TikTok, Douyin & Bilibili Scraper โ€” Videos, Profiles, Comments avatar

TikTok, Douyin & Bilibili Scraper โ€” Videos, Profiles, Comments

Pricing

from $8.00 / 1,000 video scrapeds

Go to Apify Store
TikTok, Douyin & Bilibili Scraper โ€” Videos, Profiles, Comments

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

Pika Choo

Maintained by Community

Actor stats

2

Bookmarked

93

Total users

35

Monthly active users

a month ago

Last modified

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.com URLs 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 error row, never a failed run

๐Ÿ“ฅ Input

๐Ÿ”ด Required

FieldTypeDescription
mode ๐ŸŽฌstringWhat to scrape. See the mode table below.

One of url or urls is also required (except for trending mode).

๐Ÿ“‹ Main fields

FieldTypeDefaultDescription
platform ๐ŸŒselectautoauto, 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 ๐Ÿ“Šinteger100Max items per input URL (paginated modes). 1โ€“5000.

๐ŸŽ›๏ธ Options

FieldTypeDefaultDescription
downloadVideos โฌ‡๏ธbooleantrueInclude 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 ๐Ÿ”“booleanfalseOverride the Douyin auto-disable above. Use only if you've confirmed your IP/cookie can pull Douyin no-watermark URLs.
includeComments ๐Ÿ’ฌbooleanfalseAlso fetch a batch of comments alongside video_detail
cookie ๐Ÿชstring (secret)โ€”Browser cookie for private / gated content
proxyConfiguration ๐Ÿ›ก๏ธobjectRESIDENTIALApify proxy settings โ€” residential strongly recommended

๐ŸŽฌ Modes ร— Platforms

ModeTikTokDouyinBilibiliInput 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:

FieldDescription
platformtiktok, douyin, or bilibili
item_typevideo, user, comment, live, trending, or error
item_idNative platform ID
urlCanonical URL back to the source
title, descriptionCaption / title text
author_id, author_name, author_usernameCreator info
duration_sec, cover_url, video_url_nowmVideo asset fields
music_title, music_authorBackground audio
hashtagsArray extracted from caption
created_atISO publish timestamp
play_count, like_count, comment_count, share_count, collect_countEngagement stats
follower_count, following_count, video_count, bio, avatar_url, verifiedProfile fields
comment_id, reply_to_id, comment_textComment fields
live_status, live_title, viewer_countLive fields
rawFull source API response for advanced users
scraped_atISO 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
}
{
"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:

EventPriceCovers
๐ŸŽฌ Video scraped$0.008Any video row (video_detail, user_posts, user_likes, live_info, trending)
๐Ÿ’ฌ Comment scraped$0.002Each comment
๐Ÿ‘ค Profile scraped$0.005Each 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:

AreaBehaviorWhat to do
๐ŸŽถ Douyin no-watermark MP4 URLsDouyin CDN currently rate-limits these to 403Auto-disabled by default. Metadata still returned. Pass forceDownload: true to attempt anyway.
๐Ÿ“… Douyin user_posts freshnessDouyin's public feed lags by ~6 days for some accountsUse Bilibili or TikTok for time-sensitive monitoring.
๐Ÿ“บ Bilibili download URLsBilibili rotates download tokens; some downloads may failMetadata + URL still returned; download via your own client.
๐ŸŽต Newer Douyin URL formatsSome short-form Douyin URL shapes are not yet parsedUse the canonical douyin.com/video/<id> form.
๐Ÿ‘ค TikTok user_profileSome regions return a soft block for profile lookupsTry 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.


  • 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. ๐Ÿš€