# YouTube AI Transcript Extractor (`sian.agency/youtube-ai-transcript-extractor`) Actor

Extract AI transcripts and 40+ metadata fields from any YouTube video — long-form, Shorts, and live. Get plain text, timestamped segments, and SRT/VTT subtitle files. Videos without captions fall back to AI audio transcription. Built for creators, SEO, research, and AI pipelines.

- **URL**: https://apify.com/sian.agency/youtube-ai-transcript-extractor.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Social media, Videos, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.00 / 1,000 video transcript (native captions)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 AI Transcript Extractor — Video to Text, SRT & VTT 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Instagram AI Transcript](https://img.shields.io/badge/Store-Instagram%20AI%20Transcript-E4405F)](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) [![TikTok AI Transcript](https://img.shields.io/badge/Store-TikTok%20AI%20Transcript-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian) [![Facebook AI Transcript](https://img.shields.io/badge/Store-Facebook%20AI%20Transcript-1877F2)](https://apify.com/sian.agency/facebook-ai-transcript-extractor?fpr=sian)

#### 🎬 Turn ANY YouTube video into a clean transcript + 40+ data fields — long-form, Shorts & live replays

##### Built for content creators, SEO pros, researchers, and AI/RAG pipelines that need YouTube video-to-text at scale

***

### 📋 Overview

**Paste a YouTube link, get the words.** The **YouTube AI Transcript Extractor** converts any YouTube video into a clean, timestamped transcript — plus 40+ metadata fields — in one run. Single video or thousands, no login required.

**What you get:**

- ✅ **Every YouTube video, not just Shorts**: long-form, Shorts, live replays, `watch?v=`, `youtu.be`, embeds — even a bare video ID
- ⚡ **Instant native captions**: reads a video's own captions in seconds — and when a video has none, falls back to AI audio transcription so you *still* get a transcript
- 🎯 **Ready-to-use formats**: full plain text, timestamped segments, plus **SRT & VTT** subtitle files
- 💰 **Fair, cost-aligned pricing**: $0.01 per captioned video; per-minute AI transcription only when a video has no captions — start **FREE**, no credit card
- 💎 **40+ metadata fields in the same run**: views, likes, comments, channel analytics, keywords, thumbnails, categories, related videos
- ✨ **Bulk-ready**: drop in a list or upload a CSV/TXT of URLs and transcribe them all

### ✨ Features

- 🎬 **Any URL format**: `watch?v=`, `youtu.be`, `/shorts/`, `/embed/`, `/live/`, or a raw 11-character video ID
- 📝 **Four transcript outputs**: full text, timestamped segments, SRT, and VTT — copy-paste or drop straight into an editor
- 🌍 **Auto language detection**: captures the video's spoken language automatically
- 📊 **40+ metadata fields**: engagement metrics with calculated ratios, channel stats, keywords, thumbnails, category, publish dates
- 🔗 **Related videos**: discover connected content and trends in the same run
- 📁 **Bulk + file upload**: paste many URLs or upload a `.csv`/`.txt` — URL column auto-detected
- 🤖 **AI/RAG friendly**: clean structured JSON that drops straight into LLMs and vector stores
- 🆓 **Free to try**: full feature access on the free tier — no setup, no keys

### 🎞️ Quick Start

Paste a YouTube URL, click **Start**, and get your transcript + metadata seconds later. Use the bulk field for many videos at once.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~youtube-ai-transcript-extractor/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Add your video(s)

Paste a single YouTube URL in **Video URL**, or add many in the bulk **URLs** field (or upload a CSV/TXT).

#### Step 2: Click Start

The actor validates each URL, then extracts the transcript and metadata.

#### Step 3: Download your data

Export transcripts + metadata as JSON, CSV, or Excel — or grab the ready-made SRT/VTT caption files.

**That's it! In under a minute, you'll have:**

