YouTube Transcript Scraper: Subtitles, Captions, Playlists avatar

YouTube Transcript Scraper: Subtitles, Captions, Playlists

Pricing

$3.00 / 1,000 transcript scrapeds

Go to Apify Store
YouTube Transcript Scraper: Subtitles, Captions, Playlists

YouTube Transcript Scraper: Subtitles, Captions, Playlists

Bulk-extract YouTube transcripts (manual or auto captions) with timestamps as text, SRT, VTT or JSON, in the original language or auto-translated. Videos, Shorts & playlists; includes title, channel, duration, views, publish date. $3 per 1,000 videos.

Pricing

$3.00 / 1,000 transcript scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

2

Monthly active users

an hour ago

Last modified

Categories

Features

Limited permissions

Share

YouTube Transcript Scraper

YouTube Transcript Scraper downloads the transcript of YouTube videos, Shorts and whole playlists, from manually created subtitles or from YouTube's auto-generated captions. Each video comes back as one JSON item with the transcript as plain text, timestamped segments, SRT or WebVTT, plus video metadata such as title, channel, duration, views and publish date. It costs $3 per 1,000 transcripts, and videos without a usable transcript are not charged.

No YouTube Data API key is needed and there is no quota.

Features

  • Convert a YouTube video to text: the full transcript as one plain text field, with a word count.
  • Get a YouTube transcript with timestamps as JSON segments (start, duration, text).
  • Download YouTube subtitles as SRT or VTT, ready for video editors and players.
  • Download transcripts for a whole YouTube playlist by pasting the playlist URL or ID.
  • Translate a YouTube transcript to English (or any language code) with YouTube's own caption translation through translateTo.
  • Choose the transcript language: give preferred language codes in order; manual captions are preferred over auto-generated ones within a language.
  • Lists every caption track a video has in availableLanguages, with language code, name, whether it is auto-generated and whether it is translatable.

Use cases

  • RAG and LLM apps: build a knowledge base from a channel's or playlist's videos, then summarise, search or answer questions over it.
  • Content repurposing: turn videos into blog posts, newsletters, show notes or social posts.
  • Research and monitoring: search transcripts for brand or keyword mentions, and analyse what competitors say in their videos.
  • Accessibility and localisation: SRT and VTT files in the original language or translated.
  • Finding a moment in a video: search the timestamped segments for a word and jump to that second.

Input

{
"videoUrls": [
"https://www.youtube.com/watch?v=aircAruvnKk",
"https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"
],
"languages": ["en", "de"],
"fallbackToAnyLanguage": true,
"translateTo": "en",
"outputFormats": ["text", "segments", "srt"],
"includeMetadata": true,
"maxVideosPerPlaylist": 50
}
FieldTypeDefaultWhat it does
videoUrlsarrayrequiredVideo URLs (watch, youtu.be, Shorts, embed, live), bare 11-character video IDs, playlist URLs or playlist IDs.
languagesarray["en"]Preferred language codes in order. Leave empty to take the first track.
fallbackToAnyLanguagebooleantrueIf no preferred language exists, use the first available track.
translateTostringnoneHave YouTube translate the transcript into this language code.
outputFormatsarray["text", "segments"]Any of text, segments, srt, vtt.
includeMetadatabooleantrueAdd title, description, channel, duration, views, publish date, keywords, thumbnail and category.
maxVideosPerPlaylistinteger0Limit when expanding playlists; 0 means all.
concurrencyinteger5Videos processed in parallel, 1 to 20.
proxyConfigurationobjectno proxyOptional Apify Proxy settings.

Output

