Douyin Live Chat Scraper - Record Live Stream Comments
Pricing
from $0.60 / 1,000 live messages
Douyin Live Chat Scraper - Record Live Stream Comments
Record the live chat of Douyin (抖音) live streams in real time: every comment with user name, sec_uid and time, plus optional likes, viewer joins, follows and viewer counts. Record several rooms at once for up to 4 hours. Paste live or profile links. No login.
Pricing
from $0.60 / 1,000 live messages
Rating
0.0
(0)
Developer
Harish Garg
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Douyin Live Chat Scraper — Record Live Stream Comments (抖音直播弹幕)
Record the live chat of Douyin (抖音) live streams in real time. Paste a live link or a creator's profile link, choose how long to record, and get every chat comment (直播弹幕) with the viewer's name, sec_uid and time. You can also save likes, viewers who join, new follows and the room's viewer count over time.
No Douyin account, no login, no cookies and no coding. Record several live rooms at the same time. Export the comments to JSON, CSV, Excel or HTML, connect them to your app through the Apify API, or ask an AI assistant such as Claude or ChatGPT to record a stream for you.
What does the Douyin Live Chat Scraper do?
- 💬 Real-time live chat recording. Every comment that viewers type in the live room (直播间评论), as it happens.
- 👤 Who said it. The viewer's name,
sec_uid(profile link) and public Douyin ID (抖音号) for each message. - ❤️ More than chat, if you want it. Like taps with the room's like total, viewers who join, new follows with the streamer's follower count, and viewer counts every few seconds.
- 📺 Several rooms at once. The Actor records all the rooms in your list at the same time.
- ⏱️ You choose the length. Record from 1 minute to 4 hours. The recording stops by itself when the stream ends.
- 🔗 Live links or profile links. A profile link finds the creator's current live room.
- 📥 Data while you wait. New messages go into the dataset every few seconds, so you can read them before the recording ends.
- ✅ Clear errors. A creator who is not live, a video link or a link from another site gets a row that tells you what is wrong.
What data can you extract from Douyin live chat?
Each row in the dataset is one live message. The room fields are on every row. The other fields depend on the message type.
| Field | Message types | Description |
|---|---|---|
sourceInput | all | The input value exactly as you gave it |
webRid | all | The room ID, the number in live.douyin.com/<webRid> |
roomId | all | Douyin's ID of this live session |
liveUrl | all | Link to the live room |
roomTitle | all | Title of the live room when the recording started |
streamerName | all | Display name of the streamer |
type | all | chat, like, member (viewer joined), follow or viewers |
messageId | all | Douyin's ID of the message |
time | all | When the message was sent (ISO 8601, UTC). For likes, joins and follows, this is the receive time. |
receivedAt | all | When the Actor received the message (ISO 8601, UTC) |
userName | chat, like, member, follow | Display name of the viewer |
userSecUid | chat, like, member, follow | The viewer's sec_uid. Open https://www.douyin.com/user/<sec_uid> to see the profile. |
userDouyinId | chat, like, member, follow | The viewer's public Douyin ID (抖音号) |
content | chat | Text of the chat comment |
likeCount | like | Likes in this tap burst |
totalLikes | like | Total likes of the live session so far |
followerCount | follow | The streamer's follower count after the follow |
viewersNow | viewers | Viewers online now |
totalViewers | viewers | All viewers of the live session so far |
totalViewersText | viewers | Douyin's rounded text for total viewers, for example 10万+ |
error | error rows only | Why the Actor did not record this input |
Input
| Field | Required | Default | Description |
|---|---|---|---|
liveUrls | Yes | — | A list of the live rooms to record. The rooms must be live when the run starts. |
messageTypes | No | ["chat"] | The message types to save: chat, like, member, follow, viewers. |
durationMinutes | No | 10 | How long to record each room, from 1 to 240 minutes. |
liveUrls accepts these formats:
- a live link:
https://live.douyin.com/905562644497 - the room ID at the end of a live link:
905562644497 - a creator profile link:
https://www.douyin.com/user/MS4wLjABAAAA... - a
v.douyin.comshare link from the Douyin app
If two inputs point to the same room, the Actor records the room one time.
Input example
{"liveUrls": ["https://live.douyin.com/905562644497","https://www.douyin.com/user/MS4wLjABAAAAKOi-BaFkm6OLjBN3m2NvsWKnwB-DFa5DakSGR18k8lhUzuep_6ZOYpp6L13Tft7H"],"messageTypes": ["chat", "follow", "viewers"],"durationMinutes": 30}
Output example
A chat comment:
{"sourceInput": "https://live.douyin.com/905562644497","webRid": "905562644497","roomId": "7695939745064045338","liveUrl": "https://live.douyin.com/905562644497","roomTitle": "很讨厌我吗","streamerName": "崽崽(世一带土)","type": "chat","messageId": "7695951565064237106","time": "2026-10-13T01:02:36+00:00","userName": "艾利","userSecUid": "MS4wLjABAAAAKOi-BaFkm6OLjBN3m2NvsWKnwB-DFa5DakSGR18k8lhUzuep_6ZOYpp6L13Tft7H","userDouyinId": "59885714471","content": "@灰水 小伙爱点评","receivedAt": "2026-10-13T01:02:40+00:00"}
The rows for the other message types have the same room fields. These examples show only the fields that change.
A like:
{"type": "like","time": "2026-10-13T01:03:12+00:00","userName": "艾利","userSecUid": "MS4wLjABAAAAKOi-BaFkm6OLjBN3m2NvsWKnwB-DFa5DakSGR18k8lhUzuep_6ZOYpp6L13Tft7H","userDouyinId": "59885714471","likeCount": 3,"totalLikes": 22419}
A follow:
{"type": "follow","time": "2026-10-13T01:04:05+00:00","userName": "艾利","userSecUid": "MS4wLjABAAAAKOi-BaFkm6OLjBN3m2NvsWKnwB-DFa5DakSGR18k8lhUzuep_6ZOYpp6L13Tft7H","userDouyinId": "59885714471","followerCount": 170192}
A viewer count:
{"type": "viewers","time": "2026-10-13T01:02:34+00:00","viewersNow": 1739,"totalViewers": 224077,"totalViewersText": "10万+"}
An input that the Actor could not record:
{"sourceInput": "855061693523","webRid": "855061693523","streamerName": "小林同学","error": "This room or creator is not live now, so there is no chat to record. Run it again during a live stream."}
How to use the Douyin Live Chat Scraper
You can run the Actor in four ways: in Apify Console, through the Apify API, with the Apify API clients for JavaScript and Python, or from an AI assistant through the Apify MCP server.
In Apify Console (no code)
- Open the Actor and click Try for free. Sign in to Apify, or make a free account.
- Paste one or more live links, room IDs or profile links into Live links, room IDs or profile links. The rooms must be live.
- Select the Message types. The default is chat comments only.
- Set the Recording time (minutes). The default is 10.
- Click Start.
- Open the Output tab to see the messages while the recording runs.
- When the run ends, click Export to download the data as JSON, CSV, Excel, XML or HTML.
To record a creator every day, save your input as a task and add a schedule to it.
For long recordings, make sure that the run timeout is longer than the recording time. You can set it in Run options → Timeout before you click Start.
With the Apify API (HTTP)
Get your API token from Settings → API & Integrations in Apify Console. Replace YOUR_API_TOKEN in the examples with your token.
Short recordings (up to 4 minutes). This request starts the run, waits for it to end and gives you the messages in one response. A request of this type can wait for a maximum of 300 seconds.
curl -X POST "https://api.apify.com/v2/acts/hgservices~douyin-live-chat-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"liveUrls": ["https://live.douyin.com/905562644497"],"messageTypes": ["chat"],"durationMinutes": 3}'
Longer recordings. Start the run. The response gives you the run ID (data.id) and the dataset ID (data.defaultDatasetId).
curl -X POST "https://api.apify.com/v2/acts/hgservices~douyin-live-chat-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"liveUrls": ["https://live.douyin.com/905562644497"],"messageTypes": ["chat", "viewers"],"durationMinutes": 60}'
Check the run status. The status field changes to SUCCEEDED when the recording is done.
$curl "https://api.apify.com/v2/actor-runs/RUN_ID?token=YOUR_API_TOKEN"
Get the messages. You can do this during the run and after it. Change format to csv, xlsx or html to get a different file type.
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&token=YOUR_API_TOKEN"
To get a message when the recording is done, add a webhook on the Actor's Integrations tab.
With the JavaScript / Node.js client
Install the client:
$npm install apify-client
Record 10 minutes of chat and print each comment:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('hgservices/douyin-live-chat-scraper').call({liveUrls: ['https://live.douyin.com/905562644497'],messageTypes: ['chat'],durationMinutes: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {if (item.error) {console.log(`${item.sourceInput}: ${item.error}`);} else {console.log(item.time, item.userName, item.content);}}
With the Python client
Install the client:
$pip install apify-client
Record 10 minutes of chat and print each comment:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("hgservices/douyin-live-chat-scraper").call(run_input={"liveUrls": ["https://live.douyin.com/905562644497"],"messageTypes": ["chat"],"durationMinutes": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("error"):print(f'{item["sourceInput"]}: {item["error"]}')else:print(item["time"], item.get("userName"), item.get("content"))
The call() method waits until the recording is done. The API tab on the Actor page has more examples.
With Claude, ChatGPT and other AI assistants (MCP)
The Actor is available through the Apify MCP server. Connect the server to your AI assistant one time. Then ask for a recording in plain language.
Use this server URL. It gives your assistant access to this Actor:
https://mcp.apify.com?tools=hgservices/douyin-live-chat-scraper
Claude (claude.ai and Claude Desktop)
- Open Settings → Connectors.
- Click Add custom connector.
- Paste the server URL above.
- Sign in to Apify when Claude asks you to.
Claude Code
Run this command, then type /mcp in Claude Code to sign in to Apify:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=hgservices/douyin-live-chat-scraper"
ChatGPT
- Open Settings → Apps & Connectors.
- Turn on Developer mode in the advanced settings.
- Create a connector with the server URL above.
- Sign in to Apify when ChatGPT asks you to.
Cursor, VS Code, Windsurf and other MCP clients
Add the server URL above as a remote MCP server in your client's settings. You can also use the configurator at mcp.apify.com to make the settings for your client.
Example prompts
- "Record 5 minutes of chat from https://live.douyin.com/905562644497 and tell me what the viewers talk about."
- "Record the chat and viewer counts of this creator for 10 minutes: https://www.douyin.com/user/MS4wLjABAAAA... Then show how the viewer count changed."
- "Record 5 minutes of chat from these two live rooms and list the 10 most active viewers in each room."
Integrations
Send the live chat data to the tools you already use with Apify integrations: Google Sheets, Google Drive, Slack, Make, Zapier, n8n, Airbyte, GitHub and webhooks.
To record creators when they go live, use the Douyin Live Scraper on a schedule to check their live status. Then start this Actor for the creators who are live.
Use cases
- Live commerce research (直播带货). Read what viewers ask about products and prices during live shopping streams.
- Audience and sentiment analysis. Collect real-time comments for NLP, topic and sentiment models.
- Streamer analytics. Measure chat activity, joins, follows and viewer counts during a stream.
- Brand monitoring. Record what viewers say when a brand or product appears in a stream.
- Competitor research. Compare the audience activity of competing streamers and brands.
- Academic and moderation research. Study chat behavior in large Chinese live rooms.
Tips for the best results
- Start the run while the creator is live. A room that is not live gets an error row. Use the Douyin Live Scraper to check first.
- Select only the types you need. In a big room, likes, joins and viewer counts can be many times more rows than chat.
- Big rooms are busy. A room with 20,000 or more viewers can send several chat messages each second.
- Record a full show. Set a long recording time. The Actor stops by itself when the stream ends.
FAQ
Does it record gifts? No. Douyin does not show gift messages to viewers who are not logged in, so gifts are not available.
Can I record a stream that has already ended? No. Douyin does not keep the chat of past streams. Record the room while it is live.
Do I need a Douyin account? No. The Actor works without an account, a password or cookies.
How long can one recording be? Up to 240 minutes (4 hours) for each run. For a longer stream, start a second run.
Why did I get a row that says no messages arrived? The room was live, but nobody sent a message of the selected types during the recording. Record longer, or select more message types.
Can I record TikTok LIVE with this Actor? No. This Actor works with Douyin, the Chinese version of TikTok, only.
Other Douyin scrapers
- Douyin Live Scraper — check if creators are live, with viewers, likes and stream links.
- Douyin Trending Live Rooms Scraper — find the most popular live rooms now.
- Douyin Danmaku Scraper — get the bullet comments (弹幕) of Douyin videos.
- Douyin Comments Scraper — get the comments under Douyin videos.
- Douyin Hot Search Scraper — get Douyin's trending topics and hot lists.
Is it legal to scrape Douyin live chat?
This Actor collects only publicly available data that any viewer of the live room can see. You are responsible for how you use the data. Obey Douyin's terms of service and the laws that apply to you, such as GDPR. Chat messages can contain personal data, so process them lawfully.
Feedback and support
Did you find a problem, or do you need a new field? Open an issue on the Issues tab.