YouTube Scraper with Transcripts & Comments avatar

YouTube Scraper with Transcripts & Comments

Pricing

from $2.00 / 1,000 video results

Go to Apify Store
YouTube Scraper with Transcripts & Comments

YouTube Scraper with Transcripts & Comments

YouTube crawler and video scraper. Alternative YouTube API with no limits or API key. Scrape search results, channels, and playlists. Extract views, likes, subscriber counts, and comments, and download transcripts and subtitles as text, SRT, or WebVTT.

Pricing

from $2.00 / 1,000 video results

Rating

5.0

(1)

Developer

Muhammad Zaid

Muhammad Zaid

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

9 hours ago

Last modified

Categories

Features

Limited permissions

Share

YouTube Scraper

YouTube Scraper extracts public data from YouTube without the official API's quotas or keys. Scrape search results, channel videos, playlists, full video details, transcripts, and comments, and export everything as JSON, CSV, or Excel.

It runs on plain HTTP requests with no headless browser, which makes runs fast, stable, and cheap.

What does YouTube Scraper do?

  • Scrape YouTube search results with the same filters YouTube offers: sort order, upload date, duration, type, and features such as HD, subtitles, live, 4K, or Creative Commons
  • Scrape all videos of a channel from a URL, @handle, or channel ID
  • Break down playlists with full pagination
  • Enrich any video with full details: description, like count, comment count, subscriber count, and chapters
  • Download transcripts and subtitles in plain text, SRT, WebVTT, or timestamped JSON, including YouTube's machine translation into other languages
  • Fetch comments with like counts, creator badges, and optional reply threads
  • Mix search terms and direct URLs in one run and get one unified dataset

Use cases for YouTube data

  • Brand monitoring: track mentions of your brand or product in video titles, descriptions, and comments
  • Competitor analysis: follow competitor channels, upload frequency, and engagement metrics
  • AI and NLP pipelines: feed transcripts to language models for summarization, topic mining, or fine-tuning datasets
  • Trend research: discover what creators and commenters say about any topic, sorted by recency or popularity
  • Lead generation: find active channels in a niche together with subscriber counts and verification status
  • Content research: collect playlists and top-performing videos in your field before planning your own content

What data can you scrape?

📝 Video title and URL👀 View count
📺 Channel name, ID, and URL📈 Subscriber count
⏱️ Duration📅 Publish date text
🖍 Transcripts and subtitles💬 Comments and reply threads
👍 Like count🔢 Comment count
📖 Full description and chapters🖼️ Thumbnails
✅ Verified and creator badges🔴 Live and Shorts flags

How to scrape YouTube

  1. Create a free Apify account and open YouTube Scraper.
  2. Enter one or more search queries, or paste start URLs (videos, channels, playlists).
  3. Set Max results and any search filters you need.
  4. Optionally switch on video details, transcripts, or comments.
  5. Click Start and download your dataset in JSON, CSV, or Excel when the run finishes.
YouTube Scraper input form

Input example

You can fill in the form in Apify Console or pass JSON directly:

{
"searchQueries": ["ai coding assistant review"],
"maxResults": 50,
"sortBy": "view_count",
"uploadDate": "this_year",
"downloadTranscripts": true,
"transcriptFormat": "text",
"includeComments": true,
"maxComments": 20
}

Scraping by URL works with videos, channels (URL, @handle, or ID), and playlists:

{
"startUrls": [
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
{ "url": "@mkbhd" },
{ "url": "https://www.youtube.com/playlist?list=PLObrtcm1Kw6PmbXg8bmfJN-o2Hgx8sidf" }
],
"maxResults": 100
}

Use it from code

Everything the form does, you can do from code. Install the Apify client (pip install apify-client or npm install apify-client), then:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("misterzaid.py/youtube-scraper").call(run_input={
"searchQueries": ["ai coding assistant review"],
"maxResults": 50,
"downloadTranscripts": True,
"includeComments": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["view_count"])

Or with plain HTTP from any language, one request runs the Actor and returns the dataset:

curl -X POST "https://api.apify.com/v2/acts/misterzaid.py~youtube-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["ai coding assistant review"], "maxResults": 50}'

The API tab above has ready-to-copy snippets for Node.js, Python, and curl, an OpenAPI spec, and an MCP endpoint for AI agents.

Use with AI agents (MCP)

This Actor is MCP-ready: Claude, ChatGPT, Cursor, or any MCP client can call it as a tool through the Apify MCP server, with the input schema above becoming the tool's parameters automatically. Add this to your MCP client configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=misterzaid.py/youtube-scraper"
}
}
}

Then ask your agent things like: "Get the transcripts of the 10 most viewed videos about prompt engineering and summarize the common advice." The agent runs the scraper, reads the dataset, and works with the results. Keep Max results small in agent workflows, since every result is billed.

