Operated by Sourcelane✓ verified
A scraper for YouTube live chat that extracts every chat message from livestreams, premieres, and archived replays into one message-level record per chat entry. Outputs include message text with custom emoji preserved as shortcodes, message classification (regular messages, paid messages, paid stickers, memberships and membership gifts), the message timestamp and offset within the stream, author metadata and badges, membership and moderation status, gift counts for gifted memberships, and parsed paid-contribution details (numeric amount and currency across YouTube-supported currencies). The connector also produces per-video chat aggregates with message counts by type, unique chatter counts, per-currency paid totals, top chatters and the chat time range, and it can capture new messages while a stream is actively running.
Verified Sep 28, 12:10 AM
$0.0005
per chat message
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-live-chat-scraper","params":{"videoUrls":["https://www.youtube.com/watch?v=Z1sqWFs86uU"]},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
videoUrls | array | required | URLs or IDs of YouTube livestreams, premieres or their archived replays. Up to 20 per run. |
maxMessagesPerVideo | integer | optional | Stop after this many chat messages per video. Set 0 to read the whole chat. |
messageTypes | string | optional | Which chat items to keep. Paid only is the cheapest way to pull a stream's Super Chat revenue. |
startOffsetSecs | integer | optional | For replays: only keep chat from this point in the video onwards. 0 starts at the beginning. YouTube serves chat replay in order, so earlier chat is still read - it is simply not returned. |
endOffsetSecs | integer | optional | For replays: stop at this point in the video. 0 reads to the end of the stream. |
liveCollectSecs | integer | optional | For streams that are live right now: how long to keep listening for new messages before finishing the run. |
Each result contains
| Field | Type | Description |
|---|---|---|
videoId | string | Video Id |
videoUrl | string | Video Url |
videoTitle | string | Video Title |
channelTitle | string | Channel Title |
isReplay | boolean | Is Replay |
messageId | string | Message Id |
messageType | string | Message Type |
offsetSeconds | null | Offset Seconds |
offsetTimestamp | null | Offset Timestamp |
publishedAt | string | Published At |
authorName | string | Author Name |
authorChannelId | string | Author Channel Id |
authorChannelUrl | string | — |
authorPhotoUrl | string | — |
isOwner | boolean | — |
isModerator | boolean | — |
isVerified | boolean | — |
isMember | boolean | — |
memberBadge | null | — |
message | string | — |
amountText | null | — |
amountValue | null | — |
amountCurrency | null | — |
giftCount | null | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Get the transcript of this video and turn it into a blog outline: <url>”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://cool-puffin-608.convex.site/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://cool-puffin-608.convex.site/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://sourcelane-amber.vercel.app/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"youtube-live-chat-scraper","params":{"videoUrls":["https://www.youtube.com/watch?v=Z1sqWFs86uU"]},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://cool-puffin-608.convex.site/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "youtube-live-chat-scraper",
"params": {"videoUrls":["https://www.youtube.com/watch?v=Z1sqWFs86uU"]},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…