YouTube Transcript Scraper avatar

YouTube Transcript Scraper

Pricing

$1.00 / 1,000 transcripts

Go to Apify Store
YouTube Transcript Scraper

YouTube Transcript Scraper

Extract YouTube transcripts and captions from videos, playlists or whole channels. Get full transcript text, timestamped segments, language and auto-generated flag, plus title, channel, views and duration. Any language, bulk, no API key.

Pricing

$1.00 / 1,000 transcripts

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

6 days ago

Last modified

Share

What is YouTube Transcript Scraper?

YouTube Transcript Scraper lets you extract the full transcript of any YouTube video, playlist or channel, in any language, helping you feed videos into ChatGPT and other LLMs, research what creators actually say, and turn talks and tutorials into searchable text. Paste a video URL, a playlist link or a channel handle like @3blue1brown, and get one clean row per video with the full transcript text, timestamped segments, language, an auto-generated flag, and the video's title, channel, views and duration.

  • ๐Ÿค– Feed videos to AI: plain-text transcripts ready for summarisation, RAG pipelines, embeddings and LLM fine-tuning datasets
  • ๐Ÿ“š Transcribe a whole channel or playlist in one run: give it @veritasium or a playlist URL and it walks every video, newest first
  • ๐ŸŒ Any language, with a smart fallback: ask for en, es, de, pt-BR or ja; if a video has no transcript in that language you get its original-language transcript, clearly flagged, instead of nothing
  • โฑ Timestamps for clips and subtitles: every caption line with start, end and duration in seconds
  • โœ๏ธ Creator captions first: when a video has both creator-uploaded and auto-generated captions, you get the cleaner human ones (switchable)
  • โšก Fast and cheap: about 150 transcripts a minute, no headless browser, no API key, no YouTube quota

The official YouTube Data API only lets you download captions for videos you own, and costs 200 quota units per download even then. YouTube Transcript Scraper reads the same transcripts YouTube shows under "Show transcript" for any public video, at $1 per 1,000 videos.

What data does YouTube Transcript Scraper extract?

  • ๐Ÿ“ Full transcript as plain text (transcript)
  • โฑ Timestamped segments with start, end and duration in seconds (segments)
  • ๐ŸŒ Transcript language code and name (language, languageName)
  • ๐Ÿค– Whether the transcript is auto-generated or creator-uploaded (isAutoGenerated)
  • ๐Ÿ” Whether a fallback language was used (isFallbackLanguage)
  • ๐Ÿ—‚ Every caption language available on the video (availableLanguages)
  • ๐Ÿ”ข Word, character and segment counts (wordCount, characterCount, segmentCount)
  • ๐ŸŽฌ Video ID, URL, title, full description and tags (videoId, url, title, description, keywords)
  • ๐Ÿ“บ Channel name, ID and URL (channelName, channelId, channelUrl)
  • ๐Ÿ‘€ Exact view count and duration in seconds (viewCount, durationSeconds)
  • ๐Ÿ–ผ Thumbnail URL and a live-content flag (thumbnailUrl, isLive)
  • ๐Ÿ“ Which input produced the row, plus a status and message for anything that could not be transcribed (sourceType, sourceInput, status, message)

How to scrape YouTube transcripts

  1. Click Try for free and open the Input tab.
  2. Paste video URLs (watch, youtu.be, Shorts or bare IDs), playlist URLs, or channels (@handle, channel URL or UC... ID). Mix them freely.
  3. Set the transcript language (default en) and the max videos per playlist or channel.
  4. Click Start. Each video is one row, written as soon as it is done.
  5. Download the results as JSON, CSV, Excel or HTML, or pull them through the Apify API.

Input

{
"videoUrls": [
"https://www.youtube.com/watch?v=aircAruvnKk",
"https://youtu.be/Ks-_Mh1QhMc"
],
"playlistUrls": ["https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab"],
"channels": ["@veritasium"],
"language": "en",
"fallbackToAnyLanguage": true,
"preferManualCaptions": true,
"includeTimestamps": true,
"maxVideosPerSource": 50,
"maxItems": 500
}

Leave the proxy on its default. YouTube sometimes asks a cloud IP to sign in before it will hand over a transcript; when that happens the actor retries on a fresh connection, and a video that is refused three times is retried automatically on Apify RESIDENTIAL proxy. Residential traffic is included in the price. In a 1,000-video test run, 0 videos were lost to blocking.

Output

One row per video. A real record, trimmed:

{
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"title": "But what is a neural network? | Deep learning chapter 1",
"channelName": "3Blue1Brown",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"durationSeconds": 1120,
"viewCount": 24685088,
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"isFallbackLanguage": false,
"availableLanguages": [{ "code": "ar", "name": "Arabic", "isAutoGenerated": false }, "..."],
"transcript": "This is a 3. It's sloppily written and rendered at an extremely low resolution of 28x28 pixels, but your brain has no trouble recognizing it as a 3. ...",
"segments": [
{ "start": 4.22, "end": 5.4, "duration": 1.18, "text": "This is a 3." },
{ "start": 6.06, "end": 10.713, "duration": 4.653, "text": "It's sloppily written and rendered at an extremely low resolution of 28x28 pixels," }
],
"segmentCount": 286,
"wordCount": 3357,
"status": "ok",
"scrapedAt": "2026-10-07T13:23:45Z"
}