How it compares

Based on public Store listings and our own test runs with identical inputs (same search query, same video URLs, November 2026). Names left out on purpose; check current Store pricing yourself:

This ActorPopular general YouTube scraperVideo-URL transcript scraper
Price per 1,000 videosfrom $2.00from $4.00from $5.00
1,000 videos with transcripts$7.00 flattranscripts billed per minute of video (10-minute videos add up to $400+)about $10.00
Search queries as inputyesyes, but returned 0 rows in our testno, video URLs only
Channels and playlistsyesyesno
Commentsyes, with reply threadsnot offeredyes
Broken or dead inputsfree error row with the reasonno error rows in outputerror row
Typed numbers and uniform schemayesyesyes
Open-source engine you can audityes (MIT)nono

How to scrape YouTube transcripts

Switch on Download transcripts and every scraped video gets its transcript attached. Choose the output format: plain text for AI pipelines, SRT or WebVTT for subtitle files, or JSON segments with timestamps. Set Transcript language to pick the source language and Translate transcript to for YouTube's machine translation. Both uploaded and auto-generated subtitles are supported.

How to scrape YouTube comments

Switch on Include comments and set Max comments per video. Each comment includes the author, text, like count, and badges (verified, creator, hearted). Enable Include comment replies to also fetch full reply threads. Replies cost one extra request per thread, so use them on targeted runs.

Transcript and comments options

Output example

The scraped results appear as a structured dataset you can browse in the Output tab and export in any format:

YouTube Scraper output dataset

Each video becomes one dataset item:

{
"type": "video",
"source": "search:ai coding assistant review",
"video_id": "dQw4w9WgXcQ",
"title": "I Tested Every AI Coding Assistant",
"channel": "Some Channel",
"channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"duration": "12:34",
"duration_seconds": 754,
"published_text": "3 months ago",
"view_count": 1234567,
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"is_verified": true,
"transcript": {
"language": "en",
"format": "text",
"text": "Today we are comparing every AI coding assistant..."
},
"comments": [
{ "author": "@someuser", "text": "Great comparison!", "like_count": 42 }
]
}

Playlist entries include playlist_id and playlist_title, and channel results include subscriber counts.

Error items

When a specific input cannot be scraped (deleted video, missing channel, disabled transcripts), the Actor pushes an error item instead of failing the whole run, so one bad URL never costs you the rest of your results. Error items are easy to filter by the presence of the error field:

{
"type": "error",
"source": "url:https://www.youtube.com/watch?v=xxxxxxxxxxx",
"error": "VideoUnavailableError",
"note": "Video is unavailable"
}
errorMeaning
VideoUnavailableErrorVideo is deleted, private, or region-blocked
ChannelNotFoundErrorChannel does not exist
PlaylistNotFoundErrorPlaylist does not exist or is private
TranscriptsDisabledErrorVideo owner disabled transcripts
TranscriptsNotAvailableErrorNo transcript exists for the video
AgeRestrictedErrorContent requires login due to age restriction
RateLimitErrorYouTube temporarily rate-limited the request
ValueErrorA start URL could not be recognized

❓ FAQ

How much will scraping YouTube cost?

You pay only for the data you actually receive, per feature:

WhatPrice
Video, channel, or playlist result$2.00 per 1,000
Full video details add-on$2.00 per 1,000 videos
Transcript add-on (flat price, any video length)$5.00 per 1,000 videos
Comment (replies included)$0.50 per 1,000 comments

Error rows are never charged. Unlike scrapers that bill transcripts per minute of video, transcripts here cost the same whether the video is 2 minutes or 3 hours. Example: 1,000 videos with transcripts costs $7.00 total. See the Pricing tab for current rates.

Should I use a proxy?

Yes, and the default Apify datacenter proxies work well for search, channels, and playlists. For high-volume transcript scraping, residential proxies are more reliable because YouTube's caption endpoints are stricter with datacenter IP addresses.

Can I integrate this scraper with other apps?

Yes. Like any Apify Actor, it works with the Apify API, Python and Node.js clients, webhooks, and integrations such as Make, Zapier, Google Drive, and Slack. Check the API tab for ready-to-copy code examples.

Can I run it on a schedule?

Yes. Create a Task with your input in Apify Console and attach a schedule to it, for example to track a channel's new uploads daily.

This Actor extracts only publicly available data. Scraping public data is generally legal, but you are responsible for complying with copyright rules and personal data regulations such as GDPR in your jurisdiction. If you are unsure whether your use case is compliant, consult a lawyer.

Disclaimer

This Actor is an independent project. It is not affiliated with, endorsed by, or sponsored by YouTube or Google in any way.

Feedback and support

Found a bug or missing a feature? Open an issue on the Issues tab and it will be handled promptly.