# 🔥YouTube Video & Comment Scraper (SEO, Titles) - ALMOST FREE (`nourishing_courier/youtube-scraper`) Actor

Scrape YouTube videos, titles, descriptions, views, likes, comments, and channel data. Ideal for YouTube SEO research, competitor analysis, trend discovery, and automation workflows. Free plan available – no credit card required.

- **URL**: https://apify.com/nourishing\_courier/youtube-scraper.md
- **Developed by:** [Ani Björkström](https://apify.com/nourishing_courier) (community)
- **Categories:** SEO tools, Social media, Videos
- **Stats:** 35 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 results

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

Learn more: https://docs.apify.com/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 - Extract Videos, Channels, Playlists & Transcripts

The most powerful **YouTube data extraction tool** on Apify. Scrape unlimited YouTube videos, channels, playlists, and search results without API limits. Extract video metadata, transcripts, subtitles, comments count, and channel analytics in seconds.

### Why Choose This YouTube Scraper?

- **No YouTube API limits** - Scrape thousands of videos without quota restrictions
- **Fastest extraction** - Get results in minutes, not hours
- **Complete data** - Video stats, channel info, transcripts, thumbnails, and more
- **Multiple formats** - Export to JSON, CSV, Excel, or HTML
- **Subtitle download** - Extract transcripts in SRT, WebVTT, or plain text
- **$1/day pricing** - Most affordable YouTube scraper on the market

### What Data Can You Extract?

#### Video Data
| Field | Description |
|-------|-------------|
| Title | Video title |
| Description | Full video description with links |
| View Count | Number of views |
| Likes | Like count |
| Duration | Video length |
| Upload Date | Publication date |
| Thumbnail URL | High-quality thumbnail |
| Channel Name | Creator's channel |
| Subscriber Count | Channel subscribers |
| Comments Count | Number of comments |
| Hashtags | Video hashtags |
| Monetization | Is video monetized |

#### Channel Data
| Field | Description |
|-------|-------------|
| Channel Name | Channel title |
| Subscribers | Subscriber count |
| Total Views | All-time view count |
| Total Videos | Number of uploads |
| Description | Channel about text |
| Social Links | Twitter, Instagram, etc. |
| Join Date | Channel creation date |
| Location | Channel country |

#### Subtitles & Transcripts
- **SRT format** - Standard subtitle format
- **WebVTT format** - Web-compatible subtitles
- **Plain text** - Raw transcript text
- **Auto-generated** - YouTube's automatic captions
- **Manual subtitles** - Creator-added captions
- **Multiple languages** - English, Spanish, French, German, and more

### Use Cases

#### Market Research & Competitor Analysis
- Monitor competitor YouTube channels
- Track video performance metrics
- Analyze content strategies
- Identify trending topics

#### Lead Generation
- Find influencers in your niche
- Extract creator contact information
- Build outreach lists
- Discover collaboration opportunities

#### Content Creation & SEO
- Research popular video topics
- Analyze successful video titles
- Extract transcripts for repurposing
- Find keyword opportunities

#### Academic Research
- Collect video data for studies
- Analyze YouTube trends
- Extract transcripts for NLP
- Study content patterns

#### Brand Monitoring
- Track brand mentions
- Monitor product reviews
- Analyze sentiment
- Competitive intelligence

### Input Examples

#### Search by Keywords
```json
{
  "searchTerms": ["python tutorial", "web scraping guide"],
  "maxVideosPerSearch": 50,
  "maxShortsPerSearch": 10,
  "downloadSubtitles": true
}
````

#### Scrape Channel Videos

```json
{
  "directUrls": ["https://www.youtube.com/@MrBeast"],
  "maxVideosPerSearch": 100,
  "channelSortBy": "popular"
}
```

#### Extract Playlist

```json
{
  "directUrls": ["https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"],
  "downloadSubtitles": true,
  "subtitleFormat": "srt"
}
```

#### Scrape with Filters

```json
{
  "searchTerms": ["machine learning"],
  "maxVideosPerSearch": 20,
  "dateFilter": "month",
  "lengthFilter": "long",
  "filterHD": true,
  "filter4K": true
}
```

### Output Example

```json
{
  "id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "title": "Rick Astley - Never Gonna Give You Up",
  "description": "The official video for Rick Astley's...",
  "thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
  "channelName": "Rick Astley",
  "channelUrl": "https://www.youtube.com/@RickAstleyYT",
  "duration": "3:33",
  "viewCount": 1500000000,
  "likes": 15000000,
  "date": "2009-10-25",
  "commentsCount": 3000000,
  "numberOfSubscribers": 14200000,
  "isMonetized": true,
  "hashtags": ["#RickAstley", "#NeverGonnaGiveYouUp"],
  "subtitles": [
    {
      "language": "en",
      "type": "manual",
      "srt": "1\n00:00:00,000 --> 00:00:04,000\nWe're no strangers to love..."
    }
  ]
}
```

### Integrations

Connect YouTube Scraper with your favorite tools:

- **Zapier** - Automate workflows
- **Make (Integromat)** - Visual automation
- **Google Sheets** - Direct export
- **Slack** - Get notifications
- **Webhooks** - Real-time updates
- **Python SDK** - `apify-client` package
- **Node.js SDK** - `apify-client` package
- **REST API** - Full programmatic access

### API Usage

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor("YOUR_USERNAME/youtube-scraper").call({
  searchTerms: ["your search term"],
  maxVideosPerSearch: 10
});

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

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("YOUR_USERNAME/youtube-scraper").call(run_input={
    "searchTerms": ["your search term"],
    "maxVideosPerSearch": 10
})

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Frequently Asked Questions

#### How many videos can I scrape?

You can scrape up to 500 videos per search term, and there's no limit on the number of search terms or URLs you can provide.

#### Is it legal to scrape YouTube?

Yes, scraping publicly available data is legal. This scraper only extracts public information that anyone can see on YouTube.

#### Can I download video files?

This scraper extracts metadata and transcripts only. For video downloads, check our YouTube Video Downloader actor.

#### What proxies should I use?

The scraper uses Apify's residential proxies by default for best results. You can also use your own proxies.

#### How often is the data updated?

Data is scraped in real-time. Each run fetches the latest information from YouTube.

#### Can I scrape YouTube Shorts?

Yes! Set `maxShortsPerSearch` to scrape YouTube Shorts alongside regular videos.

#### Does it work with age-restricted videos?

The scraper can extract metadata from most videos, but some age-restricted content may have limited data.

#### Can I get video transcripts?

Yes, enable `downloadSubtitles` to extract transcripts in SRT, WebVTT, or plain text format.

### Pricing

**$1 per day** after free trial - the most affordable YouTube scraper available!

- Free trial included
- Pay only for what you use
- No hidden fees
- Cancel anytime

### Support

- **Issues**: Report bugs on the Issues tab
- **Documentation**: Full docs in the README
- **Updates**: Regular maintenance and improvements

### Related Scrapers

- [YouTube Comments Scraper](https://apify.com/store) - Extract video comments
- [YouTube Shorts Scraper](https://apify.com/store) - Focused on Shorts
- [TikTok Scraper](https://apify.com/store) - Scrape TikTok videos
- [Instagram Scraper](https://apify.com/store) - Extract Instagram data

***

**Keywords**: YouTube scraper, YouTube API alternative, extract YouTube videos, scrape YouTube channel, YouTube data extraction, YouTube transcript extractor, YouTube subtitle downloader, YouTube metadata scraper, YouTube analytics tool, bulk YouTube scraper, YouTube to JSON, YouTube to CSV, scrape YouTube search results, YouTube playlist extractor, YouTube video scraper, no API limits YouTube, YouTube data mining, YouTube content scraper, YouTube automation tool, YouTube research tool

# Actor input Schema

## `searchTerms` (type: `array`):

Enter YouTube search queries to find videos. Works like YouTube's search bar. Add multiple terms to scrape different topics.

## `maxVideosPerSearch` (type: `integer`):

How many regular videos to extract per search term. Set higher for comprehensive data collection.

## `maxShortsPerSearch` (type: `integer`):

How many YouTube Shorts to extract. Shorts are vertical videos under 60 seconds.

## `maxStreamsPerSearch` (type: `integer`):

How many live streams or past streams to extract per search.

## `directUrls` (type: `array`):

Paste direct YouTube links: video URLs, channel URLs (@username or /channel/), playlist URLs, or search result pages. Mix different URL types.

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

Extract video transcripts and subtitles. Perfect for content repurposing, SEO research, and accessibility.

## `saveSubtitlesToKeyValueStore` (type: `boolean`):

Store subtitles in Apify storage for later access via API. Useful for integrations and automation workflows.

## `subtitleLanguage` (type: `string`):

Preferred language for transcripts. Falls back to available languages if preferred not found.

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

Use YouTube's auto-generated captions instead of manual subtitles. Auto-generated available for most videos.

## `subtitleFormat` (type: `string`):

Output format for transcripts. SRT for video editing, WebVTT for web, Plain Text for analysis.

## `sortingOrder` (type: `string`):

How to sort search results. 'Upload date' for latest videos, 'View count' for most popular.

## `dateFilter` (type: `string`):

Only get videos uploaded within this time period. Great for finding fresh content.

## `videoTypeFilter` (type: `string`):

Filter by content type. WARNING: 'Video only' excludes Shorts and Streams from results - leave as 'Any type' if you want to collect those.

## `lengthFilter` (type: `string`):

Filter by video length. 'Long' is great for tutorials and courses.

## `filterHD` (type: `boolean`):

Only include HD (720p+) videos in results.

## `filterSubtitles` (type: `boolean`):

Only include videos with subtitles or closed captions.

## `filterCreativeCommons` (type: `boolean`):

Only include Creative Commons licensed videos (free to reuse).

## `filter3D` (type: `boolean`):

Only include 3D videos.

## `filterLive` (type: `boolean`):

Only include live streams (current or past).

## `filter4K` (type: `boolean`):

Only include 4K (2160p) videos.

## `filter360` (type: `boolean`):

Only include 360-degree immersive videos.

## `filterHDR` (type: `boolean`):

Only include HDR (High Dynamic Range) videos.

## `filterVR180` (type: `boolean`):

Only include VR180 virtual reality videos.

## `publishedAfter` (type: `string`):

Only scrape videos uploaded after this date. Format: YYYY-MM-DD. Works with channel URLs only.

## `publishedBefore` (type: `string`):

Only scrape videos uploaded before this date. Format: YYYY-MM-DD. Works with channel URLs only.

## `channelSortBy` (type: `string`):

How to sort videos when scraping a channel page.

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

Proxy settings. Apify's residential proxies work best for YouTube. Uses automatic proxy rotation.

## Actor input object example

```json
{
  "searchTerms": [
    "python tutorial",
    "web scraping",
    "AI tools 2024"
  ],
  "maxVideosPerSearch": 2,
  "maxShortsPerSearch": 0,
  "maxStreamsPerSearch": 0,
  "directUrls": [
    "https://www.youtube.com/@MrBeast",
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "downloadSubtitles": false,
  "saveSubtitlesToKeyValueStore": false,
  "subtitleLanguage": "en",
  "preferAutoGeneratedSubtitles": false,
  "subtitleFormat": "srt",
  "filterHD": false,
  "filterSubtitles": false,
  "filterCreativeCommons": false,
  "filter3D": false,
  "filterLive": false,
  "filter4K": false,
  "filter360": false,
  "filterHDR": false,
  "filterVR180": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchTerms": [
        "n8n"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nourishing_courier/youtube-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 = { "searchTerms": ["n8n"] }

# Run the Actor and wait for it to finish
run = client.actor("nourishing_courier/youtube-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 '{
  "searchTerms": [
    "n8n"
  ]
}' |
apify call nourishing_courier/youtube-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🔥YouTube Video & Comment Scraper (SEO, Titles) - ALMOST FREE",
        "description": "Scrape YouTube videos, titles, descriptions, views, likes, comments, and channel data. Ideal for YouTube SEO research, competitor analysis, trend discovery, and automation workflows. Free plan available – no credit card required.",
        "version": "1.2",
        "x-build-id": "jvc80fIcD8QnK1Z19"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nourishing_courier~youtube-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nourishing_courier-youtube-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/nourishing_courier~youtube-scraper/runs": {
            "post": {
                "operationId": "runs-sync-nourishing_courier-youtube-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/nourishing_courier~youtube-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-nourishing_courier-youtube-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",
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Enter YouTube search queries to find videos. Works like YouTube's search bar. Add multiple terms to scrape different topics.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxVideosPerSearch": {
                        "title": "Maximum videos per search term",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many regular videos to extract per search term. Set higher for comprehensive data collection.",
                        "default": 2
                    },
                    "maxShortsPerSearch": {
                        "title": "Maximum Shorts per search term",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many YouTube Shorts to extract. Shorts are vertical videos under 60 seconds.",
                        "default": 0
                    },
                    "maxStreamsPerSearch": {
                        "title": "Maximum streams per search term",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many live streams or past streams to extract per search.",
                        "default": 0
                    },
                    "directUrls": {
                        "title": "Direct YouTube URLs",
                        "type": "array",
                        "description": "Paste direct YouTube links: video URLs, channel URLs (@username or /channel/), playlist URLs, or search result pages. Mix different URL types.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "downloadSubtitles": {
                        "title": "Download subtitles",
                        "type": "boolean",
                        "description": "Extract video transcripts and subtitles. Perfect for content repurposing, SEO research, and accessibility.",
                        "default": false
                    },
                    "saveSubtitlesToKeyValueStore": {
                        "title": "Save subtitles to key-value store",
                        "type": "boolean",
                        "description": "Store subtitles in Apify storage for later access via API. Useful for integrations and automation workflows.",
                        "default": false
                    },
                    "subtitleLanguage": {
                        "title": "Subtitle language",
                        "enum": [
                            "en",
                            "es",
                            "fr",
                            "de",
                            "it",
                            "pt",
                            "ru",
                            "ja",
                            "ko",
                            "zh",
                            "ar",
                            "hi"
                        ],
                        "type": "string",
                        "description": "Preferred language for transcripts. Falls back to available languages if preferred not found.",
                        "default": "en"
                    },
                    "preferAutoGeneratedSubtitles": {
                        "title": "Prefer auto-generated subtitles",
                        "type": "boolean",
                        "description": "Use YouTube's auto-generated captions instead of manual subtitles. Auto-generated available for most videos.",
                        "default": false
                    },
                    "subtitleFormat": {
                        "title": "Subtitle format",
                        "enum": [
                            "srt",
                            "vtt",
                            "xml",
                            "text"
                        ],
                        "type": "string",
                        "description": "Output format for transcripts. SRT for video editing, WebVTT for web, Plain Text for analysis.",
                        "default": "srt"
                    },
                    "sortingOrder": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "date",
                            "viewCount",
                            "rating"
                        ],
                        "type": "string",
                        "description": "How to sort search results. 'Upload date' for latest videos, 'View count' for most popular."
                    },
                    "dateFilter": {
                        "title": "Upload date filter",
                        "enum": [
                            "",
                            "hour",
                            "today",
                            "week",
                            "month",
                            "year"
                        ],
                        "type": "string",
                        "description": "Only get videos uploaded within this time period. Great for finding fresh content."
                    },
                    "videoTypeFilter": {
                        "title": "Content type filter",
                        "enum": [
                            "",
                            "video",
                            "movie"
                        ],
                        "type": "string",
                        "description": "Filter by content type. WARNING: 'Video only' excludes Shorts and Streams from results - leave as 'Any type' if you want to collect those."
                    },
                    "lengthFilter": {
                        "title": "Video duration filter",
                        "enum": [
                            "",
                            "short",
                            "medium",
                            "long"
                        ],
                        "type": "string",
                        "description": "Filter by video length. 'Long' is great for tutorials and courses."
                    },
                    "filterHD": {
                        "title": "HD quality only",
                        "type": "boolean",
                        "description": "Only include HD (720p+) videos in results.",
                        "default": false
                    },
                    "filterSubtitles": {
                        "title": "Has subtitles/CC",
                        "type": "boolean",
                        "description": "Only include videos with subtitles or closed captions.",
                        "default": false
                    },
                    "filterCreativeCommons": {
                        "title": "Creative Commons license",
                        "type": "boolean",
                        "description": "Only include Creative Commons licensed videos (free to reuse).",
                        "default": false
                    },
                    "filter3D": {
                        "title": "3D videos",
                        "type": "boolean",
                        "description": "Only include 3D videos.",
                        "default": false
                    },
                    "filterLive": {
                        "title": "Live streams",
                        "type": "boolean",
                        "description": "Only include live streams (current or past).",
                        "default": false
                    },
                    "filter4K": {
                        "title": "4K Ultra HD",
                        "type": "boolean",
                        "description": "Only include 4K (2160p) videos.",
                        "default": false
                    },
                    "filter360": {
                        "title": "360° videos",
                        "type": "boolean",
                        "description": "Only include 360-degree immersive videos.",
                        "default": false
                    },
                    "filterHDR": {
                        "title": "HDR videos",
                        "type": "boolean",
                        "description": "Only include HDR (High Dynamic Range) videos.",
                        "default": false
                    },
                    "filterVR180": {
                        "title": "VR180 videos",
                        "type": "boolean",
                        "description": "Only include VR180 virtual reality videos.",
                        "default": false
                    },
                    "publishedAfter": {
                        "title": "Videos published after",
                        "type": "string",
                        "description": "Only scrape videos uploaded after this date. Format: YYYY-MM-DD. Works with channel URLs only."
                    },
                    "publishedBefore": {
                        "title": "Videos published before",
                        "type": "string",
                        "description": "Only scrape videos uploaded before this date. Format: YYYY-MM-DD. Works with channel URLs only."
                    },
                    "channelSortBy": {
                        "title": "Channel videos sort order",
                        "enum": [
                            "newest",
                            "popular",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "How to sort videos when scraping a channel page."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Apify's residential proxies work best for YouTube. Uses automatic proxy rotation.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
