YouTube Channel Scraper avatar

YouTube Channel Scraper

Pricing

from $3.00 / 1,000 channel or video results

Go to Apify Store
YouTube Channel Scraper

YouTube Channel Scraper

Scrape YouTube channel metadata and recent videos from channel / about / videos pages via ytInitialData. Ideal for content research, affiliate research, and AI training datasets.

Pricing

from $3.00 / 1,000 channel or video results

Rating

0.0

(0)

Developer

Harsh

Harsh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Scrape YouTube channel metadata and recent videos for content research, affiliate research, competitor analysis, and AI training datasets. Built with TypeScript and Crawlee CheerioCrawler (HTTP-first, no browser) by parsing embedded ytInitialData JSON from channel About and Videos pages.

Run it on the Apify platform for scheduling, API access, proxy rotation, monitoring, and dataset exports (JSON, CSV, Excel).

Legal / ToS notice: This Actor is intended for publicly available data only. Respect YouTube Terms of Service, robots rules, and applicable privacy laws (GDPR/CCPA). Do not use this tool to bypass authentication, scrape private content, or violate platform policies. You are responsible for how you use the data.

What does YouTube Channel Scraper do?

Given one or more channel URLs (@handle, /channel/UC…, /c/, /user/), this Actor:

  1. Normalizes and deduplicates channel URLs
  2. Optionally loads each channel About tab for metadata (title, description, subscribers, total views, video count, country)
  3. Loads the Videos tab and extracts recent video listings up to maxVideos
  4. Parses window["ytInitialData"] / var ytInitialData embedded in the HTML
  5. Handles consent walls, captchas / unusual traffic, and not-found pages gracefully (dataset row with error)
  6. Pushes structured dataset items (type: "channel" and type: "video")
  7. Writes SUMMARY.md to the key-value store

Why use YouTube Channel Scraper?

  • Content research — discover what top channels post and how often
  • Affiliate / niche research — collect public stats before outreach
  • AI / ML datasets — bulk channel + video metadata for training or ranking features
  • Competitor monitoring — track public channel growth signals and new uploads
  • Automation-ready — JSON dataset + Apify API, webhooks, and schedules

How to scrape YouTube channels

  1. Open the Actor in Apify Console
  2. Paste channel URLs (e.g. https://www.youtube.com/@MrBeast)
  3. Set max videos per channel (e.g. 20)
  4. Keep include channel info enabled if you need About-tab stats
  5. Enable Apify Proxy if you hit consent or rate-limit pages
  6. Click Start
  7. Download results from the Dataset tab (JSON / CSV / Excel) or read SUMMARY.md from the key-value store

Input

FieldTypeDefaultDescription
channelUrlsstring[]MrBeast + Google DevelopersYouTube channel URLs
maxVideosinteger20Max recent videos per channel (0 = channel info only)
includeChannelInfobooleantrueScrape About-tab channel metadata
maxConcurrencyinteger3Concurrent HTTP requests
maxRequestRetriesinteger3Retries on failure / soft blocks
requestDelayMsinteger1000Used for max requests/minute rate limiting
proxyConfigurationobjectApify Proxy onProxy settings

Example:

{
"channelUrls": [
"https://www.youtube.com/@MrBeast",
"https://www.youtube.com/@GoogleDevelopers"
],
"maxVideos": 10,
"includeChannelInfo": true,
"maxConcurrency": 3,
"maxRequestRetries": 3,
"requestDelayMs": 1000,
"proxyConfiguration": {
"useApifyProxy": true
}
}

See examples/input.json.

Output

Channel record

{
"type": "channel",
"channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"title": "MrBeast",
"description": "SUBSCRIBE FOR A COOKIE! …",
"subscriberCount": 391000000,
"videoCount": 841,
"viewCount": 80123456789,
"channelUrl": "https://www.youtube.com/@MrBeast",
"country": "United States",
"scrapedAt": "2026-07-18T12:00:00.000Z",
"error": null
}

Video record

{
"type": "video",
"videoId": "dQw4w9WgXcQ",
"title": "I Spent 50 Hours Buried Alive",
"description": "I spent 50 hours buried alive...",
"viewCount": 312456789,
"likeCount": null,
"publishedAt": "2 years ago",
"duration": "15:42",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"channelTitle": "MrBeast",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"channelUrl": "https://www.youtube.com/@MrBeast",
"scrapedAt": "2026-07-18T12:00:00.000Z",
"error": null
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data fields

FieldChannelVideoDescription
typeyesyes"channel" or "video"
channelIdyesyes*UC… channel id
titleyesyesChannel or video title
descriptionyesyesAbout text / snippet
subscriberCountyesSubscribers
videoCountyesTotal videos on channel
viewCountyesyesLifetime channel views or video views
channelUrlyesyes*Canonical channel URL
countryyesCountry when present on About
videoIdyes11-char video id
likeCountyesOften null on list pages
publishedAtyesRelative time (e.g. "2 years ago")
durationyese.g. 15:42
urlyesWatch URL
channelTitleyesOwning channel name
thumbnailyesThumbnail image URL
scrapedAtyesyesISO scrape time
erroryesyesSet on failures / blocks

* optional enrichment on video rows when channel context is known.

How it works (technical)

  • CheerioCrawler fetches About and Videos HTML over HTTP
  • ytInitialData is extracted via regex + brace-balanced JSON parse
  • Channel stats come from channelMetadataRenderer, c4TabbedHeaderRenderer, aboutChannelViewModel, and channelAboutFullMetadataRenderer
  • Videos come from videoRenderer / gridVideoRenderer / richItemRenderer trees
  • Fallbacks: Open Graph meta tags, DOM subscriber text, and a[href*="watch?v="] anchors
  • Graceful handling for consent walls, captchas, 403/429, and missing channels

Pricing / cost estimation

This Actor uses Pay-per-event (PPE) pricing at about $0.003 per dataset result (channel or video row), plus a tiny actor-start fee. How much does it cost to scrape YouTube channels?

ScenarioApprox. resultsEst. cost
10 channels, info only~10~$0.03
10 channels × 20 videos + info~210~$0.63
100 channels × 10 videos + info~1,100~$3.30

Platform free-tier and compute unit usage still apply when running on Apify. Enable proxy only when needed to control proxy costs.

Tips

  • Prefer Apify Proxy (residential if you see consent / unusual traffic pages)
  • Keep maxConcurrency at 2–5 for stable extractions
  • Set maxVideos only as high as you need — list pages return first-screen results without infinite scroll pagination in this HTTP version
  • likeCount is often null on Videos-tab listings (YouTube does not always embed likes there)
  • Use @handle URLs for stability when custom /c/ paths change

FAQ, disclaimers, and support

Is scraping YouTube legal?
Scraping publicly available pages for legitimate research is a gray area that depends on jurisdiction, purpose, and ToS. This tool does not bypass logins or access private data. Consult legal counsel for your use case.

Why do I get consent or empty results?
Some regions show a cookie consent wall without ytInitialData. Use proxies (often US residential) and retries.

Does this use the official YouTube Data API?
No. It parses public HTML / embedded JSON. For API-quota-based access, use Google’s YouTube Data API instead.

Need a custom solution?
Open an issue on the Actor’s Issues tab in Apify Console, or request a custom scraper for deeper pagination, Shorts-only mode, or comment extraction.

Output example file

See examples/output.json for a full sample payload.