# YouTube Transcript Extractor (`akash9078/youtube-transcript-extractor`) Actor

Extract accurate YouTube video transcripts and timestamped captions without an API key. Supports YouTube Shorts, live stream VODs, Premieres, embedded videos, and auto-generated subtitles in 100+ languages. Fast YouTube transcript extractor for SEO, AI, research, and content creation.

- **URL**: https://apify.com/akash9078/youtube-transcript-extractor.md
- **Developed by:** [Akash Kumar Naik](https://apify.com/akash9078) (community)
- **Categories:** Videos, SEO tools, Automation
- **Stats:** 157 total users, 30 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 transcripts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## YouTube Transcript Extractor — Extract Transcripts from Any YouTube Video

**YouTube Transcript Extractor** is an Apify Actor that pulls full transcripts with timestamps from any YouTube video in seconds — no YouTube Data API key required, no OAuth, no quota limits. Just a YouTube URL in, clean structured JSON out.

> 🚀 **Try it now:** [YouTube Transcript Extractor on Apify Store →](https://apify.com/akash9078/youtube-transcript-extractor)

Supports **100+ languages**, works with regular videos, Shorts, Premieres, live VODs, and embeds. Auto-generated and manual captions are both supported.

***

### What Is YouTube Transcript Extractor?

**YouTube Transcript Extractor** is a cloud-based transcript API that converts YouTube video captions into structured plain-text JSON with optional timestamps. It accepts every standard YouTube URL format, bypasses the official API entirely, and delivers results in 3–5 seconds per video.

Whether you're building an **AI training data pipeline**, ingesting transcripts into a **RAG system**, repurposing content, or conducting **YouTube SEO research** — this Actor gets you there without touching Google Cloud.

#### ✅ What Can YouTube Transcript Extractor Do?

- 📄 Extract **full transcripts** from any YouTube video with subtitles
- 🕐 Get **timestamped transcripts** in `[MM:SS]` format for easy navigation
- 🌍 Detect and retrieve captions in **100+ languages**
- ⚡ Process videos in **3–5 seconds** per transcript
- 🤖 Access **auto-generated captions** — something the official YouTube Data API v3 cannot do
- 📦 Return **structured JSON output** ready for databases, vector stores, and LLMs
- 🔁 Handle **batch processing** of thousands of videos via the Apify API — no daily quota
- 🔒 Use **residential proxy rotation** to avoid YouTube IP blocks automatically
- 🔗 Accept every YouTube URL format: `youtube.com/watch`, `youtu.be`, `shorts/`, `live/`, `embed/`, and bare video IDs

***

### Why Use YouTube Transcript Extractor Instead of the YouTube Data API?

| Capability | YouTube Transcript Extractor | YouTube Data API v3 |
|---|---|---|
| API Key Required | ❌ No | ✅ Yes |
| Daily Quota | ♾️ Unlimited | ⚠️ 10,000 units/day |
| Auto-Generated Captions | ✅ Yes | ❌ No |
| Manual Captions | ✅ Yes | ✅ Limited |
| Setup Complexity | URL in → JSON out | OAuth + GCP project |
| Batch Processing | ✅ Unlimited | ⚠️ Quota-limited |
| Cost Model | Pay per transcript | Free quota + paid overflow |

**Bottom line:** The YouTube Data API v3 doesn't expose auto-generated captions, restricts daily usage to 10,000 quota units, and requires OAuth setup. YouTube Transcript Extractor skips all of that and gives you clean transcript data for any video — at scale.

***

### What Data Does YouTube Transcript Extractor Return?

| Field | Type | Description |
|---|---|---|
| `success` | boolean | Whether transcript extraction was successful |
| `video_id` | string | Parsed YouTube video ID |
| `video_url` | string | Canonical YouTube watch URL |
| `video_title` | string | Full video title |
| `transcript` | string | Complete plain-text transcript |
| `transcript_segments` | array | Structured segments with start, duration, and text |
| `error` | string | Error message if extraction failed |

***

### How to Extract a YouTube Transcript in 3 Steps

1. **Open the Actor** — Go to [YouTube Transcript Extractor on Apify Store](https://apify.com/akash9078/youtube-transcript-extractor) and click **Try for free**
2. **Paste your YouTube URL** — Enter any YouTube URL (video, Short, Premiere, embed) into the `videoUrl` field
3. **Run and download** — Click **Start** and get a clean JSON transcript within seconds. Export to CSV, JSON, or push directly to your pipeline

> 💡 **No coding required.** Run directly in the Apify Console UI. Use the **API or SDK** to automate at scale.

***

### Use Cases for YouTube Transcript Extractor

#### 🤖 AI, ML & NLP Pipelines

- **LLM Training Data** — build high-quality text corpora from YouTube content at scale
- **RAG Pipeline Ingestion** — chunk and embed transcripts into Pinecone, Weaviate, or Chroma for semantic search
- **Sentiment & Topic Analysis** — process large transcript volumes for NLP research
- **AI Content Generation** — feed transcripts to LLMs for summarization, Q\&A, and repurposing

#### ✍️ Content Creation & Marketing

- **Content Repurposing** — convert YouTube videos into blog posts, newsletters, and social captions
- **YouTube SEO Research** — extract transcript text to surface keywords competitors rank for in video search
- **Video Summarization** — auto-generate descriptions and show notes using LLMs

#### 🏢 Business & Accessibility

- **Accessibility Compliance** — produce ADA and WCAG 2.1 compliant transcripts
- **Internal Knowledge Base** — convert training videos and webinars into searchable documentation
- **Competitive Intelligence** — analyze industry YouTube channels at scale

#### 👨‍💻 Developers & Automation

- **REST API Integration** — simple POST request, JSON response, no SDK required
- **Workflow Automation** — connect with n8n, Make (Integromat), Zapier, or Activepieces
- **Scheduled Channel Monitoring** — use Apify's built-in scheduler to track new uploads automatically

***

### How Much Does It Cost to Extract YouTube Transcripts?

YouTube Transcript Extractor uses **pay-per-event pricing** — you only pay for successful extractions.

| Event | Price | When Charged |
|---|---|---|
| `transcript` | $0.01 | Successfully extracted a YouTube video transcript |
| `proxy-usage` | $0.0005 | Only when YouTube blocks the direct connection and an Apify residential proxy is used to recover it |

**Cost per video: $0.01** — the residential proxy fallback is rare, so most runs are exactly $0.01.

| Volume | Estimated Cost |
|---|---|
| 10 transcripts | ~$0.10 |
| 100 transcripts | ~$1.00 |
| 1,000 transcripts | ~$10.00 |
| 10,000 transcripts | ~$100 |

> 🎁 New Apify accounts receive **free credits** — test YouTube Transcript Extractor before you commit.

***

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `videoUrl` | string | ✅ Yes | `https://youtu.be/dQw4w9WgXcQ` | YouTube URL or bare 11-character video ID |

#### Supported YouTube URL Formats

```
https://www.youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
https://youtube.com/shorts/VIDEO_ID
https://youtube.com/live/VIDEO_ID
https://youtube.com/embed/VIDEO_ID
VIDEO_ID  (bare 11-character ID)
```

#### Example Input

```json
{
  "videoUrl": "https://youtu.be/dQw4w9WgXcQ"
}
```

***

### Output Schema

The Actor returns a structured JSON object for each video with both plain text and timestamped transcripts.

#### Default Output

```json
{
  "success": true,
  "video_id": "dQw4w9WgXcQ",
  "video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "video_title": "Example Video Title",
  "transcript": "Full transcript text extracted from the video...",
  "transcript_segments": [
    {
      "start": "0.000",
      "dur": "4.640",
      "text": "Introduction text here"
    },
    {
      "start": "4.640",
      "dur": "3.200",
      "text": "Next segment text"
    }
  ]
}
```

***

### API Integration

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/akash9078/youtube-transcript-extractor/runs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"videoUrl": "https://youtu.be/dQw4w9WgXcQ"}'
```

#### Python

```python
import requests

response = requests.post(
    'https://api.apify.com/v2/acts/akash9078/youtube-transcript-extractor/runs',
    headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
    json={'videoUrl': 'https://youtu.be/dQw4w9WgXcQ'}
)
print(response.json())
```

#### Node.js

```javascript
const { ApifyClient } = require('apify-client');

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('akash9078/youtube-transcript-extractor').call({
    videoUrl: 'https://youtu.be/dQw4w9WgXcQ'
});
console.log(run.defaultDatasetId);
```

***

### Integrations

YouTube Transcript Extractor works seamlessly with the full Apify platform ecosystem:

**AI / ML Platforms:** OpenAI, Anthropic Claude, LangChain, LlamaIndex, Pinecone, Chroma, Weaviate

**Automation Tools:** n8n, Make (Integromat), Zapier, Activepieces

**Data Platforms:** Google Sheets, Airtable, Notion, BigQuery

**Apify Platform Features:**

- 📅 **Scheduling** — run extractions on a cron schedule automatically
- 📊 **Monitoring** — track run history, success rates, and errors in the Apify Console
- 🔗 **Webhooks** — trigger downstream workflows when transcripts are ready
- 🗂️ **Dataset storage** — results saved to Apify's cloud storage, downloadable as JSON or CSV
- 🔗 **Actor chaining** — combine with YouTube Channel Video Scraper to build full pipeline workflows

***

### Limitations

- Videos must have captions enabled (manual or auto-generated). Videos with no captions at all cannot be extracted.
- Live streams currently in progress are not supported — completed VODs work correctly
- Private and age-restricted videos are not supported
- Unlisted videos are accessible if you have the direct URL

***

### FAQ

#### Does YouTube Transcript Extractor support auto-generated captions?

**Yes.** Both manual (human-written) and YouTube's auto-generated captions are fully supported. Auto-generated captions are not accessible via the official YouTube Data API v3 — this Actor fills that gap.

#### Which languages are supported for transcript extraction?

**All languages** present in a video's caption tracks. The Actor auto-detects the best available language.

#### Can I extract YouTube transcripts in bulk?

**Yes.** Use the Apify API or SDK to submit multiple video URLs in sequence or in parallel. There are no daily quota limits — extract thousands of transcripts per day.

#### How fast is YouTube transcript extraction?

**3–5 seconds** per video on average, depending on transcript length and server load. Bulk runs benefit from Apify's parallel compute scaling.

#### Does YouTube Transcript Extractor work with YouTube Shorts?

**Yes.** All standard Shorts URLs (`youtube.com/shorts/VIDEO_ID`) are fully supported.

#### Is this a free YouTube transcript scraper?

The Actor uses pay-per-event pricing at **~$0.01 per video**. New Apify accounts get free platform credits, so you can extract transcripts for free to start.

#### Can I use this as a YouTube Transcript API without an API key?

**Yes.** YouTube Transcript Extractor requires only an Apify API token — no YouTube Data API key, no Google Cloud project, no OAuth flow.

#### How does this compare to other YouTube caption extractors?

YouTube Transcript Extractor uses Apify's residential proxy network with automatic session-based IP rotation, which makes it far more reliable than open-source scripts that break when YouTube changes its response format. It also runs in the cloud — no local setup needed.

***

### Support

- **Issues & feedback:** [Actor page on Apify Store](https://apify.com/akash9078/youtube-transcript-extractor)
- **Community:** [Apify Discord](https://discord.com/invite/jyEM2PRvMU)
- **Full documentation:** See the Input Schema tab on the Actor page

***

*Built and maintained by [akash9078](https://apify.com/akash9078) on the Apify platform.*

# Actor input Schema

## `videoUrl` (type: `string`):

YouTube video URL or 11-character video ID. Supports all URL formats: youtube.com/watch?v=, youtu.be/, youtube.com/shorts/, youtube.com/live/, embed/.

## Actor input object example

```json
{
  "videoUrl": "https://youtu.be/qMquIcJWZag"
}
```

# Actor output Schema

## `transcripts` (type: `string`):

Extracted transcripts with video metadata, including plain text and timestamped transcripts

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "videoUrl": "https://youtu.be/qMquIcJWZag"
};

// Run the Actor and wait for it to finish
const run = await client.actor("akash9078/youtube-transcript-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "videoUrl": "https://youtu.be/qMquIcJWZag" }

# Run the Actor and wait for it to finish
run = client.actor("akash9078/youtube-transcript-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "videoUrl": "https://youtu.be/qMquIcJWZag"
}' |
apify call akash9078/youtube-transcript-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,akash9078/youtube-transcript-extractor"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xBX8T3QZJC3LEVzMT/builds/kTcZ9FQHehVW8Iphd/openapi.json
