# 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
- **Features:** Limited permissions
- **Stats:** 245 total users, 31 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**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.

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.

### Key Features

- 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

### YouTube Data API Comparison

| 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.

### Supported Content Types

- Standard YouTube videos
- YouTube Shorts (`youtube.com/shorts/`)
- Premieres
- Completed live streams (VODs)
- Embedded videos (`youtube.com/embed/`)
- Auto-generated and manually created captions

### Use Cases

- **AI, ML & NLP pipelines** — build LLM training corpora, chunk and embed transcripts into Pinecone, Weaviate, or Chroma for RAG and semantic search, run sentiment and topic analysis, or feed transcripts to LLMs for summarization, Q\&A, and repurposing
- **Content creation & marketing** — convert videos into blog posts, newsletters, and social captions; surface keywords competitors rank for in video search; auto-generate descriptions and show notes
- **Business & accessibility** — produce ADA and WCAG 2.1 compliant transcripts, convert training videos and webinars into searchable documentation, analyze industry channels at scale
- **Developers & automation** — simple POST request with JSON response, connect with n8n, Make, Zapier, or Activepieces, push to Google Sheets, Airtable, Notion, or BigQuery, and schedule recurring extractions with webhooks and dataset storage

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `videoUrl` | string | Yes | — | YouTube video URL or 11-character video ID |

#### Supported YouTube URL Formats

```text
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"
}
```

### Sample Output

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

```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"
    }
  ]
}
```

| 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 Use

1. Open [YouTube Transcript Extractor on Apify Store](https://apify.com/akash9078/youtube-transcript-extractor) and click **Try for free**.
2. Paste your YouTube URL — any format (video, Short, Premiere, embed) — into the `videoUrl` field.
3. 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.

### How to Use via API

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_APIFY_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_APIFY_TOKEN'},
    json={'videoUrl': 'https://youtu.be/dQw4w9WgXcQ'}
)
print(response.json())
```

Node.js with [Apify Client](https://docs.apify.com/api/client/js):

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

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

### Pricing

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.

### 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.

### Related Actors

If you need more YouTube data from Apify, check out my other [Apify Actors](https://apify.com/akash9078):

- [YouTube Transcript Scraper](https://apify.com/akash9078/youtube-transcript-scraper) — extract transcripts and translate via AI
- [YouTube Full Channel Transcripts Extractor](https://apify.com/akash9078/youtube-full-channel-transcripts-extractor) — transcripts for entire channels
- [YouTube Playlist Scraper with Transcript](https://apify.com/akash9078/youtube-playlist-scraper-with-transcript) — playlist metadata plus transcripts
- [YouTube Channel Video Scraper](https://apify.com/akash9078/youtube-channel-video-scraper) — video metadata for entire channels
- [YouTube Playlist Scraper](https://apify.com/akash9078/youtube-playlist-scraper) — full metadata for every video in a playlist
- [YouTube Search Scraper](https://apify.com/akash9078/youtube-search-scraper) — search YouTube via the official Data API
- [YouTube Trending Scraper](https://apify.com/akash9078/youtube-trending-scraper) — trending videos by region and category

***

Built and maintained by [akash9078](https://apify.com/akash9078) on the Apify platform. For issues and feedback, visit the [Actor page on Apify Store](https://apify.com/akash9078/youtube-transcript-extractor) or join the [Apify Discord](https://discord.com/invite/jyEM2PRvMU).

# 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/SkndXC3bwf1uK2h9o/openapi.json