The Overview table shows thumbnail, title, channel, language, auto-generated flag, word count and the transcript side by side. A Timestamped segments view and a Video details view are one click away.

Status values

statusMeaning
okTranscript returned
no_captionsThe video has no captions or auto-generated transcript on YouTube
language_unavailableYour language is missing and fallback is off; message lists the languages that exist
unavailableDeleted, private or region-blocked video
age_restrictedYouTube only shows this video to signed-in adults
errorYouTube refused the request on six fresh connections, including residential; re-run the video

How much does it cost to scrape YouTube transcripts?

YouTube Transcript Scraper uses flat pay-per-result pricing: $1.00 per 1,000 videos ($0.001 per row). Proxy and compute are included. There is no monthly rental.

VideosCost
100$0.10
1,000$1.00
10,000$10.00
100,000$100.00

Every row in the dataset is charged once, including a row that explains why a video could not be transcribed, so maxItems is your exact spend cap. The most-used transcript actors on the Store charge $5 to $10 per 1,000.

Measured coverage

From cloud QA runs on 2026-10-07, about 2,100 videos across single videos, playlists and 9 channels:

  • 1,000-video run across 5 channels: 953 transcripts, 46 videos with no captions on YouTube (mostly short animations and music), 1 age-restricted, 0 errors, 6.6 minutes
  • transcript, segments, language, isAutoGenerated: 100% of videos that have captions
  • title, channelName, channelId, viewCount, durationSeconds: 100% of available videos
  • description: 98% (some creators leave it empty)
  • Playlist and channel expansion: 100 videos per page, tested past the page boundary and up to 600 videos from one channel
  • maxItems is exact at 0, 1, 100 and above the number of videos available

Limits

  • Transcripts only exist when YouTube has them. Very new uploads, music without lyrics and some live streams have no captions, and you get a no_captions row.
  • No machine translation. You get the languages YouTube actually holds for the video (often dozens for popular videos). If your language is missing, the fallback returns the original language instead.
  • Age-restricted and private videos need a signed-in account and are returned as age_restricted or unavailable rows. This actor never uses logins.
  • Publish date is not included. Use YouTube Channel Scraper if you need it alongside the transcript.

FAQ

YouTube Transcript Scraper only reads publicly available transcripts that YouTube shows to any visitor, with no login. It does not collect personal data about viewers. Transcripts are the creators' content, so respect copyright when you republish them, and check YouTube's Terms of Service and the laws that apply to your use case. You are responsible for how you use the data.

Can I get transcripts for a whole YouTube channel?

Yes. Add the channel to Channels as @handle, a channel URL or a UC... ID, and set Max videos per playlist or channel. Videos are taken from the channel's uploads, newest first.

What languages are supported?

Any language YouTube has a caption track for. Set Transcript language to a code like en, es, fr, de, pt-BR, hi, ja or ko. Every row also lists all the languages available on that video in availableLanguages.

What is the difference between auto-generated and creator captions?

Creator-uploaded captions are written by a person and are usually punctuated and accurate. Auto-generated ones come from YouTube's speech recognition. By default you get creator captions when both exist; isAutoGenerated tells you which one you got.

How much does it cost?

$1.00 per 1,000 videos, flat. 100 videos cost $0.10. See the pricing table above.

Can I use YouTube Transcript Scraper as an API?

Yes. Every Apify actor is an API. Start runs and fetch results with the Apify API, or call it synchronously and get the transcripts back in one HTTP request.

Can I use this in Python?

Yes, with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("cirkit/youtube-transcript-scraper").call(run_input={"videoUrls": ["aircAruvnKk"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["title"], row["wordCount"])

Can I connect it to ChatGPT, Zapier, Make or Google Sheets?

Yes. Use the Apify integrations for Zapier, Make, n8n, Google Sheets, Slack and webhooks, or the Apify MCP server to give an AI agent YouTube transcripts as a tool.

How do I run it on a schedule?

Create a Schedule in Apify Console (for example daily at 06:00) and point it at a saved task with your channels. Combined with maxVideosPerSource, this picks up each channel's newest uploads.

Why did I get fewer transcripts than videos?

Check the status and message on each row. The usual reasons are videos with no captions, age-restricted or private videos, and channels that have fewer public uploads than your limit. Invalid URLs are reported in the run log.

Can I get a field that is not listed?

Open an issue on the actor's Issues tab and describe what you need. Fields that YouTube exposes publicly can usually be added.

You might also like

Changelog

  • 0.1 (2026-10-07): first release. Videos, playlists and channels; language selection with fallback; timestamped segments.