YouTube Live Stream Scraper
Pricing
Pay per event
YouTube Live Stream Scraper
🎥 Discover public YouTube live and upcoming streams with channel, timing, thumbnail, viewer, badge, and source metadata.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Discover public YouTube live and upcoming streams without a YouTube Data API key.
Export clean stream, channel, timing, thumbnail, audience-signal, badge, and source metadata to datasets, JSON, CSV, Excel, APIs, or automation tools.
Use it for recurring media monitoring, event research, creator intelligence, livestream directories, and brand tracking.
What does YouTube Live Stream Scraper do?
This Actor reads YouTube's public web surfaces and finds stream records embedded in the page's initial data.
It supports the YouTube Live discovery page, public search pages, channel pages, watch URLs, and convenient search queries.
Each stream is normalized into one stable record and deduplicated by video ID.
No Google Cloud project, OAuth flow, YouTube API quota, or private account is required.
Who is it for?
Media monitors
Run hourly searches for breaking broadcasts, then compare stable videoId values with the previous dataset to alert editors only when a new stream appears.
Event researchers
Search for conferences, launches, hearings, or sports coverage, filter upcoming streams, and export schedules and channel links to a planning sheet.
Brand and creator teams
Monitor live mentions, sponsored creator activity, channel ownership, badges, and public audience signals across recurring campaigns.
Livestream directory operators
Combine the YouTube Live page with topic or channel sources, deduplicate records, and refresh a public discovery feed on an Apify schedule.
Developers and data teams
Feed normalized stream records into alerts, dashboards, archives, databases, or enrichment pipelines through the API, webhooks, or MCP.
Why use this YouTube livestream scraper?
YouTube's official API requires setup, credentials, quotas, and API-specific query logic.
This Actor provides an Apify-native workflow with schedulable runs and export-ready records.
You can start from a broad live page, precise search terms, or specific public URLs.
Optional fields fail gracefully when YouTube omits them.
Raw badges are preserved so downstream workflows can interpret localized labels.
What YouTube data can I extract?
| Field | Meaning |
|---|---|
videoId | Stable YouTube video identifier |
url | Canonical watch URL |
title | Stream title |
description | Available description snippet |
channelId | Stable channel identifier |
channelName | Public channel name |
channelUrl | Public channel URL |
thumbnail | Best available thumbnail URL |
status | LIVE, UPCOMING, or UNKNOWN |
isLive | Normalized live-now boolean |
isUpcoming | Normalized upcoming boolean |
scheduledStart | Scheduled start time when exposed |
viewCountText | Raw viewer/view signal |
viewCount | Parsed numeric signal when possible |
badges | Public status and channel badges |
sourceUrl | Page where the record was found |
scrapedAt | UTC extraction timestamp |
How to scrape YouTube live streams
-
Open the Actor input page.
-
Keep
https://www.youtube.com/liveor add your own YouTube URLs. -
Add search queries such as
space launch liveorearnings call live. -
Choose a maximum number of streams.
-
Enable Live now only if upcoming streams are not needed.
-
Click Start.
-
Export the dataset or connect it to another service.
Input
{"startUrls": [{ "url": "https://www.youtube.com/live" }],"searchQueries": ["breaking news live"],"maxItems": 100,"liveOnly": false,"language": "en-US"}
startUrls accepts public YouTube Live, search, channel, and watch URLs.
searchQueries creates filtered YouTube search URLs automatically.
maxItems limits unique records across all sources.
liveOnly excludes records that are not confidently marked live now.
language controls the preferred response language and localized labels.
Output example
{"videoId": "abc123","url": "https://www.youtube.com/watch?v=abc123","title": "Space launch live","channelId": "UCexample","channelName": "Example Channel","channelUrl": "https://www.youtube.com/@example","thumbnail": "https://i.ytimg.com/vi/abc123/hq720.jpg","status": "LIVE","isLive": true,"isUpcoming": false,"viewCountText": "12,345 watching","viewCount": 12345,"badges": ["Verified"],"sourceUrl": "https://www.youtube.com/live","scrapedAt": "2026-07-12T12:00:00.000Z"}
Fields that YouTube does not expose are omitted rather than guessed.
How much does it cost to scrape YouTube live streams?
The Actor uses pay-per-event pricing: a small run-start charge plus a charge for each saved stream.
Apify plan tiers receive automatic volume discounts.
You can control spend directly with maxItems.
Start with 20 records to inspect coverage before scheduling a larger workflow.
The final live price is always shown in the Apify Console before a run starts.
Live and upcoming status
YouTube uses several renderer variants and localized status labels.
The Actor combines overlay text, badges, timing data, and audience labels into normalized fields.
status: LIVE means the public page indicated a stream is currently live.
status: UPCOMING means YouTube exposed scheduling or upcoming indicators.
status: UNKNOWN preserves useful records when the page does not provide a definitive state.
Use liveOnly: true for alerting systems that only accept confidently live broadcasts.
Search tips
Use concrete phrases that people place in livestream titles.
Good examples include city council meeting live, product launch live, and football press conference live.
Add several related queries to improve coverage.
Use source URLs when you already know the relevant channel or search page.
Keep language consistent with the target market.
Schedule repeated runs to observe newly appearing stream IDs.
Monitoring workflow
Run the Actor every 10–30 minutes with the same search inputs.
Store or compare videoId values in your destination system.
Trigger alerts only for IDs not seen in a previous run.
Use channelId as the durable creator key even when a channel changes its display name.
Use scheduledStart to build event calendars when YouTube exposes it.
Use viewCount for rough prioritization while preserving viewCountText for auditability.
Integrations
-
Send new streams to Slack or Microsoft Teams with Apify integrations.
-
Append records to Google Sheets for editorial review.
-
Load datasets into BigQuery, Snowflake, or a data warehouse.
-
Trigger Make, Zapier, or n8n workflows from completed runs.
-
Poll the Apify API from a media-monitoring backend.
-
Export CSV or Excel for one-off research.
-
Use webhooks to notify a directory when a run finishes.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/youtube-live-stream-scraper').call({searchQueries: ['technology conference live'],maxItems: 100,liveOnly: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/youtube-live-stream-scraper').call(run_input={'searchQueries': ['space launch live'],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~youtube-live-stream-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchQueries":["news live"],"maxItems":50}'
Fetch dataset items after the run succeeds using its defaultDatasetId.
Use with Apify MCP
Connect the Actor through Apify MCP. Keep your Apify API token in an environment variable rather than committing it.
Claude Code
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/youtube-live-stream-scraper" \--header "Authorization: Bearer $APIFY_TOKEN"
Run claude mcp list afterward to confirm that the apify server is connected.
Claude Desktop, Cursor, or VS Code
Add this server to the client's MCP JSON configuration (replace the placeholder locally):
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/youtube-live-stream-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Restart or reload the client, then verify that the YouTube Live Stream Scraper tool appears before sending a prompt.
Example prompts:
-
“Find public YouTube streams live now about the space launch.”
-
“Extract upcoming conference streams and group them by channel.”
-
“Return the newest live news streams as a compact table.”
Scheduling and change detection
Apify schedules can run the same input hourly, daily, or at a custom interval.
The Actor itself returns the current public snapshot.
For change detection, compare stable videoId values between runs.
A named dataset, database, sheet, or automation platform can retain prior IDs.
Avoid treating changing viewer counts as new streams.
Data quality and limitations
Results reflect public YouTube web data available at run time.
YouTube can personalize, localize, reorder, or omit results.
Viewer text may represent concurrent viewers or ordinary views depending on the renderer.
Numeric parsing understands common K, M, and B suffixes but the raw text remains authoritative.
Private, members-only, age-gated, deleted, or region-blocked content may not be available.
This Actor does not download video or audio media.
Legality: is it legal to scrape YouTube live-stream metadata?
The Actor collects metadata visible on public web pages.
Your use case, jurisdiction, contract, and data-retention choices determine your obligations.
Respect applicable laws, YouTube terms, copyright, privacy, and reasonable request rates.
Do not use the data for harassment, discrimination, surveillance, or infringement.
If uncertain, obtain legal advice for your specific workflow.
FAQ and troubleshooting
Why did my query return no streams?
Try a broader query, remove liveOnly, add live to the phrase, or provide a known YouTube search URL.
Why is status UNKNOWN?
YouTube sometimes exposes a video on a live-oriented surface without a definitive live/upcoming marker. The Actor preserves the useful record instead of inventing a status.
Why is scheduledStart missing?
YouTube does not expose a machine-readable schedule on every renderer.
Why do results differ by run?
YouTube discovery ordering changes continuously and may vary by language or region.
Related scrapers
Explore other public data tools from automation-lab.
Use a YouTube channel scraper when you need complete channel/video catalogs rather than live discovery.
Use a YouTube comments scraper when the workflow focuses on audience discussion.
Use this Actor when live-now and upcoming discovery is the primary job.
Support
Open an issue from the Actor page with the input, run ID, expected behavior, and a public example URL.
Do not include passwords, private cookies, personal tokens, or confidential data.
Renderer changes are easiest to diagnose when a reproducible public URL is included.
Start discovering YouTube livestreams
Begin with the prefilled Live page and a low item limit.
Review the structured output, then add topic searches and scheduling for your production workflow.
The resulting dataset is ready for filtering, export, APIs, alerts, dashboards, and AI analysis.