YouTube Video Scraper - Transcript & Comments avatar

YouTube Video Scraper - Transcript & Comments

Pricing

from $5.00 / 1,000 video scrapeds

Go to Apify Store
YouTube Video Scraper - Transcript & Comments

YouTube Video Scraper - Transcript & Comments

Scrape any YouTube link for full metadata, transcript with timestamps, comments with replies and channel data, all in one call. Need a whole channel? Use the Channel Scraper. Need keyword rankings? Use the Search Scraper.

Pricing

from $5.00 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Tubelens

Tubelens

Maintained by Community

Actor stats

0

Bookmarked

41

Total users

11

Monthly active users

3 days ago

Last modified

Share

YouTube video scraper - metadata, transcripts, comments & channel data

Paste any YouTube link and get the whole picture back in one record: full video metadata, the transcript with timestamps, comments with their replies, and the channel behind it.

From $5 per 1,000 videos. No per-run fee. No API key, no login.

Accepts watch links, youtu.be links, Shorts, embeds, and bare video IDs.

Why this scraper?

  • 🎯 Four data types, one record: no stitching results from separate scrapers together.
  • 🎚️ Pay for what you switch on: turn off transcripts, comments or channel data and the cost drops with them.
  • Fast: 3 to 5 seconds per video bundle, roughly 60 videos a minute on default memory.
  • 🈯 Transcripts in any published language, falling back to auto-generated English when your pick isn't available.
  • 💬 Comments include reply threads, sorted by top or newest, up to 5,000 per video.
  • 🚫 Broken videos don't bill you: private, deleted, age-gated and unplayable links come back with an error field and no charge.

What data can you extract from a YouTube video?

FieldTypeDescription
videoId, url, title, descriptionstringCore identifiers and text
viewCount, likeCount, commentCountnumberPublic engagement counters
durationSeconds, publishedAt, uploadDatenumber, ISO dateDuration and publish timestamps
category, tags, thumbnailsstring, string[], object[]YouTube category, creator tags, full-resolution thumbnail URLs
isLive, isAgeRestricted, isPrivatebooleanVideo status flags
transcript.text, transcript.segmentsstring, object[]Full transcript plus per-segment startMs, durationMs, text
transcript.language, transcript.isAutoGeneratedstring, booleanCaption language, and auto vs manual captions
comments[].text, comments[].author, comments[].likeCountstring, string, numberComment body, author handle, like count
comments[].replies[]object[]Nested replies, same shape as top-level comments
channel.name, channel.handle, channel.subscriberCountstring, string, numberChannel name, @handle, subscriber count
channel.country, channel.joinedDate, channel.totalViewsstring, string, numberCountry, join date, lifetime views
channel.videoCount, channel.keywordsnumber, stringPublic video count and channel keywords
channel.externalLinks[]object[]Creator's external URLs, with the real destination already resolved

Extract YouTube transcripts with timestamps

Set includeTranscript: true to return the full transcript plus per-segment timestamps in milliseconds. Each segment carries startMs, durationMs and text, which makes the output ready for video chaptering, subtitle rebuilds, LLM training data, or full-text search inside video content.

The scraper tries your transcriptLanguage first (en, es, pt, and so on), then auto-generated English, then the first available track. Manual and auto-generated captions both work. Videos with captions disabled, live streams mid-broadcast, and unaired premieres return transcript: null at no charge: expect roughly 10 to 15% of arbitrary videos to have no transcript available.

Transcript is a separate billable event at $0.005 per video, so switch it off on runs that only need metadata.

Scrape YouTube comments and replies

Set includeComments: true to pull top-level comments and their nested replies. Control volume with maxCommentsPerVideo (default 100, up to 5,000) and ordering with commentSort: "top" or commentSort: "newest".

Each comment returns text, author, authorHandle, authorChannelId, likeCount, publishedTimeText, replyCount, isPinned, isHearted, isCreator, plus a replies[] array with the same shape. No YouTube Data API quota applies, so comment volume is limited only by your Apify budget.

Comments bill at $0.0005 each, replies included. A video with 100 comments costs $0.05 in comment fees.

Get YouTube channel data

Set includeChannel: true to attach channel metadata to every video record: id, name, handle, url, subscriberCount, videoCount, description, country, joinedDate, totalViews, keywords, and an externalLinks[] array carrying each link's title and its real destination URL.

Channel is a separate billable event at $0.003, charged once per video where the channel block is returned.

How to scrape YouTube videos, transcripts, comments and channel data

  1. Create a free Apify account. Takes 30 seconds, no card needed.
  2. Open YouTube Video Scraper in the Apify Console.
  3. Paste the video URLs you want into the input, any format, one per line.
  4. Switch off any part you don't need (transcript, comments, channel) to cut cost.
  5. Click Start. Runs finish in 3 to 5 seconds per video bundle.
  6. Export as JSON, CSV or Excel, or pull the dataset over the Apify API.

Or drive it from the command line:

curl -X POST "https://api.apify.com/v2/acts/tubelens~youtube-video-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'

From Python, with pip install apify-client:

