# YouTube Video Details Scraper - Views, Likes & Channel Stats (`delicious_zebu/youtube-video-data-scraper`) Actor

Get exact views, likes, publish date, duration, tags, chapters and channel stats (subscribers, country, social links) for any list of YouTube video links or IDs. Works with Shorts and live streams.

- **URL**: https://apify.com/delicious_zebu/youtube-video-data-scraper.md
- **Developed by:** [Zebu Data](https://apify.com/delicious_zebu) (community)
- **Categories:** Videos, SEO tools, Social media
- **Stats:** 176 total users, 16 monthly users, 99.5% runs succeeded, 34 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / 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/actors/running/actors-in-store.md#pay-per-event

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

### What does YouTube Video Details Scraper do?

**YouTube Video Details Scraper** gets the full details of any list of [YouTube](https://www.youtube.com) videos as clean, structured data: **exact views and likes, exact publish date and time, duration, comment count, description, category, tags and chapters**, plus the stats of each video's channel: **subscribers, country, joined date, total views and social links**. It works as an unofficial **YouTube API alternative**: no API key, no quota and no login.

Paste video links or video IDs (one or thousands), click **Start**, and download the results as JSON, CSV or Excel. Regular videos, **Shorts and live streams** all work.

### Why use YouTube Video Details Scraper?

- 🔢 **Numbers you can sort and sum**: exact view and like counts and a UTC publish timestamp, next to the text YouTube shows (`1,827,105 views`, `41K`, `Sep 28, 2026`).
- 🔗 **Channel social links**: the Instagram, TikTok, X (Twitter), Facebook and website links of each video's channel, with their real URLs, plus subscribers, country and whether the channel lists a business email. Handy for influencer research and outreach.
- 🎬 **Any link format**: watch links, `youtu.be` short links, Shorts, live and mobile links, or plain video IDs. Each video is scraped once, even if you paste it twice.
- 📑 **More than the basics**: chapters, tags, category, captions, thumbnail, video type (Video, Short or Live) and visibility (Public, Unlisted or Members only).
- ⚡ **Fast and lightweight**: no browser, several videos at a time, so large lists finish in minutes.
- ✅ **You only pay for results**: removed, private or mistyped videos are skipped and not charged. The run tells you which ones and why.

**Popular use cases:** video performance reports, influencer vetting and outreach, competitor and campaign tracking, content research, enriching a list of video links with views and channel data, and building video datasets for analytics or AI.

| | YouTube Video Details Scraper | YouTube Data API | Copying by hand |
|---|---|---|---|
| API key / Google Cloud project | Not needed | Required | Not needed |
| Daily quota | None | 10,000 units per day by default | — |
| Channel social links and country | Yes | Not available | Yes, slowly |
| Export to CSV / Excel / JSON | Yes | Needs code | Manual |
| Scheduling and integrations | Built in | Needs code | No |

### What data can you extract?

**Video fields**

| Field | Description | Example |
|---|---|---|
| `title` | Video title | `I Found these Computers in a Ditch…` |
| `url` | The video link from your input | `https://www.youtube.com/watch?v=y1hZ3EalPQU` |
| `video_id` | YouTube video ID | `y1hZ3EalPQU` |
| `views_count_exact` | Exact view count | `1827105` |
| `views_count` | Views as YouTube shows them | `1,827,105 views` |
| `likes_count_exact` | Exact like count | `41615` |
| `likes_count` | Likes as the like button shows them | `41K` |
| `comments_count` | Comment count as YouTube shows it | `2.7K` |
| `published_at` | Exact publish date and time in UTC | `2026-09-28T18:15:07Z` |
| `publish_date` | Publish date as YouTube shows it | `Sep 28, 2026` |
| `video_duration` | Video length | `27:05` |
| `duration_seconds` | Video length in seconds | `1625` |
| `video_type` | Kind of video | `Video`, `Short` or `Live` |
| `video_visibility` | Who can watch it | `Public`, `Unlisted` or `Members only` |
| `video_category` | YouTube category | `Science & Technology` |
| `video_tags` | Tags set by the creator | `["LTT", "Gaming", "PC"]` |
| `chapters` | Chapters with their start times | `[{"title": "Intro", "start": "0:00", "start_seconds": 0}]` |
| `has_captions` | Whether the video has captions, including auto-generated ones | `true` |
| `is_family_safe` | Whether YouTube marks it as family safe | `true` |
| `description` | Full description | `Thanks to UGREEN for sponsoring this video! ...` |
| `thumbnail_url` | Largest thumbnail image | `https://i.ytimg.com/vi/y1hZ3EalPQU/maxresdefault.jpg` |

**Channel fields** (on every row)

| Field | Description | Example |
|---|---|---|
| `channel_name` | Channel name | `Linus Tech Tips` |
| `channel_handle` | Channel handle | `@LinusTechTips` |
| `channel_id` | Channel ID | `UCXuqSBlHAE6Xw-yeJA0Tunw` |
| `channel_url` | Link to the channel | `https://www.youtube.com/@LinusTechTips` |
| `channel_subscribers` | Subscribers as a number, rounded like YouTube shows them | `16900000` |
| `channel_subscriber_count` | Subscribers as YouTube shows them | `16.9M subscribers` |
| `social_links` | The channel's links with their real URLs, plus its About page | `{"Twitter": "https://twitter.com/LinusTech"}` |
| `channel_country` | Country from the channel's About panel | `Canada` |
| `channel_joined_date` | Date the channel joined YouTube | `2008-11-24` |
| `channel_total_views` | Total views of all the channel's videos | `9880231933` |
| `channel_video_count` | Number of videos on the channel | `7943` |
| `channel_is_verified` | Has the verified badge | `true` |
| `channel_has_business_email` | Whether the channel lists a business email (the email itself needs a YouTube sign-in and is not scraped) | `true` |
| `channel_description` | Channel description | `Linus Tech Tips is a passionate team of ...` |
| `channel_avatar_url` | Profile picture | `https://yt3.ggpht.com/...` |

### How to scrape YouTube video details

1. Click **Try for free** on this page and sign in to Apify (a free account is enough).
2. In **YouTube video links**, paste your video links or video IDs, one per line.
3. Click **Start**. Most runs finish in seconds; thousands of videos take a few minutes.
4. Watch the log: each video gets one line, and skipped videos say why.
5. Download the results as JSON, CSV, Excel or HTML, or get them through the API.

### How much does it cost to scrape YouTube video data?

You only pay for the videos you get. Skipped videos (removed, private or not a video link) are free. See the [Pricing](https://apify.com/delicious_zebu/youtube-video-data-scraper/pricing) tab for the current price.

To keep a run within budget, set a **Max cost per run** in the run options. The Actor stops as soon as the limit is reached.

New to Apify? The free plan includes monthly platform credit, so you can try this Actor at no cost.

### Input

| Field | Type | Description |
|---|---|---|
| YouTube video links (`urls`) | List | Video links or video IDs, one per line. Required. |

These formats all work, with or without extra parameters such as `&t=30s`, `&list=...` or `?si=...`:

| Format | Example |
|---|---|
| Watch link | `https://www.youtube.com/watch?v=y1hZ3EalPQU` |
| Short link | `https://youtu.be/y1hZ3EalPQU` |
| Shorts | `https://www.youtube.com/shorts/04MFcE-ntxQ` |
| Live | `https://www.youtube.com/live/1-LpQekNa9g` |
| Mobile, embed or YouTube Music link | `https://m.youtube.com/watch?v=y1hZ3EalPQU` |
| Video ID | `y1hZ3EalPQU` |

**A few videos in different formats**

```json
{
    "urls": [
        "https://www.youtube.com/watch?v=y1hZ3EalPQU",
        "https://youtu.be/dQw4w9WgXcQ",
        "https://www.youtube.com/shorts/04MFcE-ntxQ"
    ]
}
```

**Video IDs from a spreadsheet**

```json
{
    "urls": ["y1hZ3EalPQU", "dQw4w9WgXcQ", "kJQP7kiw5Fk"]
}
```

### Output

Each video is one item in the dataset. Here is a real item (description, tags and chapters shortened):

```json
{
    "url": "https://www.youtube.com/watch?v=y1hZ3EalPQU",
    "title": "I Found these Computers in a Ditch…",
    "views_count": "1,827,105 views",   // Live streams on air show "2,806 watching now"
    "likes_count": "41K",
    "comments_count": "2.7K",           // Empty when comments are turned off
    "description": "Thanks to UGREEN for sponsoring this video! Check out their Home Agent lineup and more below! ...",
    "publish_date": "Sep 28, 2026",
    "channel_name": "Linus Tech Tips",
    "channel_id": "UCXuqSBlHAE6Xw-yeJA0Tunw",
    "channel_subscriber_count": "16.9M subscribers",
    "social_links": {
        "About": "https://www.youtube.com/@LinusTechTips/about",
        "lttstore.com": "https://www.lttstore.com/",
        "Twitter": "https://twitter.com/LinusTech",
        "TikTok": "https://www.tiktok.com/@linustech",
        "Instagram": "https://www.instagram.com/linustech/"
    },
    "video_id": "y1hZ3EalPQU",
    "views_count_exact": 1827105,       // null for members-only videos
    "likes_count_exact": 41615,         // null when the creator hides likes
    "published_at": "2026-09-28T18:15:07Z",
    "video_duration": "27:05",          // null for live streams still on air
    "duration_seconds": 1625,
    "video_type": "Video",
    "video_visibility": "Public",
    "video_category": "Science & Technology",
    "video_tags": ["BocaBola", "LTT", "Gaming", "PC", "Ditch"],
    "thumbnail_url": "https://i.ytimg.com/vi/y1hZ3EalPQU/maxresdefault.jpg",
    "is_family_safe": true,
    "chapters": [                       // Empty when the video has no chapters
        { "title": "Intro", "start": "0:00", "start_seconds": 0 },
        { "title": "Inspecting the PCs", "start": "1:26", "start_seconds": 86 }
    ],
    "has_captions": true,
    "channel_handle": "@LinusTechTips",
    "channel_url": "https://www.youtube.com/@LinusTechTips",
    "channel_subscribers": 16900000,
    "channel_is_verified": true,
    "channel_avatar_url": "https://yt3.ggpht.com/gnvYLhXy8FAlPXZ2RTrkrgj-5kyt0vdE2FUGVOiKGdEZIa-wN5A-7nwZBlWJLzUMmoh1NWAU=s176-c-k-c0x00ffffff-no-rj",
    "channel_description": "Linus Tech Tips is a passionate team of \"professionally curious\" experts in consumer technology and video production ...",
    "channel_country": "Canada",        // null when the channel sets no country
    "channel_joined_date": "2008-11-24",
    "channel_total_views": 9880231933,
    "channel_video_count": 7943,
    "channel_has_business_email": true
}
```

### Tips and limitations

- **Track views over time:** [schedule](https://docs.apify.com/platform/schedules) the same list daily or weekly and compare `views_count_exact` and `likes_count_exact` between runs.
- **Live streams on air** show the current viewers in `views_count` (for example `2,806 watching now`) and have no duration yet.
- **Members-only videos** are included and marked `Members only`. They have no public view count, so the view fields are empty.
- **Hidden numbers:** when a creator hides likes, the like fields are empty. A few videos, such as some YouTube Originals, hide their views too.
- **Comment counts** are shown the way YouTube shows them (`2.7K`). Need the comments themselves? Use [YouTube Comments Scraper](https://apify.com/delicious_zebu/youtube-comments-replies-scraper).
- **Subscriber counts** are rounded the same way YouTube shows them publicly (16.9M becomes `16900000`).
- **Artist and collaboration videos:** the channel fields describe the channel shown under the video, such as the artist's official channel instead of the VEVO channel that uploaded it. For videos made by several channels, they describe the channel that uploaded it.
- **Captions:** `has_captions` tells you whether a video has captions (including auto-generated ones); the caption text itself is not downloaded.
- **Skipped videos** (removed, private, or lines that aren't YouTube video links) are listed in the run's status message and saved as `SKIPPED_VIDEOS` in the run's Storage tab.

### FAQ

#### Is it legal to scrape YouTube?

This Actor only collects data that YouTube shows publicly. Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

#### Do I need a YouTube API key or account?

No. Paste the video links and start the run.

#### How many videos can I scrape in one run?

As many as you like. The Actor scrapes several videos at a time, so a list of 1,000 videos usually finishes in a few minutes.

#### Can I scrape YouTube Shorts and live streams?

Yes. Paste their links like any other video. `video_type` tells you whether each item is a `Video`, a `Short` or a `Live` stream.

#### Do I pay for videos that couldn't be scraped?

No. Only scraped videos are charged. Removed, private and invalid links are skipped for free.

#### Why are some fields empty?

YouTube doesn't show them for that video: members-only videos have no public views, some creators hide likes, comments can be turned off, and not every video has chapters, tags or captions. Channel fields such as country are empty when the channel doesn't fill them in.

#### Can I use it through the API or with AI agents?

Yes. You can run it with the [Apify API](https://docs.apify.com/api/v2), the Python and JavaScript clients, integrations such as Make, Zapier and n8n, or the [Apify MCP server](https://mcp.apify.com) for AI agents.

### Related Actors

| Actor | What it does |
|---|---|
| [YouTube Transcript Scraper - Subtitles & Captions API](https://apify.com/delicious_zebu/youtube-transcript-scraper) | Transcripts and subtitles of any video, in every language it has |
| [YouTube Channel Scraper - All Videos, Views & Dates](https://apify.com/delicious_zebu/youtube-channel-video-scraper) | Every video, Short and live stream of a channel |
| [YouTube Comments Scraper - Replies, Likes & Shorts](https://apify.com/delicious_zebu/youtube-comments-replies-scraper) | Comments and replies of any video |
| [YouTube Search Scraper - Videos & Shorts by Keyword](https://apify.com/delicious_zebu/youtube-video-scraper-by-keyword) | Videos that match a search term |

### Support

Found a problem or need another field? Open an issue in the **Issues** tab and we'll get back to you.

# Actor input Schema

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

Add the videos to scrape, one per line. Each line can be a video link (https://www.youtube.com/watch?v=y1hZ3EalPQU or https://youtu.be/y1hZ3EalPQU), a Shorts or live link, or just the 11-character video ID (y1hZ3EalPQU). Each video is scraped only once, even if it appears in several lines.

## Actor input object example

```json
{
  "urls": [
    "https://www.youtube.com/watch?v=y1hZ3EalPQU"
  ]
}
```

# Actor output Schema

## `overview` (type: `string`):

Table view of video data using the 'overview' view from dataset_schema.json.

## `rawResults` (type: `string`):

All video metadata items from the default dataset without a specific view.

# 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=y1hZ3EalPQU",
        "https://www.youtube.com/watch?v=pOX1l1edBME",
        "https://www.youtube.com/watch?v=tL9Lw250spc",
        "https://www.youtube.com/watch?v=BHdbsHFs2P0",
        "https://www.youtube.com/watch?v=iWUp2kMCv6o",
        "https://www.youtube.com/watch?v=iGZsPFJuxc0",
        "https://www.youtube.com/watch?v=DNRYkBMaf3Y",
        "https://www.youtube.com/watch?v=fEMHMd7fovM",
        "https://www.youtube.com/watch?v=9Ff4S1FJdRM",
        "https://www.youtube.com/watch?v=vN44jvYD0aY"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("delicious_zebu/youtube-video-data-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=y1hZ3EalPQU",
        "https://www.youtube.com/watch?v=pOX1l1edBME",
        "https://www.youtube.com/watch?v=tL9Lw250spc",
        "https://www.youtube.com/watch?v=BHdbsHFs2P0",
        "https://www.youtube.com/watch?v=iWUp2kMCv6o",
        "https://www.youtube.com/watch?v=iGZsPFJuxc0",
        "https://www.youtube.com/watch?v=DNRYkBMaf3Y",
        "https://www.youtube.com/watch?v=fEMHMd7fovM",
        "https://www.youtube.com/watch?v=9Ff4S1FJdRM",
        "https://www.youtube.com/watch?v=vN44jvYD0aY",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("delicious_zebu/youtube-video-data-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=y1hZ3EalPQU",
    "https://www.youtube.com/watch?v=pOX1l1edBME",
    "https://www.youtube.com/watch?v=tL9Lw250spc",
    "https://www.youtube.com/watch?v=BHdbsHFs2P0",
    "https://www.youtube.com/watch?v=iWUp2kMCv6o",
    "https://www.youtube.com/watch?v=iGZsPFJuxc0",
    "https://www.youtube.com/watch?v=DNRYkBMaf3Y",
    "https://www.youtube.com/watch?v=fEMHMd7fovM",
    "https://www.youtube.com/watch?v=9Ff4S1FJdRM",
    "https://www.youtube.com/watch?v=vN44jvYD0aY"
  ]
}' |
apify call delicious_zebu/youtube-video-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,delicious_zebu/youtube-video-data-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/mnpodfgT78RRnnnAT/builds/xsHKwGiJ6WQx9FqaF/openapi.json
