YouTube Live Stream & Replay Chat Extractor avatar

YouTube Live Stream & Replay Chat Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
YouTube Live Stream & Replay Chat Extractor

YouTube Live Stream & Replay Chat Extractor

Collect chat messages, Super Chats, Super Stickers, and membership events from an active YouTube livestream or an ended stream's saved chat replay, with author and timestamp detail.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Dataspryva

Dataspryva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Read the chat behind a YouTube live stream — while it is running or from the saved replay after it ends. Give the actor a video link, a video ID or a channel, and it returns the chat timeline as structured records: text messages, Super Chats, Super Stickers, memberships, gift memberships and paid gift messages.

No cookies, login, API key or proxy setup is required.

What you get

  • Replay chat in full — pages through the saved chat to the end of the stream instead of stopping after a fixed number of pages.
  • Live chat capture — opens the live chat feed, emits the recent history already on screen, then polls at YouTube's own interval until your time window ends.
  • Channel discovery — finds the current live stream and recent stream replays from an @handle, channel URL or UC… channel ID.
  • Every visible event type — normal messages, Super Chats, Super Stickers, memberships, gift purchases, gift redemptions, paid gift messages, engagement notices and slow-mode/system notices.
  • Replay offsets — each replay event carries videoOffsetMsec and a readable videoOffsetText such as 0:05:06.
  • Numeric money — amountText plus amountValue and currency when the amount is unambiguous.
  • Author detail — display name, channel ID, avatar, badges, handle, profile URL, and owner / moderator / member / verified flags.
  • Stream context — title, channel, live status, start/end time, publish date, duration, views, likes and category.
  • Type filters and caps — include or exclude event families, cap messages per video and total items, and restrict replay output to a time range.
  • Optional summary — one stream_summary record per video with event counts, per-currency totals, top supporters and a completeness note.

Inputs

FieldDefaultWhat it does
videoRefs—Watch, live, shorts or youtu.be links, bare 11-character IDs, or channel live links such as @handle/live.
channelRefs—@handle, channel URL or UC… ID. Each channel is searched for streams.
modeautoauto detects live versus replay. active forces live chat. replay forces saved replay chat.
channelDiscoveryModecurrent_live_then_replayscurrent_live, current_live_then_replays or latest_replays.
maxVideosPerChannel5How many streams to take from each channel.
lookbackDays30How far back to include ended streams from a channel. 0 means no limit.
includeUpcomingLivesfalseEmit an upcoming status row for scheduled channel streams.
maxMessagesPerVideo5000Chat events per video. 0 collects every available event.
maxTotalItems0Whole-run dataset cap. 0 means no limit.
maxTimePerVideoSecs600Safety budget for replay pagination on one video.
includeNormalMessagestrueInclude standard text messages.
includeSuperChatstrueInclude Super Chats and Super Stickers.
includeMembershipEventstrueInclude memberships.
includeGiftEventstrueInclude gift purchases, redemptions and paid gift messages.
includeSystemEventstrueInclude engagement, slow-mode and other system notices.
includePlaceholdersfalseInclude empty placeholder rows.
includeSummaryfalseAdd a stream summary row per video.
startOffsetSecs / endOffsetSecs0 / 0Replay-only time window inside the video.
liveCollectSecs60How long to poll an active chat.
pollIntervalMs2000Minimum live poll delay; YouTube's longer timeout is honoured.
language / regionCodeen / USPage and chat request locale.
includeMetadatatrueRepeat stream metadata on each chat row.

Output

Every chat record has recordType: "live_chat_message" and:

  • identity and timing: videoId, videoUrl, chatType, messageId, eventType, messageType, timestamp, timestampUsec, publishedAt, videoOffsetMsec, videoOffsetText, scrapedAt
  • author: authorName, authorChannelId, authorHandle, authorPhotoUrl, authorProfileUrl, authorBadges, memberBadge, isOwner, isModerator, isMember, isVerified
  • content: messageText, messageParts[] (text and emoji runs)
  • money and membership: amountText, amountValue, currency, superChatColor, stickerName, stickerUrl, membershipText, membershipLevel, memberMonths
  • gifts: giftCount, giftName, giftImageUrl, giftedBy
  • system: systemAction, systemText
  • stream context when includeMetadata is on: videoTitle, channelName, channelId, channelUrl, channelHandle, isLiveContent, isLiveNow, streamStatus, streamStartedAt, streamEndedAt, videoPublishedAt, videoDurationSeconds, videoViewCount, videoLikeCount, videoCategory
  • channel discovery context when the target came from a channel: discoverySource, channelRef, isDiscoveredLive, isDiscoveredUpcoming, discoveredAt

