# Youtube Video Details Scraper (`perfectscrape/youtube-video-details-scraper`) Actor

Extract YouTube video details at scale from individual videos, search results, or playlists. Processes hundreds per minute - perfect for bulk data collection. Made for performance and saves apify costs. Extract titles, descriptions, views, likes, channel data etc.

- **URL**: https://apify.com/perfectscrape/youtube-video-details-scraper.md
- **Developed by:** [Sadnan](https://apify.com/perfectscrape) (community)
- **Categories:** Social media, Videos, Other
- **Stats:** 30 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YouTube Video Details Scraper: Bulk Data Extraction at Scale

### Introduction

This **high-speed YouTube data extraction tool** scrapes video metadata from individual videos, search results, and playlists at unprecedented scale. Built for developers and businesses needing **mass YouTube data collection**, it processes **hundreds of requests per minute** - making it ideal for large-scale content analysis, competitive research, and AI training pipelines. As a cost-efficient **YouTube API alternative**, this Apify Actor eliminates manual scraping bottlenecks and bypasses API rate limits through serverless cloud automation. Whether you're analyzing video engagement metrics, tracking SEO rankings, or building content databases, this solution delivers structured JSON data faster than traditional methods.

### Features

- **Bulk YouTube scraping**: Extract titles, descriptions, view counts, engagement metrics, and channel details from hundreds of videos per minute using parallelized requests.
- **Multi-source support**: Process individual video URLs, search queries (`?search_query=`), and playlists (`list=`) in a single run.
- **Comprehensive data coverage**:
  - **Core metadata**: Titles, descriptions, lengths, relative upload dates
  - **Engagement analytics**: View counts, like counts, comment volumes
  - **Channel authority**: Verified status, subscriber counts, channel URLs
  - **Media assets**: High-resolution thumbnails and canonical video links
- **Zero-config scalability**: Automatic proxy rotation and IP management for uninterrupted **mass video data collection**.
- **Platform integration**: Schedule runs, monitor performance, and export to cloud storage via Apify's ecosystem.

### Input Configuration

Configure these parameters in Apify Console or via API:

| Property         | Type    | Required | Description                                    |
| ---------------- | ------- | -------- | ---------------------------------------------- |
| **`urls`**       | Array   | Yes      | YouTube video URLs, search pages, or playlists |
| **`maxResults`** | Integer | No       | Videos per search/playlist (default: 10)       |

**Notes**:

- For YouTube search data extraction, use `results?search_query=` URLs
- Playlist URLs must contain `list=` parameter

### Output Data

The scraper returns these fields optimized for YouTube SEO analysis:

| Field                | Type    | Description                                     |
| -------------------- | ------- | ----------------------------------------------- |
| `title`              | String  | Video title with primary keywords               |
| `description`        | String  | Full description text for SEO content analysis  |
| `uploadDate`         | String  | Relative upload timestamp                       |
| `viewCount`          | String  | Total views for popularity tracking             |
| `likeCount`          | String  | Engagement metric for video performance         |
| `commentCount`       | String  | Comment count for audience interaction analysis |
| `length`             | String  | Video duration for content strategy             |
| `channelName`        | String  | Channel name for competitor tracking            |
| `channelSubscribers` | String  | Subscriber count for influencer identification  |
| `verified`           | Boolean | Channel verification status                     |
| `thumbnail`          | String  | HD thumbnail URL                                |
| `videoUrl`           | String  | Canonical video link                            |

### How It Works

1. **Configure inputs**: Provide YouTube URLs (videos/searches/playlists) and set `maxResults` for search/playlist queries.
2. **Parallel processing**: The Actor classifies URLs and processes them concurrently using headless browsers and HTTP clients.
3. **Data extraction**: Video metadata is parsed from JSON-LD schemas and DOM structures, including **freshness indicators** like "Uploaded X hours ago" for SEO scoring.
4. **Structured output**: Returns normalized JSON datasets with consistent formatting for easy integration into databases or analytics tools.

### 💰 Pricing

- **Ultra-low cost**: Just **$0.14 for 100+ results**.
- **Blazing fast**: Scraped **100 results in just 55 seconds**.
- **Efficient at scale**: Scrape thousands of youtube videos — far cheaper than traditional APIs.

![Usage stats](https://i.postimg.cc/T3KJLKvW/image.png)

### Support

For troubleshooting or feature requests:

1. **Open an issue** on the Actor's Apify Console page
2. Include:
   - Input configuration details
   - Error logs from failed runs
   - Specific examples of unexpected outputs

Maintenance updates are deployed regularly to ensure compatibility with YouTube's layout changes.

***

**Keywords**: YouTube data extraction, bulk YouTube scraper, fast video scraping, YouTube API alternative, scrape YouTube metadata, mass video data collection, YouTube SEO analysis, video engagement metrics, automated YouTube data.

# Actor input Schema

## `urls` (type: `array`):

Array of YouTube links. Each link should be either a single video URL or a search results page URL.

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

Maximum number of videos to extract for each search query. Applies to search result pages only.

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

Set proxy options. Recommended to use Apify Proxy.

## Actor input object example

```json
{
  "urls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/results?search_query=artificial+intelligence",
    "https://www.youtube.com/playlist?list=PLRBp0Fe2GpglkzuspoGv-mu7B2ce9_0Fn"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "urls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        "https://www.youtube.com/results?search_query=artificial+intelligence",
        "https://www.youtube.com/playlist?list=PLRBp0Fe2GpglkzuspoGv-mu7B2ce9_0Fn"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("perfectscrape/youtube-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 = { "urls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        "https://www.youtube.com/results?search_query=artificial+intelligence",
        "https://www.youtube.com/playlist?list=PLRBp0Fe2GpglkzuspoGv-mu7B2ce9_0Fn",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/results?search_query=artificial+intelligence",
    "https://www.youtube.com/playlist?list=PLRBp0Fe2GpglkzuspoGv-mu7B2ce9_0Fn"
  ]
}' |
apify call perfectscrape/youtube-video-details-scraper --silent --output-dataset

```

## MCP server setup

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

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TLM6JoD4eYfslkzOZ/builds/WqPH72amWUl0cbg48/openapi.json
