# Youtube Channel Videos Details Scraper (`memo23/youtube-channel-video-details-scraper`)

Extract granular data on every video, from rich thumbnails to detailed view counts, empowering data-driven decisions for content creation, audience engagement and channel growth. Whether you're a seasoned YouTuber, a digital marketer, or an AI researcher, unlock the insights you need to thrive in...

- **URL**: https://beta-securitybyobscurity.apify.com/memo23/youtube-channel-video-details-scraper.md
- **Developed by:** [Muhamed Didovic](https://beta-securitybyobscurity.apify.com/memo23) (community)
- **Categories:** Lead generation, Videos
- **Stats:** 58 total users, 6 monthly users, 86.2% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.
You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

# README

### Overview

This actor allows you to scrape detailed information about videos from a specific YouTube channel. It extracts comprehensive metadata, engagement metrics, and rich media assets for each video, providing valuable insights for content creators, marketers, and researchers analyzing YouTube channel performance and content strategies.

### Explore More Scrapers

If you found this YouTube Channel Video Details Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Features

- Channel-wide Video Extraction: Scrape details for all videos from a specified YouTube channel.
- Comprehensive Video Metadata: Extract titles, descriptions, publication dates, and more.
- Engagement Metrics: Capture view counts, likes, comments, and other interaction data.
- Rich Media Assets: Retrieve thumbnail URLs in various sizes and qualities.
- Detailed Video Information: Extract video duration, tags, and categories.
- Channel Information: Gather data about the channel hosting the videos.
- Customizable Depth: Set the number of videos to scrape with the `maxItems` parameter.
- Proxy Support: Built-in proxy configuration to enhance scraping reliability and avoid blocks.

### How to Use

1. Set Up: Ensure you have an Apify account and access to the Apify platform.
2. Configure Input: Set the YouTube channel URL you want to scrape video details from (see Input Configuration section).
3. Adjust Settings: Configure options like `maxItems`, concurrency, and proxy settings as needed.
4. Run the Scraper: Execute the scraper on the Apify platform.
5. Data Collection: The scraper will output detailed data about videos from the specified YouTube channel.

### Input Configuration

Here's an example of how to set up the input for the YouTube Channel Video Details Scraper:

```json
{
    "startUrls": [
        {
            "url": "https://www.youtube.com/@AllTHEMOVIE/videos"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 3,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Input Fields Explanation

- `startUrls`: Array containing the URL of the YouTube channel's video page.
- `maxItems`: Maximum number of videos to scrape (default: 100).
- `maxConcurrency`: Maximum number of pages processed simultaneously (default: 10).
- `minConcurrency`: Minimum number of pages processed simultaneously (default: 1).
- `maxRequestRetries`: Number of retries for failed requests (default: 3).
- `proxyConfiguration`: Proxy settings for enhanced scraping reliability.

### Output Structure

The output data includes detailed information about each video in the channel. Here's a comprehensive breakdown of the structure:

```json
{
    "videoId": "qs16BDaPQjc",
    "thumbnail": {
        "thumbnails": [
            {
                "url": "https://i.ytimg.com/vi/qs16BDaPQjc/hqdefault.jpg?sqp=-oaymwEoCKgBEF5IWvKriqkDGwgBFQAAiEIYAdgBAeIBDAgeEAIYBiABOAFAAQ==&rs=AOn4CLDRTE6ONiEALlYWtrHeRZwxyaLOzA",
                "width": 168,
                "height": 94
            },
            // ... more thumbnail sizes ...
        ]
    },
    "title": {
        "runs": [
            {
                "text": "How to scrape all of Crunchbase 😱"
            }
        ],
        "accessibility": {
            "accessibilityData": {
                "label": "How to scrape all of Crunchbase 😱 by Adrian | The Web Scraping Guy 265 views 10 days ago 9 minutes, 46 seconds"
            }
        }
    },
    "descriptionSnippet": {
        "runs": [
            {
                "text": "Check out my web scraping course 👉  https://adrianhorning.gumroad.com/l/the-ultimate-web-scraping-course\n\nUse code PEALEH1 for 25% off my course 👀\n\nCheck out my product scrapecreators.com..."
            }
        ]
    },
    "publishedTimeText": {
        "simpleText": "10 days ago"
    },
    "lengthText": {
        "accessibility": {
            "accessibilityData": {
                "label": "9 minutes, 46 seconds"
            }
        },
        "simpleText": "9:46"
    },
    "viewCountText": {
        "simpleText": "265 views"
    },
    "navigationEndpoint": {
        "clickTrackingParams": "CPUBENwwIhMI3Ybnu7bsiAMV70tMCB1I-TsIWhhVQ2RGSldVYTQzc21SbTRJcEhCcFBnX0GaAQMQ8jg=",
        "commandMetadata": {
            "webCommandMetadata": {
                "url": "/watch?v=qs16BDaPQjc",
                "webPageType": "WEB_PAGE_TYPE_WATCH",
                "rootVe": 3832
            }
        },
        "watchEndpoint": {
            "videoId": "qs16BDaPQjc",
            "watchEndpointSupportedOnesieConfig": {
                "html5PlaybackOnesieConfig": {
                    "commonConfig": {
                        "url": "https://rr5---sn-nx57ynse.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=aacd7a04368f4237&ip=23.108.254.123&initcwndbps=1083750&mt=1727759092&oweuc="
                    }
                }
            }
        }
    },
    "trackingParams": "CPUBENwwIhMI3Ybnu7bsiAMV70tMCB1I-TsIQLeEvbTDwN7mqgE=",
    "shortViewCountText": {
        "accessibility": {
            "accessibilityData": {
                "label": "265 views"
            }
        },
        "simpleText": "265 views"
    },
    "menu": {
        "menuRenderer": {
            "items": [
                // ... menu items ...
            ],
            "trackingParams": "CPUBENwwIhMI3Ybnu7bsiAMV70tMCB1I-TsI",
            "accessibility": {
                "accessibilityData": {
                    "label": "Action menu"
                }
            }
        }
    },
    "thumbnailOverlays": [
        // ... thumbnail overlays ...
    ],
    "richThumbnail": {
        "movingThumbnailRenderer": {
            "movingThumbnailDetails": {
                "thumbnails": [
                    {
                        "url": "https://i.ytimg.com/an_webp/qs16BDaPQjc/mqdefault_6s.webp?du=3000&sqp=CIzU7bcG&rs=AOn4CLDb5_xzao0Cu3X9VjHt9H1RlyV7TQ",
                        "width": 320,
                        "height": 180
                    }
                ],
                "logAsMovingThumbnail": true
            },
            "enableHoveredLogging": true,
            "enableOverlay": true
        }
    }
}
```

#### Detailed Field Explanations

- `videoId`: Unique identifier for the YouTube video. This ID can be used to construct the full video URL.

- `thumbnail`: Contains information about the video's thumbnail images.
  - `thumbnails`: An array of thumbnail objects, each with different sizes and resolutions.
    - `url`: Direct link to the thumbnail image.
    - `width` and `height`: Dimensions of the thumbnail in pixels.

- `title`: The title of the video.
  - `runs`: An array containing text segments of the title.
  - `accessibility`: Provides an accessible version of the title, often including additional context.

- `descriptionSnippet`: A brief excerpt from the video's description.
  - `runs`: An array of text segments, which may include formatting or links.

- `publishedTimeText`: Indicates how long ago the video was published.
  - `simpleText`: A human-readable string (e.g., "10 days ago").

- `lengthText`: The duration of the video.
  - `accessibility`: Provides a detailed, accessible version of the duration.
  - `simpleText`: A concise representation of the video length.

- `viewCountText`: The number of views the video has received.
  - `simpleText`: A formatted string of the view count.

- `navigationEndpoint`: Contains data used for navigating to the video page.
  - `clickTrackingParams`: Used for analytics and tracking.
  - `commandMetadata`: Metadata for the navigation action.
  - `watchEndpoint`: Specific data for initiating video playback.

- `trackingParams`: A string used for tracking user interactions and analytics.

- `shortViewCountText`: A more concise representation of the view count, often used in compact displays.

- `menu`: Contains information about the action menu associated with the video.
  - `menuRenderer`: Details about menu items and accessibility.

- `thumbnailOverlays`: An array of overlay information displayed on the video thumbnail, such as video duration or "Watch Later" buttons.

- `richThumbnail`: Information about the moving thumbnail (if available).
  - `movingThumbnailRenderer`: Contains details about the animated preview thumbnail.
    - `movingThumbnailDetails`: Specifies the URL and dimensions of the moving thumbnail.
    - `enableHoveredLogging` and `enableOverlay`: Flags for thumbnail behavior.

This detailed structure provides a comprehensive view of each video's metadata, engagement metrics, and associated media assets. It includes

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/PSTcrs0S4axCRoSQq/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>

# Actor input Schema

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

URLs to start with.

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

Maximum number of items to scrape.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@AIITHEMOVIE/videos"
    }
  ],
  "maxItems": 100,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 3,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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": [
        {
            "url": "https://www.youtube.com/@AIITHEMOVIE/videos"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/youtube-channel-video-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.youtube.com/@AIITHEMOVIE/videos" }],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/youtube-channel-video-details-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@AIITHEMOVIE/videos"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call memo23/youtube-channel-video-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Youtube Channel Videos Details Scraper",
        "description": "Extract granular data on every video, from rich thumbnails to detailed view counts, empowering data-driven decisions for content creation, audience engagement and channel growth. Whether you're a seasoned YouTuber, a digital marketer, or an AI researcher, unlock the insights you need to thrive in...",
        "version": "0.0",
        "x-build-id": "ImXiAbMd4hRoP0tDz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~youtube-channel-video-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-youtube-channel-video-details-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/memo23~youtube-channel-video-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-youtube-channel-video-details-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/memo23~youtube-channel-video-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-youtube-channel-video-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "type": "integer",
                        "description": "Maximum number of items to scrape.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time.",
                        "default": 10
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up.",
                        "default": 3
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
