YouTube Transcript Scraper & API: captions and subtitles
YouTube Transcript Scraper is an Apify Actor that returns the transcript of any YouTube video as plain text and timestamped segments, in any caption language, with the title, channel, views and duration. It accepts video, Shorts, channel and playlist URLs, costs $1.50 per 1,000 transcripts and charges nothing for videos without captions.
Run it on Apify $1.50 per 1,000 transcripts ($1.20 on Gold and above)
Quick facts
- One row per video: transcript text, timestamped segments, language, auto-generated flag, all caption languages, title, channel, views, duration, description and tags.
- Videos, Shorts, channels and playlists (latest 15 videos).
- Manual captions first, then auto-generated; best-effort translation.
- Price: $1.50 per 1,000 transcripts; videos without captions are free.
Example input
{
"videos": [
"https://www.youtube.com/watch?v=UF8uR6Z6KLc"
],
"language": "en"
}
Run it from code
REST API (cURL)
curl -X POST "https://api.apify.com/v2/acts/automationnation~youtube-transcript-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videos": ["https://www.youtube.com/watch?v=UF8uR6Z6KLc"], "language": "en"}'
Python
# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automationnation/youtube-transcript-scraper").call(run_input={
"videos": [
"https://www.youtube.com/watch?v=UF8uR6Z6KLc"
],
"language": "en"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("title"), item.get("channel"), item.get("wordCount"), item.get("transcriptLanguage"))JavaScript / Node.js
// npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automationnation/youtube-transcript-scraper').call({
"videos": [
"https://www.youtube.com/watch?v=UF8uR6Z6KLc"
],
"language": "en"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.title, item.channel, item.wordCount, item.transcriptLanguage);
Use it with AI agents (MCP)
Connect AI assistants such as Claude, ChatGPT or Cursor through Apify's MCP server. Hosted URL:
https://mcp.apify.com?tools=automationnation/youtube-transcript-scraper
Or run it locally in Claude Desktop / Cursor:
{
"mcpServers": {
"youtube-transcript-scraper": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--tools",
"automationnation/youtube-transcript-scraper"
],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}
FAQ
Is there an official YouTube transcript API?
The YouTube Data API only downloads captions for videos you own. YouTube Transcript Scraper returns public captions of any video.
Does it transcribe audio?
No, it returns captions YouTube already has (manual or auto-generated); videos without captions come back as no_transcript and aren't charged.
Step-by-step guide: How to get YouTube transcripts in 2026 (any video, channel or playlist)