YouTube Shows Scraper avatar

YouTube Shows Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
YouTube Shows Scraper

YouTube Shows Scraper

Extract shows from YouTube channels and expand each show into its episodes. Accepts channel URLs/handles and direct show/playlist URLs.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Beautiful Scrape

Beautiful Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What is YouTube Shows Scraper?

YouTube Shows Scraper lets you extract shows from YouTube channels and expand each show into its episodes — helping you track series, analyze episodic content, and gather show metadata with just a few clicks.

Discover channel shows: list every show on a channel's Shows tab Expand show episodes: get each episode with title, duration, views, and position Scrape direct show URLs: process individual shows or playlist-backed show links Analyze episodic content: understand how creators package videos into shows and seasons Automate show collection: replace manual browsing with repeatable workflows that keep datasets fresh and consistent

The scraper opens each channel's Shows tab, discovers shows, then expands each one into individual episode rows with parent show metadata attached. YouTube Shows are playlist-backed, so direct playlist URLs are also accepted.

What data does YouTube Shows Scraper extract?

📝 Title - The episode title

🆔 Video ID - The unique YouTube video ID

🔗 URL - Direct link to the episode (includes show/playlist + index when available)

⏱️ Duration - Length of the episode

👁️ View Count - Number of views on the episode

📅 Date - Upload date when available

🖼️ Thumbnail URL - Thumbnail image for the episode

📺 Channel Name - Name of the channel that owns the show

🌐 Channel URL - Link to the channel page

🆔 Channel ID - YouTube channel ID

🎬 Show Title - Title of the parent show

🆔 Show ID - YouTube show / playlist ID

🔗 Show URL - Direct link to the show page

🔢 Show Episode Count - Number of episodes in the show (when shown on the tab)

🔢 Order - 1-based position of the episode in the show

🏷️ Type - Always "episode" for items from this actor

Features

For maximum usefulness, YouTube Shows Scraper has the following abilities:

List and expand: discover shows on a channel, then emit one row per episode inside each show

Flexible input: scrape from channel handles/URLs and/or direct show/playlist URLs in one run

Result limits: control how many shows per channel (maxResultsShows) and how many episodes per show (maxResultsEpisodesPerShow)

Automatic pagination: handles Shows tab continuation pages and episode enumeration

Error resilience: continues processing remaining inputs even if one fails

Structured output: export data in JSON, CSV, Excel, or HTML with a consistent schema

⬇️ Input

Provide at least one of: channels or show URLs. You can set up the input programmatically or use the fields in the Actor's interface.

Channels

You can provide one or more YouTube channels using the channels array. The actor opens each channel's Shows tab.

Supported channel formats:

  • Username: MrBeast
  • Handle: @MrBeast
  • Channel URL: https://www.youtube.com/@MrBeast
  • Shows tab URL: https://www.youtube.com/@MrBeast/shows
  • Channel ID URL: https://www.youtube.com/channel/UCxxx

Show URLs

Use showUrls to expand one or more shows directly.

Supported URL formats:

  • Show page: https://www.youtube.com/show/VLPLxxxxxxxx
  • Playlist URL: https://www.youtube.com/playlist?list=PLxxxxxxxx

Input Parameters

Provide at least one of:

  • channels (array) - Channel usernames or URLs
  • showUrls (array) - Direct show or playlist URLs

Optional:

  • maxResultsShows (integer, default: 10) - Max shows to discover per channel
  • maxResultsEpisodesPerShow (integer, default: 50) - Max episodes to expand per show

Example Input (channels)

{
"channels": ["MrBeast"],
"maxResultsShows": 5,
"maxResultsEpisodesPerShow": 20
}

Example Input (direct show)

{
"showUrls": [
"https://www.youtube.com/show/VLPLoSWVnSA9vG9hJNdgr-81MG59EYT9eEYn"
],
"maxResultsEpisodesPerShow": 10
}

Example Input (combined)

{
"channels": ["MrBeast"],
"showUrls": [
"https://www.youtube.com/playlist?list=PLoSWVnSA9vG9hJNdgr-81MG59EYT9eEYn"
],
"maxResultsShows": 2,
"maxResultsEpisodesPerShow": 10
}

⬆️ Output

The results will be wrapped into a dataset which you can find in the Output or Storage tab. Note that the output is organized in tables and tabs for viewing convenience. You can view results as a table, JSON, or other formats.

Once the run is finished, you can also download the dataset in various data formats (JSON, CSV, Excel, XML, HTML). Before exporting, you can pick or omit specific output fields.

Important: the actor does not emit one row per show. It emits one row per episode inside each discovered/expanded show, with show metadata attached.

JSON Output

Here's an example of the data structure for a single episode inside a show:

{
"id": "tnTPaLOaHz8",
"title": "$10,000 Every Day You Survive In A Grocery Store",
"url": "https://www.youtube.com/watch?v=tnTPaLOaHz8&list=PLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp&index=1",
"duration": "19:42",
"viewCount": 547000000,
"date": null,
"type": "episode",
"thumbnailUrl": "https://i.ytimg.com/vi/tnTPaLOaHz8/hqdefault.jpg",
"showId": "PLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp",
"showTitle": "If You Survive, You Win",
"showUrl": "https://www.youtube.com/show/VLPLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp",
"showEpisodeCount": 17,
"channelName": "MrBeast",
"channelUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
"channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"fromYTUrl": "https://www.youtube.com/show/VLPLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp",
"order": 1,
"input": "MrBeast"
}

Output Fields

FieldTypeDescription
titlestring | nullThe episode title
typestringAlways "episode"
idstringThe unique YouTube video ID
urlstringDirect link to the episode (with show/playlist context when available)
thumbnailUrlstring | nullThumbnail image URL
viewCountnumber | nullNumber of views on the episode
datestring | nullUpload date (ISO format) when available
durationstring | nullLength of the episode
showIdstring | nullYouTube show / playlist ID
showTitlestring | nullTitle of the parent show
showUrlstring | nullDirect link to the show page
showEpisodeCountnumber | nullNumber of episodes in the show
channelNamestring | nullName of the channel
channelUrlstring | nullLink to the channel page
channelIdstring | nullYouTube channel ID
fromYTUrlstringThe show URL that was scraped/expanded
ordernumber1-based position in the show
inputstringOriginal input value (channel or show URL)

Error items

When the scraper cannot retrieve data for a given input — for example a channel does not exist or a show has no episodes — it pushes an error item to the dataset instead of silently skipping it. Normal output items are never affected; you can tell them apart by the presence of an error field.

Error item structure

{
"url": "https://www.youtube.com/@somechannel",
"input": "somechannel",
"error": "CHANNEL_HAS_NO_SHOWS",
"note": "Channel exists but has no shows"
}

Error codes reference

Error codeMeaning
CHANNEL_DOES_NOT_EXISTChannel URL points to a channel that does not exist
CHANNEL_HAS_NO_SHOWSChannel exists but has no shows
NO_VIDEOSShow exists but has no episodes
NOT_FOUNDPage or show was not found
INVALID_INPUTActor failed due to bad configuration or a malformed URL