{
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"source": "https://www.youtube.com/watch?v=aircAruvnKk",
"scrapedAt": "2026-09-25T09:12:40.118Z",
"title": "But what is a neural network? | Deep learning chapter 1",
"description": "What are the neurons, why are there layers …",
"channelName": "3Blue1Brown",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"durationSeconds": 1104,
"viewCount": 18923411,
"publishDate": "2017-10-05",
"uploadDate": "2017-10-05",
"category": "Education",
"keywords": ["neural networks", "deep learning"],
"isLive": false,
"thumbnail": "https://i.ytimg.com/vi/aircAruvnKk/sddefault.jpg",
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"translatedTo": null,
"availableLanguages": [
{ "language": "en", "name": "English", "autoGenerated": false, "translatable": true },
{ "language": "de", "name": "German", "autoGenerated": false, "translatable": true }
],
"segmentCount": 304,
"wordCount": 3120,
"text": "Here is a 28 by 28 pixel image …",
"segments": [
{ "start": 4.2, "duration": 3.1, "text": "Here is a 28 by 28 pixel image" }
],
"srt": "1\n00:00:04,200 --> 00:00:07,300\nHere is a 28 by 28 pixel image\n"
}

Only the formats listed in outputFormats are included. With includeMetadata off, the item keeps only title and channelName from the metadata.

Videos without a usable transcript come back with an error field and are not charged:

  • NO_CAPTIONS: the video has no caption tracks at all.
  • NO_MATCHING_LANGUAGE: none of your languages exist and fallbackToAnyLanguage is off. availableLanguages shows what the video does have.
  • A playability status such as LOGIN_REQUIRED or UNPLAYABLE, followed by YouTube's reason, for private, removed or restricted videos.
  • PLAYLIST_FAILED if a playlist could not be expanded.

Pricing

Pay per event: $0.003 per transcript (transcript-scraped), which is $3 per 1,000. Only items with a transcript are charged; error items are free.

Worked example: a playlist of 200 videos where 190 have captions costs 190 x $0.003 = $0.57. The 10 videos without captions appear in the dataset with an error and cost nothing. Choosing more output formats or turning on translation does not change the price.

FAQ

Does this work for videos without subtitles? Only if YouTube generated automatic captions for the video, which it does for many videos in widely spoken languages. Videos with no caption track at all return NO_CAPTIONS and are not charged. The actor does not do its own speech recognition.

Can I get the transcript in a different language? Yes. languages picks the source track, and translateTo asks YouTube to translate that track. Translation works when the track is marked translatable in availableLanguages.

Which formats are supported? Plain text, timestamped segments (JSON), srt and vtt, in any combination in one run. The whole dataset can be exported as JSON, CSV, Excel and other formats.

Can I process a whole channel? Not by channel URL. Paste a playlist of the channel, such as its uploads playlist (a playlist ID starting with UU), or list the channel's videos with the YouTube Channel Videos Scraper and pass the URLs here.

Do I need proxies? Usually not. If YouTube asks for a sign-in on a video and you have not set a proxy, the actor retries that video through Apify residential proxy.

Is this suitable for RAG and LLM apps? Yes, that is a main use. You get clean text plus metadata per video. The actor can be called through the Apify API and SDKs, scheduled, and used as an MCP tool by AI agents, or connected through the Apify integrations for LangChain, LlamaIndex, Make, Zapier and n8n.

Use it from Claude, ChatGPT or Cursor (Apify MCP server)

The actor can be called as a tool by any AI assistant that speaks the Model Context Protocol. Add the Apify MCP server to your client with this URL, which loads only this actor as a tool:

https://mcp.apify.com?tools=pulsedata/youtube-transcript-scraper

On first connection the client opens a browser window to sign in to Apify, or you pass your Apify API token instead. After that you can ask in plain language, for example "get the transcript of this video and summarise it in English", and the assistant fills videoUrls, languages and translateTo itself, runs the actor and reads the transcripts back as JSON. Billing is the same as a normal run, at the prices listed above. Mention a limit in your prompt, which the assistant passes as maxVideosPerPlaylist, if you want to cap the cost of a single question.

Paying from an AI agent without an Apify account (x402 and Skyfire)

An agent can buy a prepaid, spend-capped Apify token at Apify AGI, paid in USDC through x402 or from a Skyfire wallet, and use it for both the API and the MCP server. This actor runs with limited permissions, so it works with these tokens. The smallest token is $1, tokens expire 14 days after purchase, and Apify marks agentic payments as experimental.

⌂ 换网址