YouTube Transcript Scraper — Videos, Channels & Playlists
Pricing
from $3.20 / 1,000 transcripts
YouTube Transcript Scraper — Videos, Channels & Playlists
Get the transcript of any YouTube video, Short, playlist or whole channel: full text plus timed segments, language, auto-generated or not, with title, channel, duration, views and description. Pay per transcript; videos without captions are free. No browser, no YouTube API key.
Pricing
from $3.20 / 1,000 transcripts
Rating
0.0
(0)
Developer
Data Fabrik
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Features
Share
What is YouTube Transcript Scraper?
Get the transcript of any YouTube video as clean JSON, CSV or Excel: the full text and the timed segments, the language, whether the captions are auto-generated, plus the video's title, channel, duration, views, tags and description. Paste video, Shorts, playlist or channel links: the Actor finds every video and transcribes each one once.
- 💲 Pay per transcript: from $3.20 per 1,000 transcripts ($4.90 on the Free plan), video details included, plus Apify's minimum start fee of $0.00005 per run. Videos without captions, private or removed videos and failures are free.
- 📺 Videos, Shorts, playlists and whole channels in one run:
@handle,/channel/UC…,/videos,/shortsor/streamstab. - 🌍 Any caption language: pick one (
en,fr,pt-br…) or keep YouTube's default track. - ⚡ No browser, no YouTube API key, no login: light HTTP requests, about 10 videos at a time.
What data can you extract from YouTube?
| Data | Example |
|---|---|
| Full transcript | "We're no strangers to love…" |
| Timed segments (start, duration, text) | 22.64, 4.32, "You know the rules and so do I" |
| Language, auto-generated or not | en, English, false |
| Every caption language of the video | en, de-DE, ja, pt-BR… |
| Title, channel, channel link | "Never Gonna Give You Up", "Rick Astley" |
| Duration, views, live or not | 213 s, 1827177355, false |
| Tags, description, thumbnail | a list, the text, a link |
What can you do with YouTube transcripts?
- 🤖 AI and LLM apps: feed videos to ChatGPT, Claude or your RAG pipeline, summarize, answer questions about a channel.
- ✍️ Content creation: turn videos into articles, newsletters, quotes and social posts; study what top creators say.
- 🔎 SEO and marketing: find the words and topics competitors use, track brand mentions in videos.
- 📊 Research: analyse speeches, lectures, interviews or news channels at scale.
- ♿ Accessibility and translation: get the text to subtitle, translate or index videos.
Why run it on Apify?
- API: every run is an API call, with ready clients for Python and JavaScript (see below).
- Scheduling: transcribe the new videos of a channel every day without a server.
- Integrations: Google Sheets, Slack, Zapier, Make, n8n, webhooks and your own database.
- AI agents: available through Apify's MCP server, so Claude, ChatGPT or Cursor can call it.
- Proxies included: YouTube refuses servers, so the Actor uses residential IPs, included in the price.
How does it work?
- Each link in
urlsis recognised: a video (watch, youtu.be, Shorts, live, embed or a bare id), a playlist, or a channel (@handle,/channel/,/c/,/user/). - For a channel or a playlist, the Actor lists up to
maxVideosPerSourcevideos (newest first for channels). Add/videos,/shortsor/streamsto a channel link to keep one tab. - For each video, it reads the caption tracks YouTube offers, picks the one in
language(or YouTube's default) and downloads it. - Each video becomes one item in the dataset with
status. Onlyokitems are charged.
How to get a YouTube transcript
- Click Try for free.
- Paste one or more YouTube links in YouTube links.
- Optional: set Language, or Max videos per channel or playlist.
- Click Start. The transcripts appear in the Transcripts view, usually within seconds.
- Download them as JSON, CSV or Excel, or connect an integration.
Prefer a ready-made start? This example gets the English transcript of one video: open it, click Start, then change the input.
Input
| Field | What it does | Default |
|---|---|---|
urls | Videos, Shorts, playlists or channels, one per line. | — |
language | Language code of the captions (en, fr, pt-br…). Empty = YouTube's default track. | empty |
maxVideosPerSource | Videos taken from each channel or playlist (1 to 10,000). | 50 |
includeSegments | Add the timed segments next to the full text. | true |
maxConcurrency | Videos processed at the same time (1 to 20). | 10 |
Example:
{"urls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/@TED/videos","https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ"],"language": "en","maxVideosPerSource": 20}
Output
One item per video (and one free item per link that gave no video):
{"status": "ok","note": null,"videoId": "dQw4w9WgXcQ","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw","durationSeconds": 213,"viewCount": 1827177355,"isLiveContent": false,"language": "en","languageName": "English","isAutoGenerated": false,"availableLanguages": [{ "languageCode": "en", "name": "English", "isAutoGenerated": false }, { "languageCode": "en", "name": "English (auto-generated)", "isAutoGenerated": true }],"text": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ …","segments": [{ "start": 22.64, "duration": 4.32, "text": "♪ You know the rules and so do I ♪" }],"keywords": ["rick astley", "never gonna give you up"],"description": "The official video for “Never Gonna Give You Up” by Rick Astley…","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","source": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","scrapedAt": "2026-10-16T18:00:00.000Z"}
| Field | Meaning |
|---|---|
status | ok (charged), or a free status: no-transcript, language-unavailable, unavailable, not-found, invalid-url, failed, skipped-cost-limit, invalid (one item for the whole run when the input is invalid). |
note | Why there is no transcript, in plain words. |
videoId, url | The video. |
title, channelName, channelId, channelUrl | Video title and channel. |
durationSeconds, viewCount, isLiveContent | Length, views, live stream or not. |
language, languageName, isAutoGenerated | The caption track delivered. |
availableLanguages | Every caption track of the video. |
text | The full transcript. |
segments | Timed pieces: start, duration (seconds), text. |
keywords, description, thumbnailUrl | Tags, description, thumbnail. |
source | The input link the video came from. |
scrapedAt | When the item was produced (UTC). |
The run summary (counts per status) is saved as OUTPUT in the key-value store.
How much does it cost to scrape YouTube transcripts?
You pay per transcript delivered, video details included:
| Apify plan | Price per transcript | Per 1,000 |
|---|---|---|
| Free | $0.0049 | $4.90 |
| Starter (Bronze) | $0.0039 | $3.90 |
| Scale (Silver) | $0.0035 | $3.50 |
| Business (Gold) and above | $0.0032 | $3.20 |
Plus Apify's start fee of $0.00005 per run. Free: videos without captions or without captions in your language, private, removed, age-restricted or region-blocked videos, links that are not YouTube, failures. The $5 monthly credit of Apify's Free plan covers about 1,000 transcripts a month. Set Maximum cost per run in the run options to cap a run: the Actor stops before going over it.
Is it free to try?
Yes. Apify's Free plan gives $5 of credit every month, with no card needed, which covers about 1,000 transcripts.
Use it from code
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("datafabrik/youtube-transcripts").call(run_input={"urls": ["https://www.youtube.com/@TED/videos"],"maxVideosPerSource": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["status"] == "ok":print(item["title"], len(item["text"]))
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('datafabrik/youtube-transcripts').call({ urls: ['dQw4w9WgXcQ'], language: 'en' });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].text);
Use it from an AI agent (MCP)
Apify exposes every Store Actor through its MCP server. Add this URL to Claude, Cursor or any MCP client, then ask "Summarize the transcript of this YouTube video: ":
https://mcp.apify.com?tools=datafabrik/youtube-transcripts
The agent reads the input schema, runs the Actor and gets the transcript back in seconds. Billing is the same (per transcript, videos without captions free).
Limits
- Only videos with captions (human-made or auto-generated by YouTube) have a transcript. The Actor does not transcribe audio itself.
- Captions are delivered in the languages the video has; machine translation is not offered (YouTube refuses it to automated requests).
- Videos are read from the United States: a video blocked there comes back as
unavailable(free). - Publish date and like count are not included yet.
FAQ
Is it legal to scrape YouTube transcripts?
The Actor reads public captions that YouTube shows to any visitor, without login. It does not collect personal data. You are responsible for how you use the content, in line with YouTube's terms and copyright law; check with a lawyer for commercial reuse.
Why did a video come back without a transcript?
Look at status and note: no captions at all, no captions in the language you asked (the note lists the available ones), or a private, removed, age-restricted or region-blocked video. None of these is charged.
Can I get the transcripts of a whole channel?
Yes: paste the channel link (https://www.youtube.com/@handle) and set maxVideosPerSource up to 10,000. Add /videos to skip Shorts and lives.
Can I get only the text, without timestamps?
Turn off includeSegments: text stays, segments is null.
Do I need a YouTube API key or an account?
No. The Actor uses the same public endpoints as YouTube's apps.
Can you add a feature or build a custom scraper?
Yes: open an issue on the Issues tab, we answer within a day.
More from Data Fabrik
| Actor | What you get |
|---|---|
| Google Trends Scraper & API | Interest over time, by country or region, and related queries for your own keywords |
| Google Trends Trending Now Scraper | What a country is searching right now, with search volume and related queries |
| Google Flights Scraper & API | Every flight for a route and date, price insights and the cheapest dates |
| Google Hotels Scraper & API | Hotel prices, ratings and every booking site's offer for any city or hotel |
| YouTube Search Scraper | YouTube search results by keyword, with views, channel, duration and filters |
| YouTube Channel Videos & Shorts Scraper | Every video, Short and live stream of a channel, newest or most popular first |
Support
Open an issue on the Actor page if something looks wrong; include the run link. Feature requests are welcome.
If this Actor saves you time, a short review on its Store page helps other users find it. If something is not right, open an issue first so it can be fixed.

