YouTube Video Transcript avatar
YouTube Video Transcript

Pricing

$5.00 / 1,000 results

Go to Apify Store
YouTube Video Transcript

YouTube Video Transcript

Developed by

starvibe

starvibe

Maintained by Community

This Apify Actor extracts full transcripts (with timestamps) and metadata from YouTube videos, including title, description, upload date, views, likes, channel info, and duration

5.0 (11)

Pricing

$5.00 / 1,000 results

12

61

52

Last modified

3 hours ago

YouTube Video or Channel Transcript and Metadata Extractor

Overview

Unlock the power of YouTube video data with this Apify Actor! Effortlessly fetch transcript/subtitles and rich metadata (title, channel, view count, and more) for any YouTube video or videos from a channel. Perfect for researchers, content creators, and analysts who need structured video data without the hassle of direct scraping. Save time and get reliable, structured data straight to your Apify dataset!

Input

Provide either a YouTube video URL (for single video) or a channel URL (to fetch multiple videos). The Actor requires the following fields, defined in input_schema.json. Provide exactly one of youtube_url or channel_url; the backend will validate and ignore inapplicable fields:

FieldTypeDescriptionRequired
youtube_urlStringThe URL of the YouTube video (e.g., https://www.youtube.com/watch?v=dQw4w9WgXcQ). Use for single video fetch, paired with language.No (mutually exclusive with channel_url)
languageStringThe transcript language in ISO 639-1 format (e.g., en).No
channel_urlStringThe URL of the YouTube channel (e.g., https://www.youtube.com/@taostats or https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx). Use to fetch videos from the channel, paired with max_videos, start_date, and end_date.No (mutually exclusive with youtube_url)
max_videosIntegerMaximum number of videos to fetch from the channel (default: 10, range: 5-15). Only applicable with channel_url.No
start_dateStringStart date for filtering channel videos (Expected ISO 8601 format). Only applicable with channel_url; backend uses 30 days ago if blank. Ensure end_date >= start_date.No
end_dateStringEnd date for filtering channel videos (Expected ISO 8601 format). Only applicable with channel_url; backend uses today if blank. Ensure end_date >= start_date.No

Example Input (Single Video):

{
"youtube_url": "https://www.youtube.com/watch?v=6EeDKyS7pV8",
"language": "en"
}

Example Input (Channel Videos):

{
"channel_url": "https://www.youtube.com/@taostats",
"max_videos": 10,
"language": "en",
"start_date": "2025-08-17",
"end_date": "2025-09-16"
}

Output

The Actor saves data to the Apify dataset in a structured JSON format, as defined in dataset_schema.json. For single video, output is an array with one item; for channel, it's an array of video items. The output includes:

FieldTypeDescription
video_idStringThe unique identifier of the YouTube video.
titleStringThe title of the YouTube video.
channel_nameStringThe name of the YouTube channel.
channel_idStringThe unique identifier of the YouTube channel.
timestampIntegerThe Unix timestamp of when the video was published.
published_atStringThe UTC date and time of video upload (format: YYYY-MM-DD HH:MM:SSZ).
view_countIntegerThe number of views the video has received.
transcriptArrayAn array of transcript segments, each with text, start, duration, language, and language_code.
urlStringThe URL of the YouTube video.
languageStringThe primary language of the transcript (e.g., en for English).
duration_secondsIntegerThe total duration of the video in seconds.

Sample Output (TED Talk Video in English):

[
{
"channel_id": "UC7TghOL755nBk7HelHoi9LQ",
"channel_name": "CoinDesk",
"comment_count": 1,
"duration_seconds": 86,
"language": "en",
"like_count": 14,
"timestamp": 1759059043,
"title": "This Bitcoin developer is on a power trip",
"transcript": [
{
"end": 2.639,
"start": 0.56,
"text": "Then the last one which is kind of the"
},
{
"end": 4.64,
"start": 2.639,
"text": "one that I kind of but my head against"
},
{
"end": 7.359,
"start": 4.64,
"text": "Luke with over the past three years was"
},
{
"end": 10.24,
"start": 7.359,
"text": "the BIPS repo. So what happened is"
},
{
"end": 12.16,
"start": 10.24,
"text": "because Luke is such a difficult person"
},
{
"end": 14.639,
"start": 12.16,
"text": "to work with and he loves having"
},
{
"end": 18,
"start": 14.639,
"text": "positions of authority when he was uh"
},
{
"end": 21.279,
"start": 18,
"text": "one of the uh editors of the BIPS the"
},
{
"end": 23.119,
"start": 21.279,
"text": "Bitcoin improvement proposal repo which"
},
{
"end": 24.72,
"start": 23.119,
"text": "is where people submit new ideas which"
},
{
"end": 26.8,
"start": 24.72,
"text": "are then cataloged and numbered. he"
},
{
"end": 29.439,
"start": 26.8,
"text": "became so difficult to work with um and"
},
{
"end": 31.519,
"start": 29.439,
"text": "coupled with people just naturally kind"
},
{
"end": 35.2,
"start": 31.519,
"text": "of leaving the space that um after a few"
},
{
"end": 38.64,
"start": 35.2,
"text": "years Luke found himself originally one"
},
{
"end": 41.2,
"start": 38.64,
"text": "of several BIP editors now the only BIP"
},
{
"end": 44.559,
"start": 41.2,
"text": "editor from 2023 till I think mid24 and"
},
{
"end": 49.28,
"start": 44.559,
"text": "during this time Luke refused to give uh"
},
{
"end": 51.12,
"start": 49.28,
"text": "BIP numbers to certain proposals"
},
{
"end": 54.8,
"start": 51.12,
"text": "including popular ones like like OPC cat"
},
{
"end": 57.6,
"start": 54.8,
"text": "and there is a well docu documented um"
},
{
"end": 59.76,
"start": 57.6,
"text": "push and pull an argument um people"
},
{
"end": 62.079,
"start": 59.76,
"text": "saying Luke please just give a number"
},
{
"end": 64.32,
"start": 62.079,
"text": "and Luke saying that he doesn't think"
},
{
"end": 67.2,
"start": 64.32,
"text": "these are serious proposals that is off"
},
{
"end": 69.84,
"start": 67.2,
"text": "that is a very very false and uh"
},
{
"end": 72.4,
"start": 69.84,
"text": "ridiculous statement to make then when"
},
{
"end": 75.76,
"start": 72.4,
"text": "BIP editors were added uh a lot of the"
},
{
"end": 78.88,
"start": 75.76,
"text": "uh BIP numbers were uh they started a"
},
{
"end": 80.799,
"start": 78.88,
"text": "lot of the the process resumed again but"
},
{
"end": 83.36,
"start": 80.799,
"text": "it basically required taking it uh away"
},
{
"end": 87.84,
"start": 83.36,
"text": "from just Luke's sole free."
}
],
"published_at": "2025-09-28T11:30:43Z",
"url": "https://www.youtube.com/watch?v=sGYS42SjRkg",
"video_id": "sGYS42SjRkg",
"view_count": 730,
"geo_restrict": null,
"status": "success",
"message": "Successfully fetched the transcript for the video with ID 'sGYS42SjRkg'",
"available_languages": [
"English (auto-generated)"
],
"selected_language": "English (auto-generated)",
"is_auto_generated": true,
"description": "🎧 Catch the latest episode of 'BITCOIN SEASON 2: Inside the Mind of Luke Dashjr, Bitcoin's Most Polarizing Developer,' in partnership with Blockspace Media!",
"thumbnail": "https://i.ytimg.com/vi/sGYS42SjRkg/maxresdefault.jpg"
}
]

Why Use This Actor?

  • Efficiency: Get YouTube video or channel data in seconds via your internal API.
  • Flexibility: Works with any API endpoint that returns structured JSON data, supporting single videos or channel fetches.
  • Reliability: Built-in validation and logging ensure robust performance.
  • Scalability: Easily integrate with Apify's ecosystem for data processing and export.