# YouTube Video Details Scraper \[From $0.15/1K 💰] Official API (`cybermax/youtube-video-details`) Actor

💰 $0.15 per 1,000 videos + $0.001 per run; deleted, private and invalid links are free. Bulk YouTube video details: views, likes, comments, duration, tags and engagement rate for video links or whole playlists, through the official YouTube Data API with your own free API key. Growth monitor.

- **URL**: https://apify.com/cybermax/youtube-video-details.md
- **Developed by:** [CyberMax](https://apify.com/cybermax) (community)
- **Categories:** Videos, Social media, MCP servers
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Vidvett: YouTube Video Details Scraper (Official API)

#### Views, likes, comments, duration, tags and engagement rate for any list of YouTube videos or whole playlists, from the official YouTube Data API with your own free key

Vidvett is a bulk **YouTube video details scraper** that does not scrape: it asks the **official YouTube Data API v3**, with **your own free API key**, for every video you list. Paste video links in any form (watch, youtu.be, Shorts, live, embed, bare IDs) or **playlist** links and get **title, description, channel, publish date, duration, views, likes, comment count, engagement rate, tags, topics, category, language, captions flag, licence and thumbnail**. Deleted, private and mistyped links are reported and never charged. **Monitor mode** remembers each video's numbers and returns only videos that moved, with **viewsDelta, likesDelta and commentsDelta**, so a daily schedule becomes a growth tracker.

**[▶ Try it now](https://apify.com/cybermax/youtube-video-details)** (run it empty for a free demo of the output format) · $0.15 per 1,000 videos + $0.001 per run · Apify's free plan includes $5 of credit a month

**Built for:** influencer-marketing managers verifying the views of sponsored videos before paying · analysts enriching a spreadsheet of video links · media teams tracking how a campaign's videos grow day by day · researchers building datasets from playlists · AI agents that need facts about a video

**Real output** (real run on Apify, 12 Nov 2026: 6 links + 2 playlists, 18 videos, 1 deleted, 1 invalid, 2.4 s, 3 API units):

| Input | Title | Channel | Length | Views | Likes | Comments | Engagement % |
|---|---|---|---|---|---|---|---|
| `https://www.youtube.com/watch?v=dQw4w9WgXcQ` | Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) | Rick Astley | 3:34 | 1,836,258,921 | 19,501,136 | 2,462,015 | 1.2 |
| `youtu.be/9bZkp7q19f0` | PSY - GANGNAM STYLE(강남스타일) M/V | officialpsy | 4:13 | 6,124,658,018 | 32,391,653 | 5,467,096 | 0.62 |
| playlist `PLOU2XLY…` | Music and Machine Learning (Google I/O'19) | Google for Developers | 41:18 | 47,428 | 762 | 21 | 1.65 |
| `aaaaaaaaaaa` | Video not found: deleted, private or never existed (free) | | | | | | |
| `https://vimeo.com/1` | Not a YouTube video link or ID (free) | | | | | | |

Monitor mode, second run 45 seconds later (real run, 12 Nov 2026):

```json
{
  "videoId": "Sh4pJYJOT7M",
  "found": true,
  "title": "Future ft. Drake, Travis Scott & Loe Shimmy - Ya Hit (Official Music Video)",
  "views": 1542451,
  "change": "changed",
  "viewsDelta": 336,
  "likesDelta": 10,
  "commentsDelta": -1,
  "previousCheckAt": "2026-11-12T03:04:34.954Z"
}
```

### What it costs

| What | Price |
|---|---|
| Video returned | **$0.00015** ($0.15 per 1,000) |
| Run started (once per run, after YouTube accepts your key) | **$0.001** |
| Invalid links, deleted or private videos, API errors, unchanged videos in monitor mode, demo runs, runs with a refused key | free |

Example: 2,000 video links cost **$0.301** and use 40 of your 10,000 free daily API units (1 unit per 50 videos). Prices of other Store Actors for the same job on 12 Nov 2026 (their Free-plan tier): thenetaji/youtube-video-details-scraper $0.95 per 1,000, delicious_zebu/youtube-video-data-scraper $1.20 per 1,000, memo23/youtube-video-details-scraper $5.00 per 1,000 + $0.005 per run. Those need no API key; Vidvett needs your free key.

### Get your free YouTube Data API key (about 3 minutes, once)

1. Open [Google Cloud Console](https://console.cloud.google.com/) and create a project (any name; no billing account is needed for this API).
2. Go to **APIs & Services → Library**, search **YouTube Data API v3** and press **Enable**.
3. Go to **APIs & Services → Credentials → Create credentials → API key**.
4. Optional but wise: edit the key, set **API restrictions → YouTube Data API v3**, and leave **Application restrictions** on *None* (the Actor calls Google from Apify's servers).
5. Paste the key into the **YouTube Data API key** field. It is a secret input: Apify stores it encrypted, the Actor sends it only to `googleapis.com` and never writes it to the log or the dataset.

Google gives every project **10,000 API units a day for free**; the quota resets at midnight Pacific time. If you run out, the run stops cleanly, keeps what it has and tells you; you can ask Google for a higher quota in the same console.

### How to use it

1. Paste your **YouTube Data API key**.
2. Paste **video links or IDs**, one per line, and/or **playlist links**.
3. Run and download JSON, CSV or Excel. Each row keeps your original link in `query`, so you can join it back to your sheet.

### Ready-made inputs

```json
{ "apiKey": "YOUR_KEY", "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ", "youtu.be/9bZkp7q19f0"] }
```

```json
{ "apiKey": "YOUR_KEY", "playlists": ["https://www.youtube.com/playlist?list=PLOU2XLYxmsIKW-llcbcFdpR9RjCfYHZaV"], "maxVideosPerPlaylist": 200 }
```

```json
{ "apiKey": "YOUR_KEY", "videos": ["dQw4w9WgXcQ", "9bZkp7q19f0"], "monitor": true, "monitorKey": "campaign-november" }
```

### Run it on a schedule (growth tracking)

Turn on **Monitor mode** and schedule the Actor daily. Each run returns new videos and videos whose views, likes, comments or title changed, with the difference since the last run. Videos that did not move are free.

### Integrations

- **API:** `POST https://api.apify.com/v2/acts/cybermax~youtube-video-details/run-sync-get-dataset-items`.
- **Python / JavaScript:** `apify-client`.
- **AI agents (MCP):** `https://mcp.apify.com/?tools=cybermax/youtube-video-details`.
- **No code:** Make, Zapier and n8n through their Apify apps.

### Why Vidvett

- **Official numbers** straight from YouTube's API.
- **Every link form** understood, duplicates merged, your original text kept.
- **Misses are free and explained:** deleted, private, invalid.
- **Engagement rate** ((likes + comments) ÷ views) on every row.
- **Growth deltas** in monitor mode.
- **Honest limits:** no transcripts, comment text, dislikes or downloads; like counts are missing where the owner hides them.

### FAQ

**Why do I need my own API key?** YouTube's terms forbid scraping its site; its official API is the legitimate route, and Google issues the free quota per project.

**How many videos a day?** 50 videos per API unit, so the free 10,000 units cover about 500,000 videos a day.

**Can it tell me whether a video is a Short?** The API has no Shorts flag; use `durationSeconds`. For one channel's Shorts list use [Chanroll](https://apify.com/cybermax/youtube-channel-scraper).

**What happens with age-restricted or region-blocked videos?** They are returned like any other public video.

**Can an AI agent use it?** Yes, through Apify's MCP server; pass the key in the tool input.

### Terms and data source

This Actor is an API client for **YouTube API Services**: every row comes from the official [YouTube Data API v3](https://developers.google.com/youtube/v3), called with your own key and your own quota. It does not load youtube.com pages or feeds and does not download videos, audio or captions. By using it you agree to be bound by the [YouTube Terms of Service](https://www.youtube.com/t/terms); Google's handling of data is described in the [Google Privacy Policy](https://policies.google.com/privacy). Your Google Cloud project is the API client of record, so the [YouTube API Services Terms](https://developers.google.com/youtube/terms/api-services-terms-of-service) and [Developer Policies](https://developers.google.com/youtube/terms/developer-policies) apply to how you store and use the results (for example, refresh or delete stored statistics after 30 days). CyberMax is not affiliated with, endorsed by or sponsored by YouTube or Google. YouTube is a trademark of Google LLC.

### Also from CyberMax

- [Chanroll: YouTube Channel Video Scraper](https://apify.com/cybermax/youtube-channel-scraper) · every upload of a channel, with an upload monitor.
- [Vidtrawl: YouTube Search Scraper](https://apify.com/cybermax/youtube-search-scraper) · keyword search and trending videos.
- [Rowmold: Dataset Filter & Transform](https://apify.com/cybermax/dataset-filter-transform) · filter the results and export Excel.
- [Rowmeld: Merge & Dedupe Datasets](https://apify.com/cybermax/merge-dedupe-datasets) · combine several runs into one list.

Found this useful? A quick rating helps others find it.

© 2026 CyberMax. All rights reserved.

# Actor input Schema

## `videos` (type: `array`):

Video URLs (watch, youtu.be, Shorts, live, embed) or 11-character video IDs, one per line. 50 videos use 1 of your 10,000 free daily API units. Deleted, private and invalid links are reported and free.

## `apiKey` (type: `string`):

Your own YouTube Data API v3 key from Google Cloud Console (free, about 3 minutes: create a project, enable 'YouTube Data API v3', create an API key; steps in the README). It is stored encrypted, sent only to googleapis.com and never logged. Leave empty for a free demo that returns illustrative rows.

## `playlists` (type: `array`):

Playlist URLs or IDs (PL…): every video in the playlist is returned with full details.

## `maxVideosPerPlaylist` (type: `integer`):

Empty = the whole playlist.

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

Stop after this many videos across the whole run. Empty = no total cap. You can also cap the cost with the run's 'Maximum charge' option.

## `monitor` (type: `boolean`):

Remembers each video's views, likes and comments and, on the next run, returns only new videos and videos whose numbers changed, with viewsDelta, likesDelta and commentsDelta. Schedule it daily to track growth; unchanged videos are free.

## `monitorKey` (type: `string`):

Optional name for this watchlist, so two schedules with different inputs keep separate memories. Leave empty to use one memory per unique input.

## `accessToken` (type: `string`):

For developers who already use Google OAuth: an access token with a YouTube read scope. Tokens expire after about an hour, so an API key is simpler for scheduled runs.

## Actor input object example

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "monitor": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "videos": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cybermax/youtube-video-details").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 = { "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"] }

# Run the Actor and wait for it to finish
run = client.actor("cybermax/youtube-video-details").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 '{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ]
}' |
apify call cybermax/youtube-video-details --silent --output-dataset

```

## MCP server setup

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

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/acJPqDNuly31j5ZQ2/builds/NLHQ4dtw0NITTKZYW/openapi.json
