Youtube Transcript Scraper avatar

Youtube Transcript Scraper

Pricing

Pay per usage

Go to Apify Store
Youtube Transcript Scraper

Youtube Transcript Scraper

Extract YouTube transcripts with timestamps, plus title, channel, views, likes, duration and keywords. Paste video links or IDs and export clean JSON, CSV or Excel.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

BigiByte

BigiByte

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

YouTube Transcript Scraper: Get Video Transcripts with Timestamps

YouTube to Text Conversion

YouTube Transcript Scraper turns any YouTube video into clean, searchable text. Give it a link or a video ID and it returns the full transcript, a version with timestamps on every line, and the details you usually have to click around for: title, channel, publish date, length, views, likes, tags and thumbnail.

It reads every common link format, including Shorts, youtu.be links, embeds, live links and bare 11-character IDs. If a video has no captions, you still get a result that says so instead of a crashed run.

Use cases

  • Repurpose videos into written content: turn a talk, podcast or tutorial into a blog post, newsletter or social thread without typing it out
  • Feed AI tools and LLM pipelines: send transcripts to summarizers, chatbots, RAG indexes or training sets
  • Keyword and SEO research: see the exact words top channels in your niche use on camera
  • Subtitles, translation and accessibility: start from timestamped text instead of a blank file
  • Content analysis: extract and analyze what's said in product demos, tutorials, or educational videos

What data does this YouTube transcript extractor return?

The video result includes:

  • The transcript three ways: one plain text block, one text block with [mm:ss] timestamps, and an optional list of lines with start and end times in seconds
  • Video details: title, description, category, tags, publish date, duration in seconds and as mm:ss, view count, like count, thumbnail
  • Channel details: channel name, channel ID and channel URL
  • Language info: the caption track used, its language code, and every caption language the video offers
  • Handy counts: word count and number of transcript lines
  • An error field: null when things worked, a short reason when they did not

Input

FieldTypeDefaultWhat it does
videostringrequiredYouTube video URL or ID
includeSegmentsbooleantrueAdd the list of timed transcript lines
includeTimestampedTextbooleantrueAdd the transcript as text with [mm:ss] before each line
requestTimeoutSecsinteger60Seconds to wait for the request
proxyConfigurationobjectApify Proxy (on)Proxy type and location to use for requests
https://www.youtube.com/watch?v=aiS5qH7UMX4
https://youtu.be/aiS5qH7UMX4
https://www.youtube.com/shorts/aqz-KE-bpKQ
https://www.youtube.com/embed/aiS5qH7UMX4
https://www.youtube.com/live/aiS5qH7UMX4
https://m.youtube.com/watch?v=aiS5qH7UMX4
aiS5qH7UMX4

Example inputs

Basic: One video, everything included

{
"video": "https://www.youtube.com/watch?v=aiS5qH7UMX4"
}

Plain text only (smaller output)

Good for AI tools and spreadsheets.

{
"video": "https://www.youtube.com/watch?v=aiS5qH7UMX4",
"includeSegments": false,
"includeTimestampedText": false
}

Using a bare video ID

{
"video": "aiS5qH7UMX4"
}

Output

A successful video (trimmed)

{
"videoId": "aiS5qH7UMX4",
"url": "https://www.youtube.com/watch?v=aiS5qH7UMX4",
"input": "https://www.youtube.com/watch?v=aiS5qH7UMX4",
"title": "Sell Anywhere (SELL TO ANY CUSTOMER in 2018)",
"channelName": "Alex Hormozi",
"channelId": "UCUyDOdBWhC1MCxEjC46d-zw",
"channelUrl": "http://www.youtube.com/@AlexHormozi",
"description": "Download your free scaling roadmap here...",
"category": "People & Blogs",
"keywords": ["sell anywhere", "sales skills", "gym sales"],
"publishedAt": "2018-07-20T12:48:49-07:00",
"durationSeconds": 83,
"durationText": "01:23",
"viewCount": 457271,
"likeCount": 3704,
"thumbnailUrl": "https://i.ytimg.com/vi/aiS5qH7UMX4/maxresdefault.jpg",
"isFamilySafe": true,
"isLive": false,
"language": "English (auto-generated)",
"languageCode": "en",
"availableLanguages": [{ "label": "English (auto-generated)", "languageCode": "en" }],
"wordCount": 211,
"segmentCount": 30,
"fullTranscript": "hey guys I wanted to show you something kind of cool a little bit of a humble brag...",
"timestampedTranscript": "[00:00] hey guys I wanted to show you something\n[00:01] kind of cool a little bit of a humble\n...",
"segments": [
{ "startSeconds": 0.06, "endSeconds": 3.33, "startTime": "00:00", "text": "hey guys I wanted to show you something" },
{ "startSeconds": 1.56, "endSeconds": 5.97, "startTime": "00:01", "text": "kind of cool a little bit of a humble" }
],
"scrapedAt": "2026-10-11T15:04:04.979314+00:00",
"error": null
}

A video without captions

{
"videoId": "zzzzzzzzzzz",
"url": "https://www.youtube.com/watch?v=zzzzzzzzzzz",
"title": null,
"segmentCount": 0,
"fullTranscript": null,
"segments": [],
"error": "Transcript not available"
}
{
"videoId": null,
"input": "not a url",
"error": "Not a valid YouTube URL or video ID"
}

Output field reference

FieldTypeDescription
videoIdstring11-character video ID
urlstringCanonical watch URL
inputstringWhat you typed for this video
titlestringVideo title. The JSON row keeps this name.
videoTitlestringSame title. This is the Title column on the Output table.
channelNamestringChannel name
channelIdstringChannel ID
channelUrlstringLink to the channel
descriptionstringFull video description. The JSON row keeps this name.
videoDescriptionstringSame description. The Output table can show this column.
categorystringYouTube category
keywordsarrayVideo tags
publishedAtstringPublish date and time, ISO 8601
durationSecondsintegerLength in seconds
durationTextstringLength as mm:ss or hh:mm:ss
viewCountintegerViews when scraped
likeCountintegerLikes when scraped
thumbnailUrlstringLargest available thumbnail
isFamilySafebooleanFamily-safe flag
isLivebooleanWhether it is a live stream
languagestringName of the caption track used
languageCodestringLanguage code of that track
availableLanguagesarrayEvery caption track on the video
wordCountintegerWords in the transcript
segmentCountintegerLines in the transcript
fullTranscriptstringThe whole transcript. The Output overview shows this as Description.
timestampedTranscriptstringThe transcript with [mm:ss] on each line
segmentsarrayLines with startSeconds, endSeconds, startTime, text
scrapedAtstringWhen the row was collected (UTC)
errorstringReason for failure, or null

Some fields can be null when YouTube does not show them for a video, for example like counts on videos where likes are hidden.

Export the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

How it works

  1. The input is cleaned up and turned into a video ID. Invalid input gets an error result right away.
  2. The video is fetched through Apify Proxy.
  3. The video data is extracted and structured as a single result, whether it worked or not.

Integrations

Connect YouTube Transcript Scraper to Make, Zapier, n8n, Google Sheets, Slack, Airtable or your own webhook with Apify integrations. Call the actor from Python or JavaScript with the Apify API client to automate transcript extraction.


Need a Custom Scraper?

Custom Scrapers for Your SaaS or AI Tools

Building a SaaS or AI tool that needs custom data extraction? We create production-ready scrapers tailored to your needs.

Contact us: bigibyte.com


If you need YouTube transcripts with timestamps and real video data, ready for spreadsheets and AI tools, this actor delivers clean, structured results.