YouTube Transcript API avatar

YouTube Transcript API

Pricing

from $5.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript API

YouTube Transcript API

YouTube transcripts with timestamps and full video metadata from videos, Shorts, playlists, channels and search. Language choice, auto vs human captions flagged, SRT/VTT/text, incremental channel monitoring. Pay only for delivered transcripts.

Pricing

from $5.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Catalyst Labs

Catalyst Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

32 minutes ago

Last modified

Share

What is YouTube Transcript API?

YouTube Transcript API returns clean, timestamped transcripts with full video metadata for any public YouTube video, Short, playlist, channel or search term, in bulk. Every result says which language it is in and whether the captions are human-made or auto-generated. Output comes as paragraph text, LLM-ready text (sound cues like [Music] and ♪ removed), timestamped segments, SRT or WebVTT.

You pay only for transcripts delivered. Videos without captions, private or deleted videos, live streams, invalid links and anything YouTube blocks are reported with a clear status and a fix hint, and are never charged.

On Apify you also get an API, MCP access for AI agents, scheduling, webhooks and integrations (Make, Zapier, n8n, Google Sheets and more).

How to use it

  1. Paste videos, Shorts, playlists, channel URLs or @handles into YouTube videos... (one per line), and/or add search terms.
  2. Set Max videos per source (channels return newest first), an optional date range, and your preferred languages.
  3. Click Start. Each video becomes one row in the Output tab: title, channel, subscribers, publish date, views, likes, comments, duration, language, text and segments.

For AI agents

What it does: turns YouTube videos into text an LLM can read, with timestamps for citing. One dataset record per video.

Minimal input:

