# Video Transcript Scraper (`igview-owner/video-transcript-scraper`) Actor

Extract video transcripts from any platform instantly! Get full transcripts with timestamps from YouTube, TikTok, Facebook, Vimeo, Loom & more. Perfect for content creators, SEO, accessibility, and video-to-text conversion. Supports 100+ videos per run. No login required!

- **URL**: https://apify.com/igview-owner/video-transcript-scraper.md
- **Developed by:** [Sachin Kumar Yadav](https://apify.com/igview-owner) (community)
- **Categories:** Videos, Automation, Developer tools
- **Stats:** 37 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

from $5.00 / 1,000 results

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

## 🎬 Video Transcript Scraper

**Extract transcripts and captions from videos on any platform! Supports YouTube, Facebook, TikTok, Vimeo, DailyMotion, Loom, X (Twitter), and more. Get comprehensive video metadata, full transcript text, and detailed timestamps. Perfect for content research, accessibility, SEO, and video analysis.**

### 📋 Table of Contents

- [✨ Key Features](#-key-features)
- [📊 Input Parameters](#-input-parameters)
- [📤 Output Data Structure](#-output-data-structure)
- [💡 Usage Examples](#-usage-examples)
- [🎯 Use Cases](#-use-cases)
- [🎥 Supported Platforms](#-supported-platforms)
- [❓ Frequently Asked Questions](#-frequently-asked-questions)
- [💬 Support](#-support)
- [🏷️ Tags](#️-tags)

***

### ✨ Key Features

| Feature | Description |
|---------|-------------|
| 🌐 **Multi-Platform Support** | Extract transcripts from YouTube, Facebook, TikTok, Vimeo, DailyMotion, Loom, X, and more |
| 📝 **Full Transcript Text** | Get complete transcript with all text segments combined |
| ⏰ **Timestamp Data** | Detailed timestamps for each transcript segment (start/end times) |
| 🎬 **Video Metadata** | Title, description, thumbnail, channel info, views, likes, duration |
| 🏷️ **Keywords & Category** | Extract video keywords and category information |
| 🌍 **Language Support** | Auto-detect transcript language or specify preferred language |
| 📊 **Engagement Metrics** | Views, likes, and other engagement statistics |
| ⚡ **Fast & Reliable** | Built-in retry logic and error handling |

***

### 📊 Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| **videoUrls** | Array | ✅ Yes | - | List of video URLs to extract transcripts from (1-100 URLs) |

#### Supported URL Formats

- **YouTube Videos**: `https://www.youtube.com/watch?v=VIDEO_ID`
- **YouTube Shorts**: `https://www.youtube.com/shorts/VIDEO_ID`
- **Facebook Videos**: `https://www.facebook.com/USER/videos/VIDEO_ID`
- **TikTok Videos**: `https://www.tiktok.com/@USER/video/VIDEO_ID`
- **Vimeo Videos**: `https://vimeo.com/VIDEO_ID`
- **DailyMotion**: `https://www.dailymotion.com/video/VIDEO_ID`
- **Loom**: `https://www.loom.com/share/VIDEO_ID`
- **X (Twitter)**: `https://x.com/USER/status/VIDEO_ID`

***

### 📤 Output Data Structure

Each extracted video transcript contains comprehensive information:

#### Video Information

| Field | Type | Description |
|-------|------|-------------|
| `index` | Number | Index number of the video in the input list |
| `status` | String | Processing status ("success" or "error") |
| `title` | String | Video title |
| `description` | String | Video description |
| `thumbnail` | String | Video thumbnail URL |
| `videoUrl` | String | Original video URL |
| `inputUrl` | String | Input URL provided |

#### Channel/Author Information

| Field | Type | Description |
|-------|------|-------------|
| `channel` | String | Channel or author name |
| `channelUrl` | String | Channel URL |

#### Video Statistics

| Field | Type | Description |
|-------|------|-------------|
| `duration` | Number | Video duration in seconds |
| `views` | Number | Number of views |
| `likes` | Number | Number of likes |

#### Metadata

| Field | Type | Description |
|-------|------|-------------|
| `category` | String | Video category (e.g., "Education", "Entertainment") |
| `publishedDate` | String | Video published date |
| `keywords` | String | Comma-separated keywords |
| `keywordsArray` | Array | Array of keywords |
| `selectedLanguage` | String | Language code of the transcript (e.g., "en") |

#### Transcript Data

| Field | Type | Description |
|-------|------|-------------|
| `transcriptSegments` | Number | Total number of transcript segments |
| `transcriptDuration` | Number | Total transcript duration in seconds |
| `fullTranscript` | String | Complete transcript text (all segments combined) |
| `transcriptWithTimestamps` | Array | Detailed transcript segments with timestamps |

##### Transcript Segment Structure

Each segment in `transcriptWithTimestamps` contains:

```json
{
  "text": "the simplest tip I can give you for",
  "start": 1.23,
  "end": 1.24
}
```

#### Error Records

When a video fails to process, the following fields are returned:

| Field | Type | Description |
|-------|------|-------------|
| `index` | Number | Index number of the video |
| `status` | String | "error" |
| `inputUrl` | String | Input URL that failed |
| `errorCode` | Number | HTTP error code |
| `errorMessage` | String | Error description |

***

### 💡 Usage Examples

#### Example 1: Single YouTube Video

Extract transcript from a YouTube video:

```json
{
  "videoUrls": [
    "https://www.youtube.com/shorts/QBUOitps6AI"
  ]
}
```

#### Example 2: Multiple Videos from Different Platforms

Extract transcripts from multiple platforms:

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.facebook.com/MissLilFlip/videos/463691996530759/",
    "https://vimeo.com/123456789",
    "https://www.tiktok.com/@user/video/1234567890"
  ]
}
```

#### Example 3: Batch Processing YouTube Shorts

Process multiple YouTube Shorts:

```json
{
  "videoUrls": [
    "https://www.youtube.com/shorts/VIDEO_ID_1",
    "https://www.youtube.com/shorts/VIDEO_ID_2",
    "https://www.youtube.com/shorts/VIDEO_ID_3"
  ]
}
```

#### Example 4: Educational Content Research

Extract transcripts from educational videos:

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=EDUCATIONAL_VIDEO_1",
    "https://www.youtube.com/watch?v=EDUCATIONAL_VIDEO_2",
    "https://www.loom.com/share/TUTORIAL_VIDEO"
  ]
}
```

***

### 🎯 Use Cases

#### 📝 Content Creation & Research

- **Video-to-Text Conversion** - Convert video content to text format
- **Content Repurposing** - Transform video content into blog posts, articles, or social media content
- **Research & Analysis** - Extract and analyze video content for research purposes
- **Quote Extraction** - Find and extract specific quotes from videos

#### ♿ Accessibility & Compliance

- **Subtitle Generation** - Create subtitles and captions for videos
- **Accessibility Compliance** - Ensure content meets accessibility standards (WCAG, ADA)
- **Closed Captions** - Generate closed captions for hearing-impaired audiences
- **Multi-language Support** - Extract transcripts in different languages

#### 🔍 SEO & Marketing

- **SEO Optimization** - Extract video content for SEO purposes
- **Keyword Research** - Analyze keywords used in video content
- **Content Marketing** - Create written content from video transcripts
- **Meta Description** - Generate meta descriptions from video content

#### 📊 Data Analysis & Insights

- **Sentiment Analysis** - Analyze sentiment in video content
- **Topic Modeling** - Identify topics discussed in videos
- **Trend Analysis** - Track trending topics across video platforms
- **Competitive Analysis** - Analyze competitor video content

#### 🎓 Education & Training

- **Course Material** - Extract transcripts from educational videos
- **Study Notes** - Create study materials from lecture videos
- **Training Documentation** - Document training videos
- **Language Learning** - Extract transcripts for language learning purposes

***

### 🎥 Supported Platforms

| Platform | Support | URL Format |
|----------|---------|------------|
| ✅ **YouTube** | Full Support | `youtube.com/watch?v=*` |
| ✅ **YouTube Shorts** | Full Support | `youtube.com/shorts/*` |
| ✅ **Facebook** | Full Support | `facebook.com/*/videos/*` |
| ✅ **TikTok** | Full Support | `tiktok.com/@*/video/*` |
| ✅ **Vimeo** | Full Support | `vimeo.com/*` |
| ✅ **DailyMotion** | Full Support | `dailymotion.com/video/*` |
| ✅ **Loom** | Full Support | `loom.com/share/*` |
| ✅ **X (Twitter)** | Full Support | `x.com/*/status/*` |
| ✅ **And More** | Growing | Various formats |

***

### ❓ Frequently Asked Questions

#### General Questions

**Q: What is Video Transcript Scraper?**\
A: A powerful Apify actor that extracts transcripts and captions from videos on any platform, providing comprehensive video metadata and detailed timestamp data.

**Q: How many videos can I process at once?**\
A: You can process up to 100 video URLs in a single run.

**Q: Is this scraper free to use?**\
A: The actor runs on Apify platform. You'll need an Apify account and will be charged based on platform usage (compute units).

**Q: What data format does it output?**\
A: Data is exported in JSON, CSV, Excel, HTML, or XML format through Apify's dataset storage.

#### Platform Support

**Q: Which video platforms are supported?**\
A: YouTube (videos & shorts), Facebook, TikTok, Vimeo, DailyMotion, Loom, X (Twitter), and many more platforms.

**Q: Can I extract transcripts from private videos?**\
A: No, the scraper only works with publicly accessible videos that have available transcripts.

**Q: What if a video doesn't have a transcript?**\
A: The scraper will return an error status for that video with the message "Video not found or transcript unavailable."

#### Transcript & Language

**Q: What languages are supported?**\
A: The scraper automatically detects and extracts transcripts in any available language. The language is indicated in the `selectedLanguage` field.

**Q: Can I get transcripts in multiple languages?**\
A: The scraper extracts the default or auto-detected transcript language. For specific language requirements, check if the video has transcripts in that language.

**Q: Are timestamps included?**\
A: Yes! Each transcript segment includes start and end timestamps in seconds.

#### Technical Questions

**Q: How long does it take to run?**\
A: Typically 1-5 seconds per video, depending on video length and platform response time.

**Q: What if a video URL is invalid?**\
A: The scraper will return an error record for that URL with appropriate error code and message.

**Q: Does it handle rate limits?**\
A: Yes, the actor has built-in retry logic and error handling to manage rate limits automatically.

**Q: Can I schedule regular runs?**\
A: Yes, use Apify's scheduler feature to run the actor at specific intervals (hourly, daily, weekly).

#### Data & Export

**Q: What file formats are supported?**\
A: JSON, CSV, Excel (XLSX), HTML, XML, and RSS feed formats.

**Q: Can I integrate this with other tools?**\
A: Yes, use Apify's API or webhooks to integrate with your tools and workflows.

**Q: How do I download the extracted data?**\
A: Data is automatically saved to Apify dataset. You can download it from the platform or access via API.

**Q: What's included in the full transcript?**\
A: The `fullTranscript` field contains all transcript segments combined into a single text string, while `transcriptWithTimestamps` provides detailed segment-by-segment data with timestamps.

***

### 💬 Support

#### Need Help?

- 📧 **Issues** - Report bugs through Apify platform
- 💡 **Feature Requests** - Submit enhancement suggestions
- 🤝 **Community** - Join Apify community for discussions

#### Troubleshooting

| Issue | Solution |
|-------|----------|
| "Video not found or transcript unavailable" | Verify the video URL is correct and publicly accessible with transcripts |
| Rate limit errors | The actor automatically handles this with retry logic |
| Invalid URL format | Ensure URLs are complete and properly formatted |
| Empty dataset | Check if all video URLs are valid and have available transcripts |

***

### 🏷️ Tags

`video transcript scraper`, `youtube transcript scraper`, `video to text converter`, `transcript extractor`, `caption scraper`, `subtitle extractor`, `video transcript api`, `youtube caption downloader`, `facebook video transcript`, `tiktok transcript scraper`, `vimeo transcript extractor`, `video accessibility tool`, `closed caption scraper`, `video seo tool`, `content repurposing tool`, `video analysis tool`, `transcript with timestamps`, `multi-platform video scraper`, `video metadata extractor`, `video keyword extractor`, `educational video transcripts`, `video content research`, `video data extraction`, `automated transcription`, `video to text api`, `social media video scraper`, `video marketing tool`, `content creation tool`, `accessibility compliance`, `wcag compliance tool`, `video subtitle generator`, `transcript downloader`, `video content analyzer`, `batch video processing`

***

### 🚀 Get Started Now

**Ready to extract video transcripts?**

1. 🔗 Add **Video URLs** (YouTube, Facebook, TikTok, Vimeo, etc.)
2. ▶️ Click **Start** to run the actor
3. 📥 Download your transcript data in JSON, CSV, Excel, or HTML format
4. Click ["Try for free"](https://apify.com?fpr=ykgg9c) to test the actor

**⭐ If this actor helps your workflow, please give it a star!**

***

### 📊 Dataset Views

The actor provides 5 organized table views for easy data analysis:

1. **📝 Transcript Overview** - Quick summary with title, channel, duration, segments, language, and full transcript
2. **🎬 Video Details** - Comprehensive video information including title, description, thumbnail, and URLs
3. **📊 Engagement Stats** - Views, likes, duration, category, and published date
4. **⏰ Transcript Segments** - Detailed timestamps with segment-by-segment data
5. **🏷️ Keywords & Metadata** - Keywords, category, language, and metadata

***

**Made with ❤️ for Apify Platform**

# Actor input Schema

## `videoUrls` (type: `array`):

Enter one or more video URLs to extract transcripts from. Supports YouTube videos, YouTube Shorts, Facebook videos, TikTok videos, Vimeo, DailyMotion, Loom, X (Twitter) videos, and more!

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.facebook.com/MissLilFlip/videos/how-to-apply-text-and-captions-to-your-video/463691996530759/"
  ]
}
```

# Actor output Schema

## `transcriptOverview` (type: `string`):

Open the dataset view with an overview of all extracted transcripts including title, channel, duration, segments count, language, and full transcript text.

## `videoDetails` (type: `string`):

Open the dataset view with detailed video information including title, description, thumbnail, video URL, channel name, channel URL, published date, and category.

## `engagementStats` (type: `string`):

Open the dataset view with video engagement metrics including views, likes, duration, category, and published date.

## `transcriptSegments` (type: `string`):

Open the dataset view with detailed transcript segments including timestamps, segment count, duration, and full segment data with start/end times.

## `keywordsAndMeta` (type: `string`):

Open the dataset view with video keywords, category, language, published date, and scraping timestamp metadata.

# 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 = {
    "videoUrls": [
        "https://www.facebook.com/MissLilFlip/videos/how-to-apply-text-and-captions-to-your-video/463691996530759/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("igview-owner/video-transcript-scraper").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 = { "videoUrls": ["https://www.facebook.com/MissLilFlip/videos/how-to-apply-text-and-captions-to-your-video/463691996530759/"] }

# Run the Actor and wait for it to finish
run = client.actor("igview-owner/video-transcript-scraper").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 '{
  "videoUrls": [
    "https://www.facebook.com/MissLilFlip/videos/how-to-apply-text-and-captions-to-your-video/463691996530759/"
  ]
}' |
apify call igview-owner/video-transcript-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,igview-owner/video-transcript-scraper"
        }
    }
}

```

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/horsh7zPO5e7Zd4ie/builds/Z5ggBwWBmcNeUl8bO/openapi.json