from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("tubelens/youtube-video-scraper").call(run_input={
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"includeTranscript": True,
"maxCommentsPerVideo": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["viewCount"])

Input

{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/9bZkp7q19f0",
"dQw4w9WgXcQ"
],
"includeMetadata": true,
"includeChannel": true,
"includeTranscript": true,
"transcriptLanguage": "en",
"includeComments": true,
"maxCommentsPerVideo": 100,
"commentSort": "top"
}

Set maxCommentsPerVideo to 0 to skip comments, or switch off any include flag to trim the bill.

Output

One record per video. Each block appears only when you asked for it.

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"publishedAt": "2009-10-24T23:57:33-07:00",
"uploadDate": "2009-10-25",
"durationSeconds": 213,
"viewCount": 1796657717,
"likeCount": 19278321,
"category": "Music",
"tags": ["rick astley", "never gonna give you up", "official video"],
"thumbnails": [
{ "url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg", "width": 1280, "height": 720 }
],
"isLive": false,
"isAgeRestricted": false,
"isPrivate": false,
"channel": {
"id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"name": "Rick Astley",
"handle": "@RickAstleyYT",
"url": "https://www.youtube.com/@RickAstleyYT",
"subscriberCount": 4520000,
"videoCount": 408,
"country": "United Kingdom",
"joinedDate": "Joined Feb 1, 2015",
"totalViews": 2459513931,
"externalLinks": [{ "title": "Website", "url": "https://www.rickastley.co.uk/" }]
},
"transcript": {
"language": "English",
"isAutoGenerated": false,
"text": "We're no strangers to love. You know the rules and so do I...",
"segments": [
{ "startMs": 18640, "durationMs": 4000, "text": "We're no strangers to love" }
]
},
"comments": [
{
"id": "UgxXXX",
"text": "can confirm: he never gave us up",
"author": "@YouTube",
"authorHandle": "@YouTube",
"authorChannelId": "UCvC4D8onUfXzvjTOM-dBfEA",
"likeCount": 227,
"publishedTimeText": "2 weeks ago",
"replyCount": 962,
"isPinned": false,
"isHearted": true,
"isCreator": false,
"replies": []
}
],
"commentCount": 100,
"scrapedAt": "2026-07-26T03:45:00.000Z",
"error": null
}

Videos that can't be read return the same shape with error set and the data blocks empty.

How much does YouTube Video Scraper cost?

Pay-per-event, so you're billed for the pieces you actually pulled.

EventPrice
Video (metadata)$0.005
Transcript$0.005
Channel$0.003
Comment or reply$0.0005

That's $5 per 1,000 videos for metadata only, with no per-run fee. The Apify free plan ($5 of monthly credit) covers about 1,000 metadata-only videos, or 79 full bundles with 100 comments each. Starter ($29) covers about 5,800 or 460.

Typical per-video cost:

  • Metadata only: $0.005
  • Metadata + channel: $0.008
  • Metadata + transcript + channel: $0.013
  • Full bundle, 100 comments: $0.063
  • Full bundle, 500 comments: $0.263

YouTube Video Scraper vs the YouTube Data API

FeatureYouTube Data API v3YouTube Video Scraper
Transcripts with timestampsNot availableReturned, with startMs per segment
Comments100 per call, then paginateUp to 5,000 per video in one run
Comment repliesSeparate endpoint, extra quotaNested replies[] in the same record
Channel metadataSeparate callIncluded per video
Daily quota10,000 units, roughly 100 full video fetchesNone
AuthOAuth or API key, Google Cloud projectApify token, no Google account
Cost for 1,000 full bundlesNeeds multiple projects to lift the quota$13 for metadata + transcript + channel
When you hit limitsRequests start failing on quotaHandled automatically, with backoff

If you need a handful of videos a day and no transcripts, the official API is free and fine. Past that, quota is the problem this solves.

Limitations

  • Comments cap at 5,000 per video. Enough for nearly every video, but a viral one with hundreds of thousands of comments will be truncated.
  • Transcripts only exist if the video has captions. Auto-generated captions count; a video with captions disabled returns transcript: null.
  • Members-only, private and deleted videos can't be read. They return with error set, and you aren't charged for them.
  • Live streams still running return metadata but no complete transcript until the stream ends.
  • It scrapes the videos you point it at. It doesn't crawl a channel's back catalog or search YouTube for you.

Other scrapers you might like

Apple Podcast transcript and episode scraperSpotify podcast and track scraperThreads profile and post scraper
Google Play app and review scraperTelegram channel and message scraperSimilarWeb traffic and competitor scraper

FAQ

Do I need a YouTube API key? No. There's no key, no login and no quota to manage. Paste links and run.

Do I need to configure a proxy? No. It handles blocks automatically and the defaults are fine for normal use.

Can I run this on a schedule? Yes. Apify Schedules can run it hourly, daily or weekly, and each run appends to a dataset you can pull over the API.

What video links does it accept? Watch URLs, youtu.be short links, Shorts, embeds, and bare 11-character video IDs. Mix them freely in one run.

What happens if a video is private or deleted? You get a record with error set and no charge for it. The rest of your list still runs.

Your feedback Found a bug or need a field that isn't here? Open an issue at console.apify.com/actors/gjIgee5mp98ukI5JM/issues and it goes straight to a human.