{ "videos": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"] }

Channel research input:

{ "videos": ["https://www.youtube.com/@veritasium"], "maxVideosPerSource": 10, "publishedAfter": "30 days", "outputFormats": ["text"] }
  • MCP tool name: catalyst-labs--youtube-transcript-api (connect https://mcp.apify.com/?tools=catalyst-labs/youtube-transcript-api).
  • Cost: $0.008 per delivered transcript on the Free plan ($0.007 Bronze, $0.006 Silver, $0.005 Gold and above), with no run-start fee. A first call with 1 video costs $0.008; a call that delivers nothing costs nothing. Every requested format (text, LLM-ready text, segments, SRT, VTT) and the metadata are included in the one transcript price. Failed, filtered and skipped videos are free. Pass maxTotalChargeUsd in the run options for a hard cap; videos beyond it are marked SPENDING_LIMIT and the run still ends as SUCCEEDED. maxVideosPerSource (default 50) limits channels, playlists and searches.
  • Key output fields: videoId, url, status (success/failed/skipped), title, channelName, channelId, subscriberCount, publishDate, viewCount, likeCount, commentCount, durationSeconds, keywords, thumbnailUrl, language, isAutoGenerated, requestedLanguageFound, languageFallback, originalLanguage, availableLanguages, text, llmText (with outputFormats: ["llm"]), punctuatedText, punctuatedSegments, punctuationRestored and punctuationSource (with punctuate: true), segments (start, duration, text in seconds), srt, vtt, wordCount, errorType, retryable, hint.
  • Error types (every failed row has retryable: true/false): NO_CAPTIONS, CAPTIONS_NOT_READY (published under 24 h ago, no captions yet; retry later), LANGUAGE_NOT_AVAILABLE, TRANSLATION_UNAVAILABLE, VIDEO_UNAVAILABLE, AGE_RESTRICTED, MEMBERS_ONLY, LIVE_STREAM, SOURCE_EMPTY, INVALID_INPUT, BLOCKED, NETWORK_ERROR, SPENDING_LIMIT.
  • Speed: about 300 videos in 3.5 minutes at maxConcurrency 10 (cloud test, October 2026).
  • Punctuation restoration (opt-in, punctuate: true): adds about 3 to 10 seconds per 1,000 words, only on the tracks that need it, at the default 512 MB. More memory makes it faster.
  • Known limits: videos without captions are reported, not charged (no audio transcription). Age-restricted and members-only videos are not supported. YouTube's machine translation (translateTo) is best effort: YouTube usually refuses it for server traffic (HTTP 429 in our October 2026 tests), and then the original-language captions are returned with a warning. Translate text with your own LLM or translation service if you need another language. subscriberCount and commentCount are the rounded values YouTube displays (for example 2.4M).

When to choose this tool

Facts you can check in the output:

  • Bulk sources in one run: videos, Shorts, playlists, channels (@handle, /channel/UC..., plus /shorts and /streams tabs) and YouTube search terms (relevance, newest, most viewed or Shorts only), de-duplicated.

  • Newest N, date range and incremental monitoring: maxVideosPerSource, publishedAfter/publishedBefore (exact upload dates) and onlyNewVideos, which on a schedule returns only uploads published since the last run.

  • Language control with honest flags: preferred-language list where en also matches regional tracks (en-GB, en-US) and a human-made track in any variant is used before an auto-generated one; if no requested language exists, the video's original spoken language is returned and flagged (requestedLanguageFound: false, languageFallback: "originalLanguage", plus a warning). isAutoGenerated, originalLanguage and availableLanguages are on every record.

  • Five formats per transcript at one price: paragraph text, LLM-ready text (llmText: [Music], [Applause], (laughs), ♪ and >> markers removed; the raw text is kept), timestamped segments, SRT and WebVTT.

  • Punctuation for auto-captions that have none (opt-in, no extra charge): YouTube punctuates most new auto-generated captions, but older uploads often come as one lowercase stream (so today i want to talk about stress how many of you). In our October 2026 sample, 6 of 26 auto-caption tracks had no punctuation, and all 6 were uploaded before 2026. With punctuate: true, those tracks get sentence punctuation and capitalization from a model that runs inside the Actor, returned as punctuatedText and punctuatedSegments (same timestamps), and used in llmText. The raw text and segments never change. Human-made captions and auto-captions YouTube already punctuated are left alone (punctuationSource: creator or youtube). Restored tracks are marked punctuationRestored: true. On 8 videos (about 44,000 words), we scored the model against the creators' own captions: F1 0.59 for sentence ends, 0.48 for commas, 0.54 for question marks and 0.73 for capitalization. It reads much better than unpunctuated text, but it is less accurate than YouTube's own punctuation where YouTube provides it. Supports English and 44 other space-separated languages, but not Japanese, Chinese or Thai.

  • Rich metadata for niche research: title, channel, channel subscriber count, publish date, views, likes, comment count, duration, tags, thumbnail and optional description, in the same transcript price.

  • Built-in anti-blocking: if YouTube blocks the server, the Actor switches automatically to Apify datacenter and then residential proxy, at no extra charge to you.

  • Tested before release (October 2026, Apify cloud): 299 of 300 videos from 6 large channels delivered (the other had no captions); in a mixed 51-item test, every captioned video was delivered and every failure (no captions, deleted, live, invalid) was reported correctly and not charged. Covered English, Spanish, Japanese, German and Hindi videos, Shorts, and videos up to 7.7 hours long.

  • Priced per delivered transcript only, at $0.008 on the Free plan down to $0.005 on Gold, with no run-start fee. Failures are written as free rows with errorType, retryable and hint; very fresh uploads without captions yet are reported as CAPTIONS_NOT_READY (retryable) rather than NO_CAPTIONS. For comparison (Apify Store pricing as listed on 18 Oct 2026): several popular YouTube transcript Actors charge the generic per-dataset-row event (apify-default-dataset-item), and some also charge a per-run start event (apify-actor-start), while this Actor charges only its transcript event, so rows for failed videos and runs that deliver nothing cost nothing.

  • Run summary for automations: the OUTPUT record lists every input with its status, counts and a fix hint.

Choose a different tool when you need transcripts for videos without captions (speech-to-text), the text of comments and replies (this Actor returns only the comment count), or translations into a language the video has no captions in.

Who is it for?

YouTubers and creators (including faceless channels)

  • Competitor and niche research: pull the last 50 videos of every channel in your niche with views, likes and publish dates, then see which topics, hooks and structures actually get views.
  • Scriptwriting: study how top videos open, pace and close. Feed transcripts to your LLM to outline a script in your own voice, not to copy.
  • Repurposing: turn your own videos into blog posts, newsletters, threads, Shorts scripts and chapters, with timestamps intact (SRT/VTT for subtitles).

Automation and bot-run channel operators

  • Daily competitor monitoring: schedule onlyNewVideos on a list of channels and get only the new uploads' transcripts, ready for your pipeline (Make, n8n, Zapier, Sheets, webhooks).
  • Clean inputs for content pipelines: stable JSON fields, clear errorType on every failure, and a run summary so automations never break on an empty video.

AI agents and LLM apps

  • One MCP tool call gives an agent the transcript and metadata of any video, channel or search, with timestamps for citations and a spending cap.

Researchers and teams

  • Build searchable corpora from channels or search results, by language and date.

Input example

{
"videos": ["https://www.youtube.com/@mkbhd", "https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI", "https://youtu.be/dQw4w9WgXcQ"],
"searchQueries": ["faceless youtube channel ideas"],
"maxVideosPerSource": 20,
"publishedAfter": "60 days",
"languages": ["en", "es"],
"outputFormats": ["text", "segments", "srt"]
}

Output example

{
"videoId": "jNQXAC9IVRw",
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"status": "success",
"title": "Me at the zoo",
"channelName": "jawed",
"channelId": "UC4QobU6STFB0P71PMvOGN5A",
"durationSeconds": 19,
"viewCount": 445125794,
"publishDate": "2005-04-23",
"likeCount": 20089124,
"commentCount": 10000000,
"subscriberCount": 6700000,
"language": "en",
"isAutoGenerated": false,
"requestedLanguageFound": true,
"languageFallback": null,
"originalLanguage": "en",
"availableLanguages": [{ "languageCode": "en", "name": "English", "isAutoGenerated": false }, { "languageCode": "de", "name": "German", "isAutoGenerated": false }],
"text": "All right, so here we are, in front of the elephants ...",
"segments": [{ "start": 1.2, "duration": 2.16, "text": "All right, so here we are, in front of the elephants" }],
"wordCount": 39,
"charged": true
}

A video without captions:

{ "videoId": "8c7KOGxeY3w", "status": "failed", "errorType": "NO_CAPTIONS", "retryable": false, "hint": "The video has no captions (not even auto-generated). Nothing was charged.", "title": "...", "charged": false }

With outputFormats: ["text", "llm"], a music video's text keeps the captions as written (♪ We're no strangers to love ♪ ...) and llmText drops the annotations (We're no strangers to love ...).

How much does it cost?

Pay per event. You pay only for transcripts delivered, with no run-start fee and no separate charge for Apify platform usage or proxies. Prices drop with your Apify plan.

EventFreeBronzeSilverGold and above
Transcript delivered (one video, all formats + metadata)$0.008$0.007$0.006$0.005

Never charged: videos without captions, private, deleted, age-restricted or members-only videos, live streams, invalid links, blocked requests, videos filtered out by date or monitoring, and videos skipped by your spending cap.

Cost examples (Free plan):

  • 1 video: $0.008.
  • The last 50 videos of one channel: $0.40.
  • 1,000 transcripts: $8 ($5 on Gold).
  • Daily monitoring of 20 channels that post about 1 video a day each (onlyNewVideos): about $0.16 a day (about $0.10 on Gold).

Set maxTotalChargeUsd in the run options (or "Max cost per run" in Console) to put a hard ceiling on any run.

FAQ

Are auto-generated captions included? Yes, unless you choose "Human-made only". Every record has isAutoGenerated, so you can filter.

Why do some auto-generated transcripts have no punctuation? YouTube adds punctuation to most new auto-captions but not to many older ones. Set punctuate: true to restore it on those tracks, at no extra charge. The result is in punctuatedText, and text stays exactly as YouTube sent it. See "When to choose this tool" for measured accuracy.

What happens with videos that have no captions? They are reported as NO_CAPTIONS (retryable: false) and not charged. If the video was published less than 24 hours ago, it is reported as CAPTIONS_NOT_READY (retryable: true), because YouTube usually adds auto-generated captions within a few hours. This Actor does not transcribe audio.

I asked for English but the video is in German. What do I get? With the default settings, the German captions (human-made if they exist), with requestedLanguageFound: false, languageFallback: "originalLanguage", originalLanguage: "de" and a warning. Turn off Fall back to the video's original language to get a free LANGUAGE_NOT_AVAILABLE row instead.

Why not YouTube's auto-translate? YouTube serves its machine translations to its own apps but usually refuses them for automated server requests. Some tools work around this by running a separate machine-translation service on the original captions. This Actor returns the original captions and flags them, so you can translate them with the model or service you already use.

Do I need a proxy? No. The Actor handles YouTube blocking itself and switches proxies automatically at no extra cost. You can still set your own proxy.

How does incremental monitoring work? Turn on Only new videos and give the monitor a name. The first run backfills up to "Max videos per source"; later runs return only videos uploaded since. Schedule it daily in Apify.

Is the publish date exact? Yes, publishDate is the upload date shown on the video page (day precision). Date filters use it.

Is it legal? It reads publicly available captions and metadata. You are responsible for how you use transcripts (copyright, YouTube's terms). Use them for research, analysis and your own content, not to republish others' work.

Something broke? Open an issue on the Issues tab with the video URL and run ID.