# Ultimate YouTube Scraper — Videos, Transcripts & Comments (`pro100chok/youtube-scraper-all-in-one`) Actor

Scrape YouTube without an API key or limits. Extract video details, channel data, search results, Shorts, comments &
replies, transcripts/subtitles and playlists — all in one actor. Auto-extracts emails & social links from channels.
Export to JSON, CSV & Excel. Fast, bulk, no quotas.

- **URL**: https://apify.com/pro100chok/youtube-scraper-all-in-one.md
- **Developed by:** [Raven](https://apify.com/pro100chok) (community)
- **Categories:** Videos, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 video 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/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

## YouTube Scraper All-in-One 🎬 — Videos, Channels, Comments, Transcripts, Shorts & Playlists

**The only YouTube scraper you'll ever need.** Extract videos, channel data, search results, Shorts, comments, transcripts/subtitles and playlists — all from a single actor. **No YouTube Data API key, no quotas, no OAuth, no rate limits.** Just pick a Search Type, paste your URLs or keywords, and download clean structured data as JSON, CSV, Excel, XML or HTML.

This all-in-one YouTube scraper replaces an entire toolbox of separate scrapers — a YouTube video scraper, channel scraper, comments scraper, transcript/subtitle scraper, Shorts scraper and playlist scraper — combined into one fast, reliable tool.

---

### ⭐ Why use this YouTube Scraper?

- ✅ **7 scrapers in one** — videos, channels, search, Shorts, comments, transcripts, playlists.
- ✅ **No API key & no quotas** — bypass the 10,000-unit/day limit of the official YouTube Data API.
- ✅ **Bulk extraction** — scrape thousands of videos, channels and comments in one run.
- ✅ **Full transcripts & subtitles** — SRT, WebVTT, XML or plain text, in any available language.
- ✅ **Comments + replies** — with likes, author, verified and channel-owner flags.
- ✅ **Contact & social extraction** — emails, Instagram, TikTok, X/Twitter, Telegram, Discord and more, pulled automatically from channel & video descriptions.
- ✅ **Advanced search filters** — sort, upload date, duration, type and HD/4K/CC/Live features.
- ✅ **Export anywhere** — JSON, CSV, Excel, XML, HTML, or via API & integrations (Make, Zapier, n8n).

---

### 🎯 What you can scrape

| Search Type | What you get |
|---|---|
| 🎥 **Video details** | Title, views, likes, comment count, duration, full description, hashtags, tags/keywords, channel, publish date, thumbnails and available captions — for any video URL |
| 📺 **Channel** | Full channel profile **+** its videos, Shorts, live streams and playlists, with date filtering and sort options |
| 🔎 **Search** | YouTube keyword search with filters: sort by relevance/date/views/rating, upload date, duration, type, and features (HD, 4K, CC, Live, 360, HDR…) |
| ⚡ **Shorts** | Shorts from any channel, with view counts, titles and dates |
| 💬 **Comments** | Every comment **and reply**, with like counts, author handle, verified badge and channel-owner flag |
| 📝 **Transcript** | Full transcript with timestamps, exported as SRT / WebVTT / XML / plain text, in any available language |
| 🎶 **Playlist** | Every video in a playlist, in order, with duration, position and channel |

➕ **Automatic contact extraction** — emails, social profiles (Instagram, TikTok, X/Twitter, Discord, Telegram, Facebook, Twitch, LinkedIn, and more), the channel's external links (with their real URLs), country, join date and total view count are pulled from channel and video descriptions and the channel's *About* panel.

---

### 🧩 7 YouTube scrapers in one — pick your mode

#### 🎥 YouTube Video Scraper (video details by URL)
Extract full metadata for any YouTube video: **title, view count, like count, comment count, duration, description, hashtags, tags/keywords, channel, publish date, thumbnails and available captions**. Paste one or many video URLs and get a clean record per video. Ideal for building **video datasets**, tracking performance, and content research.

#### 📺 YouTube Channel Scraper (channel data + uploads)
Scrape a complete **YouTube channel profile** — name, handle, **subscriber count, total views, total videos, country, join date, banner & avatar, verification status** and **external links / contacts** — plus all of the channel's **videos, Shorts, live streams and playlists**. Filter by date and sort by newest/popular/oldest.

In Channel mode the **channel-info record is always emitted first**, followed by the requested videos/Shorts/streams. The number of each content type is controlled by its own cap (*Max videos / Shorts / streams per channel*) — **not** by *Max items*. Set **Max videos per channel = 0** (and Shorts/streams = 0) for **channel info only**.

#### 🔎 YouTube Search Scraper (keyword search)
Run a **YouTube keyword search** and collect every result with **advanced filters**: sort by relevance / upload date / view count / rating, filter by upload date, duration, type (video/channel/playlist/movie) and features (**HD, 4K, CC/subtitles, Live, 360°, HDR, VR180, Location, Creative Commons**). Great for **SEO and keyword research**, trend discovery and competitor monitoring.

#### ⚡ YouTube Shorts Scraper
Extract **YouTube Shorts** from any channel — **title, view count, thumbnail, video ID and date**. Filter Shorts by date and limit how many you pull per channel. Perfect for **short-form video research** and viral trend tracking.

#### 💬 YouTube Comments Scraper (comments + replies)
Scrape **all YouTube comments and replies** from any video — **comment text, like count, reply count, author handle, verified badge, channel-owner flag and comment ID**. No quotas, no limits. Ideal for **sentiment analysis, audience research and moderation**.

#### 📝 YouTube Transcript Scraper (subtitles & captions)
Download the **full transcript / subtitles** of any YouTube video with timestamps, exported as **SRT, WebVTT, XML or plain text**, in **any available language** (manual or auto-generated). Perfect for **repurposing content, accessibility, translation and AI/LLM training data**.

#### 🎶 YouTube Playlist Scraper
Extract **every video in a YouTube playlist** — in order, with **title, position, duration, channel and thumbnail**. Handles playlists of any size with automatic pagination.

---

### 🚀 How to use the YouTube Scraper (step by step)

1. **Choose a Search Type** from the dropdown.
2. **Fill the matching section:**
   - **Video / Comments / Transcript** → paste **video URLs** into *YouTube URLs*.
   - **Channel / Shorts** → paste **channel URLs** or `@handles`.
   - **Search** → type **keywords** into *Search queries*.
   - **Playlist** → paste **playlist URLs**.
3. **Set your limits** (max videos, max comments, etc.) and click **Start**.
4. **Download your data** from the Output tab or via the Apify API.

> 💡 Tip: Enable **"Download subtitles with videos"** in any video-producing mode to attach a transcript to every scraped video automatically.

---

### 🔢 How limits work (Max items vs Max results)

There are two kinds of limits, and they do different things:

| Setting | Scope | What it controls |
|---|---|---|
| **Max items (total output)** | 🌍 Global | Hard cap on the **total number of records** the run will output, across *every* type. The run stops as soon as it's reached. `0` = no global limit. |
| **Max videos / Shorts / streams per channel** | 📺 Per type | How many of each content type are fetched **per channel** in Channel/Shorts mode. `0` for *Max videos* = channel info only. |

Key points:

- **Channel mode always returns the channel-info record first**, then the videos/Shorts/streams. The channel record does **not** count against the per-type caps, but it **does** count toward *Max items*.
- Example: `Max videos per channel = 5`, `Max items = 0` → **6 records** (1 channel + 5 videos).
- Example: `Max items = 1` (Channel mode) → exactly **1 record** — just the channel info (the global cap is hit before any video is emitted).
- Example: `Max items = 3`, `Max videos per channel = 100` → **3 records** (1 channel + 2 videos), because the global cap stops the run early.
- In **Search** mode, *Max items* caps the total results returned (default `100` when left at `0`).

---

### 📦 Example output — Video

```json
{
  "type": "video",
  "id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "viewCount": 1780016266,
  "likes": 19140845,
  "commentsCount": 2400000,
  "durationSeconds": 213,
  "publishDate": "2009-10-25",
  "channelName": "Rick Astley",
  "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
  "numberOfSubscribers": 4500000,
  "hashtags": ["#RickAstley", "#NeverGonnaGiveYouUp"],
  "keywords": ["rick astley", "never gonna give you up"],
  "availableCaptions": ["en", "de-DE", "ja", "pt-BR", "es-419"],
  "thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
}
````

### 📦 Example output — Channel (with contacts)

```json
{
  "type": "channel",
  "channelName": "Рофланы Папича",
  "channelId": "UCqwybFKBA73V31-RhI2Tvlg",
  "numberOfSubscribers": 72000,
  "channelTotalVideos": 1477,
  "channelTotalViews": 67591140,
  "channelLocation": "Russia",
  "channelJoinedDate": "Joined Nov 22, 2013",
  "channelLinks": [
    { "title": "ТГ", "url": "https://t.me/roflany_papicha" },
    { "title": "Реклама", "url": "https://t.me/mitsub1si" }
  ],
  "channelContacts": {
    "socials": { "telegram": ["https://t.me/roflany_papicha"] },
    "emails": ["booking@example.com"]
  }
}
```

### 📦 Example output — Comment

```json
{
  "type": "comment",
  "cid": "Ugzge340dBgB75hWBm54AaABAg",
  "comment": "can confirm: he never gave us up",
  "voteCount": 250000,
  "replyCount": 961,
  "author": "@YouTube",
  "authorIsVerified": true,
  "videoId": "dQw4w9WgXcQ"
}
```

### 📦 Example output — Transcript

```json
{
  "videoId": "dQw4w9WgXcQ",
  "title": "Rick Astley - Never Gonna Give You Up",
  "language": "en",
  "isAutoGenerated": false,
  "transcript": [
    { "start": 18.64, "dur": 3.24, "text": "We're no strangers to love" }
  ],
  "subtitles": "1\n00:00:18,640 --> 00:00:21,880\nWe're no strangers to love\n..."
}
```

***

### 🍳 Popular use cases & recipes

- **Get every video from a channel** → *Channel* type, paste the channel URL, set *Max videos per channel*.
- **Scrape only a channel's Shorts** → *Shorts* type, paste `@handle`, set *Max Shorts*.
- **Channel profile only (no videos)** → *Channel* type, set *Max videos / Shorts / streams per channel* all to `0` (the channel-info record is still returned).
- **Find this week's newest uploads** → *Search* type, *Sort = Upload date*, *Upload date = This week*.
- **Export all comments + replies for sentiment analysis** → *Comments* type, paste the video URL.
- **Download subtitles in Spanish as plain text** → *Transcript* type, *Subtitle language = es*, *Format = Plain text*.
- **Build a video dataset with transcripts** → any video mode + enable *Download subtitles with videos*.
- **Lead generation / influencer outreach** → *Channel* type and read `channelContacts` for emails & socials.

**Perfect for:** market research, competitor analysis, content creators, SEO & keyword research, influencer marketing, lead generation, sentiment analysis, AI/LLM training datasets, media monitoring and academic research.

***

### 📤 Export & integrations

Results are saved to a dataset you can download as **JSON, CSV, Excel, XML or HTML**, or fetch programmatically via the **Apify API**. The Output tab shows dedicated table views for **videos & channels**, **comments** and **transcripts**. Connect the output to **Make, Zapier, n8n, Google Sheets** and more.

***

### 💲 Pricing — pay only for what you scrape

This actor uses **pay-per-event pricing**: you're billed **per result**, and **each result type is priced separately**. You only pay for the data you actually get — no platform/usage surprises, no monthly subscription.

| Result type | Billable event |
|---|---|
| 🎥 Video | `video` |
| ⚡ Short | `short` |
| 📡 Live stream | `stream` |
| 📺 Channel profile | `channel` |
| 🎶 Playlist | `playlist` |
| 💬 Comment / reply | `comment` |
| 📝 Transcript | `transcript` |

Failed or empty results are **not charged**. Use the **Max items / Max results** limits to cap your spend per run.

***

### ❓ Frequently Asked Questions

**Do I need a YouTube API key?** No. There's nothing to set up — just run the actor.

**Are there daily quotas or rate limits?** No. Unlike the official YouTube Data API (10,000 units/day), this scraper has no quotas.

**Can I scrape YouTube comments and replies?** Yes — choose the *Comments* type to get every comment and reply with likes, author and verified status.

**Can I download YouTube transcripts and subtitles?** Yes — the *Transcript* type returns timestamped transcripts in SRT, WebVTT, XML or plain text, in any available language (manual or auto-generated).

**Can I get a channel's email or social media links?** Yes — emails, social profiles and the channel's external links are auto-extracted into `channelContacts` and `channelLinks` when available.

**Which countries and languages are supported?** Set **Country (gl)** and **Language (hl)** to localize results. Transcripts work in any language with captions.

**Is it legal to scrape YouTube?** This actor collects only **publicly available data**. You are responsible for using the data in compliance with YouTube's Terms of Service and applicable laws (e.g. GDPR). Do not collect private or personal data unlawfully.

**How much does it cost?** Pricing is all-in with no hidden add-ons. Use the *Max items* / *Max results* limits to control your spend.

***

### 🔖 SEO Tags

`youtube scraper` · `youtube data extractor` · `youtube api` · `youtube without api key` · `youtube video scraper` · `youtube channel scraper` · `youtube comments scraper` · `youtube transcript scraper` · `youtube subtitles scraper` · `youtube shorts scraper` · `youtube playlist scraper` · `youtube search scraper` · `youtube keyword scraper` · `scrape youtube videos` · `scrape youtube comments` · `download youtube transcript` · `youtube captions` · `srt vtt subtitles` · `youtube channel data` · `youtube subscriber count` · `youtube views scraper` · `youtube metadata` · `youtube hashtags` · `youtube tags extractor` · `youtube email extractor` · `youtube contact scraper` · `youtube social media links` · `influencer marketing` · `lead generation` · `content research` · `competitor analysis` · `seo tools` · `keyword research` · `sentiment analysis` · `social media scraper` · `video data` · `bulk youtube scraper` · `no quota youtube` · `youtube crawler` · `youtube bot` · `json csv excel export` · `make zapier n8n integration` · `ai training dataset` · `media monitoring` · `youtube analytics`

# Actor input Schema

## `searchType` (type: `string`):

What do you want to scrape? Each type uses the matching section below.

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

Video, channel, playlist or shorts URLs (depending on Search Type). For Video/Comments/Transcript use video URLs; for Channel/Shorts use channel URLs; for Playlist use playlist URLs.

## `searchQueries` (type: `array`):

Keywords to search on YouTube (used when Search Type = Search).

## `youtubeHandles` (type: `array`):

Channel @handles or names (e.g. @MrBeast). Used for Channel / Shorts types.

## `maxItems` (type: `integer`):

Global hard cap on the total number of output records for the whole run, across every type (videos, shorts, streams, channel info, comments, etc.). 0 = no global limit. For Channel mode the channel-info record counts toward this cap, while the per-type caps below control how many videos/shorts/streams are fetched.

## `sort` (type: `string`):

Result ordering for search.

## `uploadDate` (type: `string`):

Filter search results by how recently the video was uploaded.

## `videoDuration` (type: `string`):

Filter search results by video length.

## `videoType` (type: `string`):

Restrict search results to a single entity type.

## `features` (type: `array`):

Only return videos with these features (search only).

## `maxResults` (type: `integer`):

Max long-form videos per channel (0 = skip videos, channel info only).

## `maxResultsShorts` (type: `integer`):

Max Shorts per channel (used for Channel & Shorts types).

## `maxResultStreams` (type: `integer`):

Max past/active streams per channel.

## `includePlaylists` (type: `boolean`):

Also scrape the channel's playlists tab.

## `oldestPostDate` (type: `string`):

Only keep content newer than this. Absolute (2024-01-01) or relative (e.g. "100 days", "3 weeks").

## `maxComments` (type: `integer`):

Limit of comments (incl. replies) per video (0 = all).

## `commentsSort` (type: `string`):

Order comments by top (most liked) or newest first.

## `includeReplies` (type: `boolean`):

Fetch replies to top-level comments.

## `downloadSubtitles` (type: `boolean`):

Attach a transcript to every scraped video (Video/Search/Channel types).

## `subtitlesLanguage` (type: `string`):

Preferred caption language code (e.g. en, es, ru).

## `subtitlesFormat` (type: `string`):

Output format for transcripts/subtitles.

## `preferAutoGeneratedSubtitles` (type: `boolean`):

Prefer auto-generated captions over manual ones.

## `saveSubsToKVS` (type: `boolean`):

Persist each subtitle file as a key in the key-value store.

## `gl` (type: `string`):

Geo/country code for results (e.g. us, gb, de).

## `hl` (type: `string`):

UI/result language code (e.g. en, es, ru).

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

Proxy used for requests. Residential US is recommended.

## `customProxyUrl` (type: `string`):

Optional custom HTTP proxy (http://user:pass@host:port). Falls back to Apify proxy on failure.

## `maxRetries` (type: `integer`):

Retries per request on connection errors.

## Actor input object example

```json
{
  "searchType": "video",
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "searchQueries": [],
  "youtubeHandles": [],
  "maxItems": 0,
  "sort": "relevance",
  "uploadDate": "all",
  "videoDuration": "all",
  "videoType": "all",
  "features": [],
  "maxResults": 30,
  "maxResultsShorts": 0,
  "maxResultStreams": 0,
  "includePlaylists": false,
  "oldestPostDate": "",
  "maxComments": 100,
  "commentsSort": "top",
  "includeReplies": true,
  "downloadSubtitles": false,
  "subtitlesLanguage": "en",
  "subtitlesFormat": "srt",
  "preferAutoGeneratedSubtitles": false,
  "saveSubsToKVS": false,
  "gl": "US",
  "hl": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "customProxyUrl": "",
  "maxRetries": 5
}
```

# Actor output Schema

## `videos` (type: `string`):

No description

## `comments` (type: `string`):

No description

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

No description

# 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"
    ],
    "searchQueries": [],
    "youtubeHandles": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/youtube-scraper-all-in-one").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"],
    "searchQueries": [],
    "youtubeHandles": [],
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/youtube-scraper-all-in-one").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"
  ],
  "searchQueries": [],
  "youtubeHandles": []
}' |
apify call pro100chok/youtube-scraper-all-in-one --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ultimate YouTube Scraper — Videos, Transcripts & Comments",
        "description": "Scrape YouTube without an API key or limits. Extract video details, channel data, search results, Shorts, comments &\n  replies, transcripts/subtitles and playlists — all in one actor. Auto-extracts emails & social links from channels.\n  Export to JSON, CSV & Excel. Fast, bulk, no quotas.",
        "version": "1.0",
        "x-build-id": "7a2AyhqxW2QNAU7F1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/pro100chok~youtube-scraper-all-in-one/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-pro100chok-youtube-scraper-all-in-one",
                "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/pro100chok~youtube-scraper-all-in-one/runs": {
            "post": {
                "operationId": "runs-sync-pro100chok-youtube-scraper-all-in-one",
                "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/pro100chok~youtube-scraper-all-in-one/run-sync": {
            "post": {
                "operationId": "run-sync-pro100chok-youtube-scraper-all-in-one",
                "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": [
                    "searchType"
                ],
                "properties": {
                    "searchType": {
                        "title": "🎯 Search Type",
                        "enum": [
                            "video",
                            "channel",
                            "search",
                            "shorts",
                            "comments",
                            "transcript",
                            "playlist"
                        ],
                        "type": "string",
                        "description": "What do you want to scrape? Each type uses the matching section below.",
                        "default": "video"
                    },
                    "startUrls": {
                        "title": "🔗 YouTube URLs",
                        "type": "array",
                        "description": "Video, channel, playlist or shorts URLs (depending on Search Type). For Video/Comments/Transcript use video URLs; for Channel/Shorts use channel URLs; for Playlist use playlist URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "🔎 Search queries",
                        "type": "array",
                        "description": "Keywords to search on YouTube (used when Search Type = Search).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "youtubeHandles": {
                        "title": "👤 Channel handles",
                        "type": "array",
                        "description": "Channel @handles or names (e.g. @MrBeast). Used for Channel / Shorts types.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "🔢 Max items (total output)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Global hard cap on the total number of output records for the whole run, across every type (videos, shorts, streams, channel info, comments, etc.). 0 = no global limit. For Channel mode the channel-info record counts toward this cap, while the per-type caps below control how many videos/shorts/streams are fetched.",
                        "default": 0
                    },
                    "sort": {
                        "title": "↕️ Sort by",
                        "enum": [
                            "relevance",
                            "date",
                            "views",
                            "rating"
                        ],
                        "type": "string",
                        "description": "Result ordering for search.",
                        "default": "relevance"
                    },
                    "uploadDate": {
                        "title": "📅 Upload date",
                        "enum": [
                            "all",
                            "hour",
                            "today",
                            "week",
                            "month",
                            "year"
                        ],
                        "type": "string",
                        "description": "Filter search results by how recently the video was uploaded.",
                        "default": "all"
                    },
                    "videoDuration": {
                        "title": "⏱️ Duration",
                        "enum": [
                            "all",
                            "short",
                            "medium",
                            "long"
                        ],
                        "type": "string",
                        "description": "Filter search results by video length.",
                        "default": "all"
                    },
                    "videoType": {
                        "title": "🎞️ Result type",
                        "enum": [
                            "all",
                            "video",
                            "channel",
                            "playlist",
                            "movie"
                        ],
                        "type": "string",
                        "description": "Restrict search results to a single entity type.",
                        "default": "all"
                    },
                    "features": {
                        "title": "✨ Feature filters",
                        "type": "array",
                        "description": "Only return videos with these features (search only).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "hd",
                                "4k",
                                "subtitles",
                                "cc",
                                "live",
                                "3d",
                                "360",
                                "hdr",
                                "vr180",
                                "location",
                                "purchased",
                                "creativeCommons"
                            ],
                            "enumTitles": [
                                "HD",
                                "4K",
                                "Subtitles/CC",
                                "Closed captions",
                                "Live",
                                "3D",
                                "360°",
                                "HDR",
                                "VR180",
                                "Location",
                                "Purchased",
                                "Creative Commons"
                            ]
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "🎥 Max videos per channel",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Max long-form videos per channel (0 = skip videos, channel info only).",
                        "default": 30
                    },
                    "maxResultsShorts": {
                        "title": "⚡ Max Shorts per channel",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Max Shorts per channel (used for Channel & Shorts types).",
                        "default": 0
                    },
                    "maxResultStreams": {
                        "title": "📡 Max live streams per channel",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Max past/active streams per channel.",
                        "default": 0
                    },
                    "includePlaylists": {
                        "title": "🎶 Include channel playlists",
                        "type": "boolean",
                        "description": "Also scrape the channel's playlists tab.",
                        "default": false
                    },
                    "oldestPostDate": {
                        "title": "🗓️ Oldest post date",
                        "type": "string",
                        "description": "Only keep content newer than this. Absolute (2024-01-01) or relative (e.g. \"100 days\", \"3 weeks\").",
                        "default": ""
                    },
                    "maxComments": {
                        "title": "💬 Max comments per video",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Limit of comments (incl. replies) per video (0 = all).",
                        "default": 100
                    },
                    "commentsSort": {
                        "title": "↕️ Comments sort",
                        "enum": [
                            "top",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Order comments by top (most liked) or newest first.",
                        "default": "top"
                    },
                    "includeReplies": {
                        "title": "↪️ Include replies",
                        "type": "boolean",
                        "description": "Fetch replies to top-level comments.",
                        "default": true
                    },
                    "downloadSubtitles": {
                        "title": "📝 Download subtitles with videos",
                        "type": "boolean",
                        "description": "Attach a transcript to every scraped video (Video/Search/Channel types).",
                        "default": false
                    },
                    "subtitlesLanguage": {
                        "title": "🌍 Subtitle language",
                        "type": "string",
                        "description": "Preferred caption language code (e.g. en, es, ru).",
                        "default": "en"
                    },
                    "subtitlesFormat": {
                        "title": "📄 Subtitle format",
                        "enum": [
                            "srt",
                            "vtt",
                            "xml",
                            "plaintext"
                        ],
                        "type": "string",
                        "description": "Output format for transcripts/subtitles.",
                        "default": "srt"
                    },
                    "preferAutoGeneratedSubtitles": {
                        "title": "🤖 Prefer auto-generated",
                        "type": "boolean",
                        "description": "Prefer auto-generated captions over manual ones.",
                        "default": false
                    },
                    "saveSubsToKVS": {
                        "title": "💾 Save subtitle files to key-value store",
                        "type": "boolean",
                        "description": "Persist each subtitle file as a key in the key-value store.",
                        "default": false
                    },
                    "gl": {
                        "title": "🌐 Country (gl)",
                        "type": "string",
                        "description": "Geo/country code for results (e.g. us, gb, de).",
                        "default": "US"
                    },
                    "hl": {
                        "title": "🗣️ Language (hl)",
                        "type": "string",
                        "description": "UI/result language code (e.g. en, es, ru).",
                        "default": "en"
                    },
                    "proxyConfiguration": {
                        "title": "🛡️ Proxy configuration",
                        "type": "object",
                        "description": "Proxy used for requests. Residential US is recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    },
                    "customProxyUrl": {
                        "title": "🔌 Custom proxy URL",
                        "type": "string",
                        "description": "Optional custom HTTP proxy (http://user:pass@host:port). Falls back to Apify proxy on failure.",
                        "default": ""
                    },
                    "maxRetries": {
                        "title": "🔁 Max retries",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Retries per request on connection errors.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
