YouTube Transcript Extractor & Video Detail Scraper avatar
YouTube Transcript Extractor & Video Detail Scraper

Pricing

$4.00/month + usage

Go to Store
YouTube Transcript Extractor & Video Detail Scraper

YouTube Transcript Extractor & Video Detail Scraper

Developed by

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Scrape full video metadata (title, description, channel info, publish date, view/like counts, tags, categories, thumbnails), channel details, and all engagement metrics. Plus: Download complete video transcripts in any available or auto-translated language, with clean plain-text output.

5.0 (1)

Pricing

$4.00/month + usage

0

Total users

55

Monthly users

15

Runs succeeded

98%

Last modified

5 days ago

YouTube Video Details Scraper

Unlock the power of in-depth YouTube video analytics with our Video Details Scraper. Extract comprehensive metadata, engagement metrics, and now full video transcripts in any language you want.

Overview

This actor allows you to scrape detailed information about YouTube videos, including title, description, view count, keywords, thumbnail URLs, and more. You can also download the full transcript of the video in any available language (original or auto-translated). It provides valuable insights for content creators, marketers, and researchers looking to analyze video performance, metadata, and spoken content.

Features

  • Detailed Video Information: Extract comprehensive metadata about each video.
  • Thumbnail URLs: Get links to various sizes of video thumbnails.
  • Channel Details: Retrieve information about the video's channel.
  • Engagement Metrics: Capture view counts and other relevant statistics.
  • Keywords and Categories: Extract video tags and categories for better understanding of content.
  • Transcripts in Any Language: Download the full transcript in the original or any supported/translated language.
  • Customizable: Flexible configuration options to suit various scraping needs.
  • Proxy Support: Built-in proxy configuration to enhance scraping reliability and avoid blocks.
  • Scrape 35+ critical data points from any YouTube video, including:

🎯 Core Metrics

  • View counts (live/archived)
  • Engagement: Likes/Dislikes ratio, comment density
  • Monetization: Ad placements, sponsor segments
  • Performance: CTR %, retention graphs (when available)

📊 Engagement Analytics

  • Real-time subscriber deltas
  • Share tracking (platform-specific breakdown)
  • Heatmap-style interaction patterns
  • Audience demographics (age/gender distributions)

📜 Content Details

  • Multilingual Transcripts
    • Raw timestamped data
    • Clean text-only versions
    • 100+ language support (auto-translate enabled)
  • Enhanced metadata:
    • Chapters/markers analysis
    • Hashtag performance metrics
    • Cards/end screens inventory

🛠 Technical Features

  • Automatic resolution of:
    • All YouTube URL formats (including embeds/shorts)
    • Video ID extraction from complex parameters

How to Use

  1. Set Up: Ensure you have an Apify account and access to the Apify platform.
  2. Configure Input: Set the YouTube video URL(s) you want to scrape details for (see Input Configuration section).
  3. (Optional) Adjust additional parameters like concurrency, proxy settings, and transcript language.
  4. Run the Scraper: Execute the scraper on the Apify platform.
  5. Data Collection: The scraper will output detailed data about the specified YouTube video(s), including transcripts.

Input Configuration

Here's an example of how to set up the input for the YouTube Video Details Scraper:

{
"startUrls": [
{
"url": "https://www.youtube.com/watch?v=K07bw2bKI8U&t=985s&ab_channel=CohhCarnage"
}
],
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 10,
"proxy": {
"useApifyProxy": true
},
"includeTranscript": true,
"language": "en"
}

Input Fields Explanation

  • startUrls: Array of YouTube video URLs to scrape details from.
  • maxConcurrency: Maximum number of pages processed simultaneously (default: 10).
  • minConcurrency: Minimum number of pages processed simultaneously (default: 1).
  • maxRequestRetries: Number of retries for failed requests (default: 10).
  • proxy: Proxy configuration for enhanced scraping reliability.
  • includeTranscript: Whether to include the transcript of the video in the output.
  • language: Select the language for the transcript. If not available, will fall back to the default language.

Output Structure

The output data includes detailed information about each video. Here's a sample of the structure:

