YouTube Live Stream Scraper avatar

YouTube Live Stream Scraper

Pricing

Pay per event

Go to Apify Store
YouTube Live Stream Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldMeaning
videoIdStable YouTube video identifier
urlCanonical watch URL
titleStream title
descriptionAvailable description snippet
channelIdStable channel identifier
channelNamePublic channel name
channelUrlPublic channel URL
thumbnailBest available thumbnail URL
statusLIVE, UPCOMING, or UNKNOWN
isLiveNormalized live-now boolean
isUpcomingNormalized upcoming boolean
scheduledStartScheduled start time when exposed
viewCountTextRaw viewer/view signal
viewCountParsed numeric signal when possible
badgesPublic status and channel badges
sourceUrlPage where the record was found
scrapedAtUTC extraction timestamp

How to scrape YouTube live streams

  1. Open the Actor input page.

  2. Keep https://www.youtube.com/live or add your own YouTube URLs.

  3. Add search queries such as space launch live or earnings call live.

  4. Choose a maximum number of streams.

  5. Enable Live now only if upcoming streams are not needed.

  6. Click Start.

  7. 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 ApifyClient
client = 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().items
print(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.

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.

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.