# Youtube Video Subtitles Scraper (`scraperforge/youtube-video-subtitles-scraper`) Actor

- **URL**: https://apify.com/scraperforge/youtube-video-subtitles-scraper.md
- **Developed by:** [ScraperForge](https://apify.com/scraperforge) (community)
- **Categories:** Automation, Lead generation, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

Want to extract subtitles from YouTube videos in just a few clicks? 🎯  
The YouTube Video Subtitles Scraper is your go-to tool for downloading and analyzing YouTube captions from any public video — all in a clean, structured format like JSON, CSV, or Excel.

Whether you’re a content creator, data researcher, or developer, this Apify YouTube scraper gives you the power to download YouTube subtitles as text, automate caption collection, and even integrate with Python or AI-based workflows.

Perfect for users searching for YouTube Video Subtitles Scraper free, YouTube captions scraper, or YouTube scraper Python solutions — this actor delivers fast, flexible, and reliable subtitle extraction 🌍.

* * *

### 🎥 What Does YouTube Video Subtitles Scraper Do?

The YouTube Video Subtitles Scraper is a professional-grade tool that lets you scrape subtitles and captions from any YouTube video or short 📺.

It extracts:

*   🕒 Start and end timestamps  
      
    
*   💬 Subtitle text  
      
    
*   👤 Video author & channel info  
      
    
*   🏷️ Video title, tags, and description  
      
    
*   🌐 Language and caption type (manual or auto-generated)  
      
    

Built on the Apify platform, it works online — no coding required.  
Advanced users can also use YouTube scraper Python integrations or YouTube scraper Chrome extension options for automation.

* * *

### 📦 What You Can Extract with YouTube Video Subtitles Scraper

Here’s what you can scrape using this tool ⬇️

| 📁 Data Field | 📖 Description |
| --- | --- |
| Subtitle Text | Actual text content of the caption |
| Start Time | Timestamp when the subtitle begins |
| Duration | Duration of the subtitle segment |
| Language | Language of the subtitle (e.g., EN, FR, ES) |
| Video Title | Title of the YouTube video |
| Video Description | Full description of the video |
| Video URL | Original YouTube link |
| Uploader/Author | Channel name of the creator |
| Video Length | Total runtime of the video |
| Tags/Keywords | YouTube video keywords |

💡 Use it to download YouTube subtitles as text, create caption datasets, or train AI/NLP models on multilingual transcripts.

* * *

#### 🌟 Key Features of “YouTube Video Subtitles Scraper”

*   🧠 Automatic Language Detection: Extracts captions in multiple languages with optional translation.  
      
    
*   🕹️ Simple Input Schema: Just paste your YouTube URLs, hit “Start,” and get subtitles instantly.  
      
    
*   ⚡ Supports Auto-Generated & Manual Captions: Choose between ASR (auto) or user-provided subtitles.  
      
    
*   📦 Multi-Format Export: Download results in JSON, Excel, CSV, or HTML.  
      
    
*   💡 Developer Friendly: Integrates smoothly with YouTube scraper Python or YouTube channel scraper GitHub scripts.  
      
    
*   🧩 Scalable for Bulk Use: Scrape subtitles from hundreds of videos in a single run.  
      
    
*   🔒 Secure & Ethical: Scrapes only publicly available captions.  
      
    
*   🤖 AI-Compatible: Use results for YouTube scraper AI models or language research.  
      
    

This makes it one of the most complete and flexible YouTube captions scrapers available today 🎯.

* * *

### 🧭 How to Use YouTube Video Subtitles Scraper (Step-by-Step)

Using the YouTube Video Subtitles Scraper app is super easy — even if you’ve never scraped data before 👇

1.  🔐 Sign Up on Apify – Create a free account to access the tool.  
      
    
2.  🔎 Find the Actor – Search for “YouTube Video Subtitles Scraper” in the Apify Store.  
      
    
3.  📥 Enter YouTube URLs – Paste one or more video URLs (or import a CSV list).  
      
    
4.  ⚙️ Select Options – Choose subtitle language, include auto-generated captions, and preferred format.  
      
    
5.  ▶️ Run the Scraper – Click “Start” to begin extraction.  
      
    
6.  💾 Download Your Data – Export subtitles in JSON, CSV, Excel, or TXT format.  
      
    

✅ You can even integrate it with your own YouTube scraper Python code or use a YouTube video to subtitles converter workflow.

* * *

### 🎯 Use Cases for YouTube Video Subtitles Scraper

Here’s how creators, researchers, and businesses use this powerful scraper:

*   🎓 AI & NLP Training: Build language datasets from captions for machine learning.  
      
    
*   🎬 Video Analysis: Study dialogue, keywords, or tone in videos.  
      
    
*   🧑‍💻 Accessibility & Translation: Convert subtitles into different languages for global audiences.  
      
    
*   📚 Academic Research: Collect caption data for linguistic or media studies.  
      
    
*   📈 Content SEO: Analyze trending keywords from captions for optimization.  
      
    
*   🧰 Automation & Integration: Combine with YouTube scraper Chrome extension or Apify workflows for auto-downloads.  
      
    

💡 It’s the perfect tool for researchers, educators, and developers needing accurate subtitle data — fast.

* * *

### 💎 Why Choose Our YouTube Video Subtitles Scraper?

Here’s what makes this scraper stand out 🌟

| ✅ Feature | 🚀 Benefit |
| --- | --- |
| User-Friendly Interface | No coding required — start scraping in seconds |
| Free Plan Available | Try the YouTube Video Subtitles Scraper free |
| API Integration | Automate extraction with Apify YouTube Scraper API |
| Multi-Language Support | Extract captions in any available language |
| Export Options | JSON, CSV, Excel, or plain text |
| Custom Solutions | Add-on support for transcripts and metadata |

Compared to manual tools or browser plugins, this YouTube Video Subtitles Scraper online solution is faster, more reliable, and enterprise-ready 💪.

* * *

### 📈 How Many Results Can You Scrape?

The scraper is built to handle massive workloads on Apify’s cloud infrastructure.

*   ⚙️ Process hundreds of videos simultaneously.  
      
    
*   🔁 Schedule automated scraping sessions for ongoing projects.  
      
    
*   🌐 Works seamlessly across public YouTube videos and Shorts.  
      
    
*   🧮 Proxy-ready for reliability on large runs.  
      
    

Ideal for agencies, developers, and data scientists running YouTube captions scraper or YouTube channel scraper GitHub integrations.

* * *

### ⚖️ Is It Legal to Scrape YouTube Subtitles?

✅ Yes — when used responsibly.

The YouTube Video Subtitles Scraper only extracts publicly available captions, never private or hidden data.  
To remain compliant:

*   📜 Always review YouTube’s Terms of Service.  
      
    
*   🧩 Avoid scraping restricted or copyrighted materials.  
      
    
*   ⚖️ Use scraped data ethically for research or fair-use analysis.  
      
    

💡 Remember: YouTube often hosts auto-generated captions, which are considered public metadata, so scraping them for educational or analytical use is generally permissible.

* * *

### 🧾 Input Parameters

Example JSON Input:
```json
{
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "startUrls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ]
}
````

### 📤 Output Format

Example JSON Output:

```json
[
  {
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
    "channel_name": "Rick Astley",
    "length": "3:33",
    "views": 1708447413,
    "transcript": [
      {
        "start": "1.360",
        "dur": "1.680",
        "text": "[♪♪♪]"
      },
      {
        "start": "18.640",
        "dur": "3.240",
        "text": "♪ We're no strangers to love ♪"
      },
      {
        "start": "22.640",
        "dur": "4.320",
        "text": "♪ You know the rules\nand so do I ♪"
      },
      {
        "start": "27.040",
        "dur": "4.000",
        "text": "♪ A full commitment's\nwhat I'm thinking of ♪"
      },
      {
        "start": "31.120",
        "dur": "3.960",
        "text": "♪ You wouldn't get this\nfrom any other guy ♪"
      },
      {
        "start": "35.160",
        "dur": "4.360",
        "text": "♪ I just wanna tell you\nhow I'm feeling ♪"
      },
      {
        "start": "40.520",
        "dur": "2.400",
        "text": "♪ Gotta make you understand ♪"
      },
      {
        "start": "43.000",
        "dur": "2.120",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "45.200",
        "dur": "1.880",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "47.320",
        "dur": "3.800",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "51.480",
        "dur": "2.000",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "53.600",
        "dur": "1.920",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "55.720",
        "dur": "3.640",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      },
      {
        "start": "60.800",
        "dur": "4.000",
        "text": "♪ We've known each other\nfor so long ♪"
      },
      {
        "start": "64.880",
        "dur": "4.160",
        "text": "♪ Your heart's been aching\nbut you're too shy to say it ♪"
      },
      {
        "start": "69.120",
        "dur": "3.840",
        "text": "♪ Inside we both know\nwhat's been going ♪"
      },
      {
        "start": "73.360",
        "dur": "3.840",
        "text": "♪ We know the game\nand we're gonna play it ♪"
      },
      {
        "start": "77.400",
        "dur": "4.640",
        "text": "♪ And if you ask me\nhow I'm feeling ♪"
      },
      {
        "start": "82.400",
        "dur": "2.840",
        "text": "♪ Don't tell me\nyou're too blind to see ♪"
      },
      {
        "start": "85.320",
        "dur": "1.960",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "87.360",
        "dur": "1.960",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "89.440",
        "dur": "4.280",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "93.800",
        "dur": "1.800",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "95.760",
        "dur": "2.240",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "98.080",
        "dur": "3.960",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      },
      {
        "start": "102.200",
        "dur": "1.920",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "104.280",
        "dur": "2.080",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "106.480",
        "dur": "3.600",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "110.760",
        "dur": "1.960",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "112.800",
        "dur": "1.880",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "114.960",
        "dur": "3.800",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      },
      {
        "start": "119.840",
        "dur": "3.120",
        "text": "♪ (Ooh, give you up) ♪"
      },
      {
        "start": "123.720",
        "dur": "3.640",
        "text": "♪ (Ooh, give you up) ♪"
      },
      {
        "start": "128.480",
        "dur": "1.640",
        "text": "♪ Never gonna give,\nnever gonna give ♪"
      },
      {
        "start": "130.240",
        "dur": "1.320",
        "text": "♪ (Give you up) ♪"
      },
      {
        "start": "132.480",
        "dur": "1.760",
        "text": "♪ Never gonna give,\nnever gonna give ♪"
      },
      {
        "start": "134.360",
        "dur": "1.560",
        "text": "♪ (Give you up) ♪"
      },
      {
        "start": "136.760",
        "dur": "4.320",
        "text": "♪ We've known each other\nfor so long ♪"
      },
      {
        "start": "141.200",
        "dur": "4.000",
        "text": "♪ Your heart's been aching\nbut you're too shy to say it ♪"
      },
      {
        "start": "145.280",
        "dur": "3.840",
        "text": "♪ Inside we both know\nwhat's been going ♪"
      },
      {
        "start": "149.520",
        "dur": "3.680",
        "text": "♪ We know the game\nand we're gonna play it ♪"
      },
      {
        "start": "153.360",
        "dur": "4.680",
        "text": "♪ I just wanna tell you\nhow I'm feeling ♪"
      },
      {
        "start": "158.640",
        "dur": "2.680",
        "text": "♪ Gotta make you understand ♪"
      },
      {
        "start": "161.400",
        "dur": "1.960",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "163.440",
        "dur": "2.200",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "165.720",
        "dur": "4.000",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "169.800",
        "dur": "1.840",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "171.800",
        "dur": "2.160",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "174.040",
        "dur": "3.560",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      },
      {
        "start": "178.200",
        "dur": "2.040",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "180.320",
        "dur": "2.120",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "182.520",
        "dur": "4.120",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "186.720",
        "dur": "2.000",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "188.840",
        "dur": "1.880",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "190.840",
        "dur": "4.360",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      },
      {
        "start": "195.280",
        "dur": "1.840",
        "text": "♪ Never gonna give you up ♪"
      },
      {
        "start": "197.200",
        "dur": "2.040",
        "text": "♪ Never gonna let you down ♪"
      },
      {
        "start": "199.400",
        "dur": "3.720",
        "text": "♪ Never gonna run around\nand desert you ♪"
      },
      {
        "start": "203.360",
        "dur": "2.240",
        "text": "♪ Never gonna make you cry ♪"
      },
      {
        "start": "205.680",
        "dur": "2.160",
        "text": "♪ Never gonna say goodbye ♪"
      },
      {
        "start": "207.920",
        "dur": "3.400",
        "text": "♪ Never gonna tell a lie\nand hurt you ♪"
      }
    ],
    "message": "Transcript loaded from subtitles:en",
    "success": true
  }
]
```

### ❓ FAQ – YouTube Video Subtitles Scraper

#### 1️⃣ What is YouTube Video Subtitles Scraper?

It’s a tool that extracts and downloads subtitles (captions) from YouTube videos automatically.

#### 2️⃣ Can I download YouTube subtitles as text?

Yes — you can download YouTube subtitles as text, JSON, or CSV directly from the output.

#### 3️⃣ Is the scraper free to use?

Yes, you can use the YouTube Video Subtitles Scraper free under Apify’s starter plan.

#### 4️⃣ Does it support multiple languages?

Absolutely! It supports subtitles in any available YouTube language.

#### 5️⃣ Can I use this with Python?

Yes — integrate with YouTube scraper Python libraries or use Apify SDK for automation.

#### 6️⃣ Is there a GitHub version?

You can explore related projects like YouTube channel scraper GitHub or youtube-captions-scraper for development references.

#### 7️⃣ Can this tool work online?

Yes, the YouTube Video Subtitles Scraper online works fully in your browser — no installation required.

#### 8️⃣ Is it safe and legal?

Yes — it only scrapes public subtitle data and is compliant when used for fair, ethical purposes.

### 🚀 Final Thoughts

The YouTube Video Subtitles Scraper is the easiest and most reliable way to extract, analyze, and download subtitles from YouTube videos — all without writing a single line of code.

Whether you’re building an AI transcription model, translating content, or collecting insights, this Apify YouTube scraper offers professional-level results at lightning speed ⚡

💡 Start using the YouTube Video Subtitles Scraper today and turn YouTube captions into valuable data for your business, research, or automation workflows! 🎥

### What are other Youtube scraping tools?

If you want to scrape specific Youtube data, you can use any of the dedicated scrapers below for faster and more targeted results.

| Scraper Name | Scraper Name |
|---|---|
| [Youtube B2b Email Scraper](https://apify.com/api-empire/youtube-b2b-email-scraper) | [YouTube Most Replayed Scraper](https://apify.com/api-empire/youtube-most-replayed-scraper) |
| [Youtube B2b Lead Scraper](https://apify.com/api-empire/youtube-b2b-lead-scraper) | [Youtube Phone Number Scraper](https://apify.com/api-empire/youtube-phone-number-scraper) |
| [Youtube B2b Phone Number Scraper](https://apify.com/api-empire/youtube-b2b-phone-number-scraper) | [YouTube Playlist Extractor](https://apify.com/api-empire/youtube-playlist-extractor) |
| [Youtube Channel Email Scraper](https://apify.com/api-empire/youtube-channel-email-scraper) | [Youtube Scraper](https://apify.com/api-empire/youtube-scraper) |
| [Youtube Channel Finder](https://apify.com/api-empire/youtube-channel-finder) | [Youtube Search And Channel Scraper](https://apify.com/api-empire/youtube-search-and-channel-scraper) |
| [Youtube Channel Lead Scraper](https://apify.com/api-empire/youtube-channel-lead-scraper) | [Youtube Search Scraper](https://apify.com/api-empire/youtube-search-scraper) |
| [Youtube Channel Phone Number Scraper](https://apify.com/api-empire/youtube-channel-phone-number-scraper) | [Youtube Shorts Scraper](https://apify.com/api-empire/youtube-shorts-scraper) |
| [Youtube Channel Scraper](https://apify.com/api-empire/youtube-channel-scraper) | [Youtube Transcript Scraper](https://apify.com/api-empire/youtube-transcript-scraper) |
| [Youtube Comments Scraper](https://apify.com/api-empire/youtube-comments-scraper) | [Youtube Trending Scraper](https://apify.com/api-empire/youtube-trending-scraper) |
| [YouTube Community Posts Scraper](https://apify.com/api-empire/youtube-community-posts-scraper) | [Youtube Video Details Scraper](https://apify.com/api-empire/youtube-video-details-scraper) |
| [Youtube Email Scraper](https://apify.com/api-empire/youtube-email-scraper) | [YouTube Video Scraper By Hashtag](https://apify.com/api-empire/youtube-video-scraper-by-hashtag) |
| [YouTube Lead Scraper](https://apify.com/api-empire/youtube-lead-scraper) | [YouTube Video Summarizer](https://apify.com/api-empire/youtube-video-summarizer) |
| [Youtube Metadata Scraper](https://apify.com/api-empire/youtube-metadata-scraper) |  |

# Actor input Schema

## `startUrls` (type: `array`):

📥 Add YouTube video URLs (example: https://www.youtube.com/watch?v=VIDEO\_ID) or channel usernames (example: mrbeast, @mrbeast). Supports bulk input - one URL/username per line. 🚀

## `language` (type: `string`):

🗣️ Choose transcript language (examples: 'en' English, 'es' Spanish, 'fr' French). Leave empty for automatic detection. 🤖

## `maxWorkers` (type: `integer`):

🚦 Number of parallel workers (1-10). Higher values process videos faster but use more resources.

## `proxyConfiguration` (type: `object`):

🌐 Configure proxy preferences for better reliability when needed. Leave default settings for normal use.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "language": "en",
  "maxWorkers": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperforge/youtube-video-subtitles-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 = {
    "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scraperforge/youtube-video-subtitles-scraper").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 '{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scraperforge/youtube-video-subtitles-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraperforge/youtube-video-subtitles-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Youtube Video Subtitles Scraper",
        "description": null,
        "version": "1.0",
        "x-build-id": "sY4POj6CmAE8kiWjx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperforge~youtube-video-subtitles-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperforge-youtube-video-subtitles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraperforge~youtube-video-subtitles-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperforge-youtube-video-subtitles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraperforge~youtube-video-subtitles-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperforge-youtube-video-subtitles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "🔗 YouTube URLs or Channel Usernames",
                        "type": "array",
                        "description": "📥 Add YouTube video URLs (example: https://www.youtube.com/watch?v=VIDEO_ID) or channel usernames (example: mrbeast, @mrbeast). Supports bulk input - one URL/username per line. 🚀",
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "🌍 Preferred Language Code",
                        "type": "string",
                        "description": "🗣️ Choose transcript language (examples: 'en' English, 'es' Spanish, 'fr' French). Leave empty for automatic detection. 🤖",
                        "default": "en"
                    },
                    "maxWorkers": {
                        "title": "⚙️ Maximum Concurrent Workers",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "🚦 Number of parallel workers (1-10). Higher values process videos faster but use more resources.",
                        "default": 4
                    },
                    "proxyConfiguration": {
                        "title": "🛡️ Proxy Configuration",
                        "type": "object",
                        "description": "🌐 Configure proxy preferences for better reliability when needed. Leave default settings for normal use."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