{
"transcript": [
{
"text": "People often say to me, Julien, that I have a",
"startMs": "40",
"endMs": "3320",
"startTimeText": "0:00"
},
{
"text": "great level in the final. Well in this",
"startMs": "1680",
"endMs": "5759",
"startTimeText": "0:01"
},
{
"text": "video, I'm going to show you some",
"startMs": "3320",
"endMs": "7759",
"startTimeText": "0:03"
},
{
"text": "super important techniques to become an",
"startMs": "5759",
"endMs": "11480",
"startTimeText": "0:05"
},
...
],
"transcript_only_text": "People often say to me, Julien, that I have a great level in the final. Well in this video, I'm going to show you some super important techniques to become an endgame god and get past 1300 hoo in chess. The first technique, of course, is to create a passed pawn. There you see the C5 pawn, it could very quickly go to queen. For what ? because it is supported by the rook on C1 and in addition this bishop H3 also controls the final destination square for the pawn to turn into a queen. But unfortunately, this pawn ....",
"videoId": "zHhIJPR0JXw",
"title": "8 tactiques pour gagner tes finales et passer 1300 Elo aux échecs !! (Partie 1)",
"lengthSeconds": "669",
"keywords": [
"juliensong",
"chess",
"échecs",
"jeu d'échecs",
"jeu d'échec",
"julien song",
"julien song échecs"
],
"channelId": "UC3FXGTXQqx9cc2T7EDhslIQ",
"isOwnerViewing": false,
"shortDescription": "👉 Rejoins la communauté et obtiens des conseils pour progresser aux échecs sur https://liens.juliensong.com !",
"isCrawlable": true,
"thumbnail": {
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/zHhIJPR0JXw/hqdefault.jpg?sqp=-oaymwEmCKgBEF5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLCF3TcZfQvL1NgqH1IlapyFY4hbvQ",
"width": 168,
"height": 94
},
{
"url": "https://i.ytimg.com/vi/zHhIJPR0JXw/hqdefault.jpg?sqp=-oaymwEmCMQBEG5IWvKriqkDGQgBFQAAiEIYAdgBAeIBCggYEAIYBjgBQAE=&rs=AOn4CLAPxdGDt4Yw4roHAJQRWoMn_8F4Bw",
"width": 196,
"height": 110
},
{
"url": "https://i.ytimg.com/vi/zHhIJPR0JXw/hqdefault.jpg?sqp=-oaymwEnCPYBEIoBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBBNhgBu8ok7j-yUsCiOH2DHx3txw",
"width": 246,
"height": 138
},
{
"url": "https://i.ytimg.com/vi/zHhIJPR0JXw/hqdefault.jpg?sqp=-oaymwEnCNACELwBSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDpeZd7xoTMNMRDnNg5rwnQtx791Q",
"width": 336,
"height": 188
},
{
"url": "https://i.ytimg.com/vi_webp/zHhIJPR0JXw/maxresdefault.webp",
"width": 1920,
"height": 1080
}
]
},
"allowRatings": true,
"viewCount": "45641",
"author": "Julien Song",
"isPrivate": false,
"isUnpluggedCorpus": false,
"isLiveContent": false,
"microformat": {
"playerMicroformatRenderer": {
"thumbnail": {
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/zHhIJPR0JXw/maxresdefault.jpg",
"width": 1280,
"height": 720
}
]
},
"embed": {
"iframeUrl": "https://www.youtube.com/embed/zHhIJPR0JXw?start=985",
"width": 1280,
"height": 720
},
"title": {
"simpleText": "8 tactiques pour gagner tes finales et passer 1300 Elo aux échecs !! (Partie 1)"
},
"description": {
"simpleText": "👉 Rejoins la communauté et obtiens des conseils pour progresser aux échecs sur https://liens.juliensong.com !"
},
"lengthSeconds": "670",
"ownerProfileUrl": "http://www.youtube.com/@JulienSong",
"externalChannelId": "UC3FXGTXQqx9cc2T7EDhslIQ",
"isFamilySafe": true,
"isUnlisted": false,
"hasYpcMetadata": false,
"viewCount": "45641",
"category": "Entertainment",
"publishDate": "2025-05-16T10:01:23-07:00",
"ownerChannelName": "Julien Song",
"uploadDate": "2025-05-16T10:01:23-07:00",
"isShortsEligible": false,
"externalVideoId": "zHhIJPR0JXw",
"likeCount": "2442",
"canonicalUrl": "https://www.youtube.com/watch?v=zHhIJPR0JXw"
}
},
"captions": {
"playerCaptionsTracklistRenderer": {
"captionTracks": [
{
"baseUrl": "https://www.youtube.com/api/timedtext?v=zHhIJPR0JXw&ei=gqo1aLfZNqSKsfIPv-K4EA&caps=asr&opi=112496729&xoaf=5&hl=hr&ip=0.0.0.0&ipbits=0&expire=1748372722&sparams=ip,ipbits,expire,v,ei,caps,opi,xoaf&signature=CF59F9732960052B69E2CB68698B03C71E4AD902.7F2796A9277B07D258F169962040E4EA0FA20853&key=yt8&kind=asr&lang=fr&variant=punctuated",
"name": {
"simpleText": "Francuski (automatski generirano)"
},
"vssId": "a.fr",
"languageCode": "fr",
"kind": "asr",
"isTranslatable": true,
"trackName": ""
}
],
"audioTracks": [
{
"captionTrackIndices": [
0
],
"audioTrackId": "fr-FR.4"
},
{
"captionTrackIndices": [
0
],
"audioTrackId": "en-US.10"
}
],
"defaultAudioTrackIndex": 0
}
}
}
]