Event values include message, super_chat, super_sticker, membership, membership_gift, gift_received, gift, system and placeholder.

When chat cannot be read, the actor emits a recordType: "status" row with a specific status such as chat_disabled, upcoming, no_replay, stream_ended, stream_live, channel_not_live, rate_limited or partial_capture, plus a plain-language error.

Examples

Read a complete replay:

{
"videoRefs": ["https://www.youtube.com/watch?v=FQbNtLOVlwU"],
"mode": "replay",
"maxMessagesPerVideo": 0
}

Capture 60 seconds of a live chat:

{
"videoRefs": ["https://www.youtube.com/live/74WjpIH4jeE"],
"mode": "active",
"liveCollectSecs": 60
}

Find a channel's current live stream and its two most recent replays:

{
"channelRefs": ["@CBSNews"],
"channelDiscoveryMode": "current_live_then_replays",
"maxVideosPerChannel": 2,
"lookbackDays": 30,
"includeSummary": true
}

Read only paid events from a replay between two offsets:

{
"videoRefs": ["1vvDbx3nYpg"],
"mode": "replay",
"includeNormalMessages": false,
"includeMembershipEvents": false,
"includeGiftEvents": false,
"includeSystemEvents": false,
"startOffsetSecs": 60,
"endOffsetSecs": 600
}

FAQ

Do I need cookies, an API key or a proxy? No. The actor reads public chat data without cookies or credentials. It connects directly and switches proxy automatically only when a request is blocked.

Why is a live run shorter than the whole chat? A live read only sees what appears while the actor is collecting. The actor emits the recent history already on screen, then polls until liveCollectSecs ends. Run replay mode after the stream ends for the full timeline.

How much replay chat can I get? As much as YouTube exposes. Pagination stops only at the end of the replay, maxMessagesPerVideo, maxTotalItems, maxTimePerVideoSecs, or a real error. There is no fixed page cap.

What is the difference between active and auto? auto checks the video and chooses live or replay. active insists on live chat and reports stream_ended if the stream is already over. replay insists on saved chat and reports stream_live if the stream is still running.

Why is amountValue sometimes missing? Only unambiguous amounts are converted to a number and currency. The original amountText is always kept. Unusual formats are counted in amountsNotRead on the summary row instead of being guessed.

Are gift memberships the same as memberships? No. A purchase is membership_gift (the buyer sent memberships), a redemption is gift_received (someone received one), and a paid gift message is gift. The summary keeps separate counts.

Why are some messages missing from a channel result? Channel discovery only returns streams that match channelDiscoveryMode, lookbackDays and maxVideosPerChannel. Some streams have chat disabled, no saved replay, or are members-only. Each of those cases produces a status row instead of fabricated data.

Does the actor convert currencies or provide a single total? No. Totals stay per currency in totalAmountByCurrency; no exchange-rate service is used. Top supporters are ranked by numeric amount and keep their own currency.

Can it read members-only chat or deleted-message moderation details? No. Those require an authenticated channel session. The actor reads public chat, reports unavailable paths as status rows, and never fakes restricted data.

Limits

  • Live captures are partial by design; replay is the complete path.
  • Members-only chat, age/region-gated videos and moderation logs are not available without authentication.
  • Reply-thread parent IDs and a numeric concurrent-viewer count are not exposed in the public chat payload, so they are not returned.
  • Currency conversion is intentionally not performed.
  • Chat availability is controlled by the creator. A stream can be public while its chat or replay is disabled.

Data source

The actor reads YouTube's public watch pages and its public InnerTube live-chat endpoints. It does not log in, post messages, or perform moderation actions.