- A clean, timestamped transcript of every video
- SRT + VTT subtitle files ready for editing
- 40+ metadata fields per video for analysis

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoUrl` | string | No | A single YouTube video URL (watch, youtu.be, Shorts, embed, live) or bare video ID |
| `urls` | array | No | Multiple YouTube URLs for bulk processing; supports CSV/TXT file upload |
| `maxAiTranscriptionMinutes` | integer | No | Cost cap, default **30**. How long a **caption-less** video may be before AI audio transcription is used. `0` disables AI entirely. Captioned videos are unaffected — see [Pricing](#-performance--pricing). |

**Single video:**

```json
{ "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
```

**Bulk processing:**

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
    { "url": "https://youtu.be/BoZuXYvGFu8" }
  ]
}
```

> Free tier processes up to 5 URLs per run. Paid tier: unlimited URLs per run.

### 📤 Output

Each video is saved to the Apify dataset with **50 fields**, including:

| Field | Type | Description |
|-------|------|-------------|
| `fullTranscript` | string | Complete plain-text transcript |
| `segments` | array | Timestamped segments (text, start, end, duration) |
| `vtt` | string | WebVTT subtitle file |
| `srt` | string | SRT subtitle file |
| `totalWords` | number | Word count of the transcript |
| `title` | string | Video title |
| `channelTitle` | string | Channel name |
| `subscriberCount` | number | Channel subscribers |
| `viewCount` | string | View count |
| `likeCount` | string | Like count |
| `commentCount` | number | Comment count |
| `likesPerViewPercentage` | string | Likes-to-views ratio |
| `keywords` | array | Video tags/keywords |
| `category` | string | Video category |
| `publishDate` | string | Publish date (ISO 8601) |
| `relatedVideos` | object | Connected/related videos |

**Example (trimmed):**

```json
{
  "videoId": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "title": "Rick Astley - Never Gonna Give You Up (Official Video)",
  "channelTitle": "Rick Astley",
  "fullTranscript": "We're no strangers to love. You know the rules and so do I...",
  "totalWords": 291,
  "totalSegments": 52,
  "vtt": "WEBVTT\n\n1\n00:00:18.560 --> 00:00:22.399\n...",
  "srt": "1\n00:00:18,560 --> 00:00:22,399\n...",
  "viewCount": "1600000000",
  "likeCount": "18000000",
  "keywords": ["Rick Astley", "Never Gonna Give You Up"],
  "category": "Music",
  "publishDate": "2009-10-25"
}
```

### 💼 Use Cases & Examples

#### 1. Content & SEO Research

**Marketers and creators mining what actually drives views.**
**Input:** competitor or niche video URLs · **Output:** transcript + keywords + engagement · **Use:** find the hooks, topics, and phrasing behind top-performing videos.

#### 2. AI, RAG & LLM Pipelines

**Data teams turning video into machine-readable knowledge.**
**Input:** a channel's video URLs · **Output:** clean structured transcripts · **Use:** feed LLMs and vector databases to build summaries, search, and Q\&A over video content.

#### 3. Subtitles & Accessibility

**Editors and publishers making video accessible.**
**Input:** any video URL · **Output:** SRT + VTT files · **Use:** caption videos, meet accessibility requirements, and translate from a clean base transcript.

#### 4. Content Repurposing

**Creators turning one video into ten assets.**
**Input:** a long-form upload · **Output:** full transcript + segments · **Use:** spin blog posts, newsletters, show notes, and social clips from a single video.

#### 5. Market & Trend Analysis

**Analysts tracking what's being said at scale.**
**Input:** trending or industry video URLs (bulk) · **Output:** transcripts + metadata · **Use:** monitor messaging, sentiment, and emerging topics across a niche.

#### 6. Research & Journalism

**Researchers and reporters quoting the record accurately.**
**Input:** interview, talk, or press-conference URLs · **Output:** timestamped transcript · **Use:** search, cite, and verify spoken content quickly.

### 🔗 Integration Examples

#### JavaScript / Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/youtube-ai-transcript-extractor').call({
  videoUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].fullTranscript);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/youtube-ai-transcript-extractor').call(
    run_input={'videoUrl': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['fullTranscript'])
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~youtube-ai-transcript-extractor/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
```

#### Automation Workflows (n8n / Zapier / Make)

1. **Trigger**: schedule or webhook
2. **HTTP Request**: call the actor API
3. **Process**: handle the JSON transcript + metadata
4. **Action**: save, notify, translate, or summarize

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **5 videos** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** videos per run
- No processing delays
- **$0.01 per video** with captions (most videos) — flat, any length; **per-minute** AI billing only when a caption-less video needs audio transcription ($0.005 per run start)

💰 **Cost-aligned pricing** — a flat cent for caption-based transcripts, and you only pay by duration when AI actually transcribes the audio.

🛡️ **Built-in cost cap.** Because you can't tell in advance whether a video has captions, the
**AI transcription limit (minutes)** input bounds what a caption-less video can cost you:

| Setting | Behaviour | Worst case per video |
|---|---|---|
| **30** (default) | AI only for caption-less videos up to 30 min | ~$0.45 |
| **0** | Never use AI — caption-less videos return metadata only | **$0.00** |
| **600** | Effectively unlimited, for podcasts and long-form | ~$9.00 |

Videos that already have captions are **never** affected — they stay a flat $0.01 at any length.
When a video is skipped by this limit you get its full metadata and are **not** charged for AI.

🔗 [View current pricing](https://apify.com/sian.agency/youtube-ai-transcript-extractor?fpr=sian)

### ❓ Frequently Asked Questions

**Q: Which YouTube URLs are supported?**
A: Standard `watch?v=`, `youtu.be` short links, `/shorts/`, `/embed/`, `/live/`, and bare 11-character video IDs.

**Q: What if a video has no captions?**
A: The actor automatically falls back to AI audio transcription, so you still get a transcript.

**Q: How many videos can I process?**
A: FREE tier: 5 per run. PAID tier: unlimited.

**Q: What output formats do I get?**
A: Plain text, timestamped segments, SRT, and VTT — export the dataset as JSON, CSV, or Excel.

**Q: Does it work with private or unlisted videos?**
A: No — only publicly accessible videos are supported.

**Q: Can I transcribe a whole list at once?**
A: Yes — paste multiple URLs or upload a CSV/TXT file; the URL column is auto-detected.

### 🐛 Troubleshooting

**"Invalid YouTube URL or video ID"**

- Check the URL is a real, public YouTube video
- A bare 11-character video ID also works (e.g. `dQw4w9WgXcQ`)

**Empty or missing transcript**

- The video may have captions disabled and no usable audio — try another video
- Very new uploads may not have captions processed yet

**Only 5 videos processed**

- That's the FREE tier limit — upgrade your Apify plan for unlimited videos per run

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

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

🎬 **SINGLE VIDEO:** Extract the transcript from one YouTube video.

✅ **SUPPORTED:**
• Watch: https://www.youtube.com/watch?v=VIDEO\_ID
• Short link: https://youtu.be/VIDEO\_ID
• Shorts: https://www.youtube.com/shorts/VIDEO\_ID
• Live / embed URLs and bare 11-character video IDs

💡 Use bulk mode below for multiple videos

## `urls` (type: `array`):

🚀 **BULK PROCESSING:** Extract transcripts from many YouTube videos at once.

💰 **TIER-BASED LIMITS:**
• **FREE users:** Up to 5 URLs per run
• **PAID users:** Unlimited URLs

📁 **FILE UPLOAD:**
• CSV files: Upload .csv with headers (auto-detects URL column)
• Text files: Upload .txt with URLs (one per line)

📝 **BULK EDIT:** Click "Bulk edit" to paste URLs (one per line)
🔗 **MANUAL ADD:** Use + Add button for individual URLs

⚠️ **IMPORTANT:** Please provide either a single URL OR bulk URLs

## `maxAiTranscriptionMinutes` (type: `integer`):

🛡️ **COST SAFETY NET.**

Most YouTube videos already have captions — those cost a flat **$0.01** each, however long they are.

When a video has **no captions**, we transcribe its audio with AI instead. That is billed **per second**, so a long video costs far more (a 3-hour upload ≈ **$2.70**). You can't tell in advance whether a video has captions, so this setting caps the exposure.

**How long a caption-less video may be before we use AI:**
• **30** (default) — up to 30 min, so at most ≈ $0.45 per video
• **0** — never use AI; caption-less videos return metadata only, no surprise cost
• **600** — effectively unlimited, for podcasts and long-form

💡 Videos that already have captions are **never** affected by this setting.

## Actor input object example

```json
{
  "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "urls": [
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    }
  ],
  "maxAiTranscriptionMinutes": 30
}
```

# Actor output Schema

## `youtubeTranscripts` (type: `string`):

Complete YouTube video data with AI-generated transcripts, engagement metrics, and rich metadata

## `rawData` (type: `string`):

Complete unprocessed data with all original fields, formats, storyboards, captions, and metadata from YouTube

## `processingSummary` (type: `string`):

HTML summary with success/failure metrics and processing statistics

# 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 = {
    "maxAiTranscriptionMinutes": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/youtube-ai-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 = { "maxAiTranscriptionMinutes": 30 }

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

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

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

```

## CLI example

```bash
echo '{
  "maxAiTranscriptionMinutes": 30
}' |
apify call sian.agency/youtube-ai-transcript-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/youtube-ai-transcript-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/kL1NOakB5FQDg6xtl/builds/DwWJM6rlVkDgjWtea/openapi.json