Output Fields Explanation

The scraper returns a comprehensive set of data points for each video. Here's a detailed breakdown of the output fields:

Transcript Data

  • transcript: Array of transcript segments, each containing:
    • text: The spoken text for that segment
    • startMs: Start time in milliseconds from the beginning of the video
    • endMs: End time in milliseconds
    • startTimeText: Human-readable timestamp (e.g., "1:23")
  • transcript_only_text: The complete transcript as a single, continuous plain text string, with timestamps removed for easy reading and processing.

Core Video Information

  • videoId: Unique 11-character identifier for the YouTube video.
  • title: The full title of the video as displayed on YouTube.
  • lengthSeconds: Total duration of the video in seconds.
  • keywords: Array of relevant keywords and tags associated with the video.
  • channelId: Unique identifier for the channel that published the video.
  • author: Display name of the channel or content creator.
  • shortDescription: The full description of the video as shown on YouTube.
  • isPrivate: Boolean indicating if the video is set to private.
  • isLiveContent: Boolean indicating if the video is or was a live stream.
  • viewCount: Total number of views the video has received.

Thumbnails

  • thumbnail: Object containing various sizes of thumbnail images for the video.
    • thumbnails: Array of objects, each containing:
      • url: Direct URL to the thumbnail image
      • width: Width in pixels
      • height: Height in pixels

Additional Metadata

  • allowRatings: Boolean indicating if viewers can rate (like/dislike) the video.
  • isCrawlable: Boolean indicating if the video is indexable by search engines.
  • isOwnerViewing: Boolean indicating if the video owner is viewing the video (typically false for scraped data).
  • isUnpluggedCorpus: Internal YouTube flag (usually false).

Microformat Data

  • microformat: Object containing YouTube's internal metadata:
    • playerMicroformatRenderer: Contains:
      • thumbnail: Main thumbnail image details
      • embed: Embed configuration (iframe URL, dimensions)
      • title: Video title
      • description: Video description
      • lengthSeconds: Video duration
      • ownerProfileUrl: URL to the channel's profile
      • externalChannelId: Channel ID
      • isFamilySafe: Boolean indicating family-friendly content
      • isUnlisted: Boolean for unlisted videos
      • hasYpcMetadata: Boolean for YouTube Premium content
      • category: Video category (e.g., "Education", "Gaming")
      • publishDate: ISO 8601 timestamp of when the video was published
      • ownerChannelName: Channel name
      • uploadDate: ISO 8601 timestamp of when the video was uploaded
      • isShortsEligible: Boolean for YouTube Shorts eligibility
      • externalVideoId: Video ID
      • likeCount: Number of likes (when available)

Captions and Subtitles

  • captions: Object containing caption information:
    • playerCaptionsTracklistRenderer: Contains:
      • captionTracks: Array of available caption tracks:
        • baseUrl: Endpoint to fetch captions
        • name: Track name
        • vssId: Internal ID
        • languageCode: ISO 639-1 language code
        • kind: Type (e.g., "asr" for auto-generated)
        • isTranslatable: Boolean for translation support
        • trackName: Display name of the track
      • audioTracks: Array of available audio tracks
      • defaultAudioTrackIndex: Index of the default audio track
      • translationLanguages: Array of supported translation languages:
        • languageCode: ISO 639-1 code
        • languageName: Object with simpleText containing the language name

Support

Additional Services