YouTube Video Stats Scraper — Views, Likes, Duration by URL
Pricing
from $15.00 / 1,000 video scrapeds
YouTube Video Stats Scraper — Views, Likes, Duration by URL
Get YouTube video stats and metadata by URL or video ID — view count, likes, duration, publish date, title, description, category, keywords, channel and caption languages. Bulk video lookup, no API key, no login, no quota. Filter by views or duration. Charged only for videos actually returned.
Pricing
from $15.00 / 1,000 video scrapeds
Rating
0.0
(0)
Developer
Nicholas Cheng
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
YouTube Video Stats Scraper
Give it YouTube links or video IDs, get one row of real numbers per video. View count, duration, publish date, likes, title, full description, category, keywords, channel, and which caption languages exist. No API key, no OAuth, no login, no quota to apply for. Accepts watch links, Shorts links, youtu.be links, embed links, or bare 11-character IDs.
You are charged only for videos that actually came back. A private, deleted, or region-blocked video produces an explanatory row and costs nothing.
| Input | Video URLs or IDs — any format YouTube itself accepts |
| Output | One row per video, numbers as numbers |
| Price | $0.015 per video — the same on every Apify plan |
| API key | Not needed. This does not use the YouTube Data API, so it does not consume your quota |
| Channels | Not fetched. This Actor is the videos-only mode of the YouTube Video & Channel Scraper; use that one to list a channel's recent videos |
What you get
{"itemType": "video","videoId": "aircAruvnKk","url": "https://www.youtube.com/watch?v=aircAruvnKk","title": "But what is a neural network? | Deep learning chapter 1","description": "Full text of the video description, not truncated.","durationSeconds": 1120,"viewCount": 23951183,"likesLabel": "like this video along with 512,000 other people","publishedAt": "2017-10-05T00:00:00-07:00","channelId": "UCYO_jab_esuFRV4b17AJtAw","channelName": "3Blue1Brown","channelUrl": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw","channelSubscribersLabel": "7.4M subscribers","keywords": ["neural networks", "deep learning", "machine learning"],"category": "Education","isLive": false,"thumbnail": "https://i.ytimg.com/vi/aircAruvnKk/maxresdefault.jpg","availableCaptions": [{ "language": "en", "name": "English", "isAutoGenerated": false }]}
viewCount and durationSeconds are real numbers, not display strings — you can sort and filter on
them without parsing "1.2M" first. likesLabel is a string on purpose: YouTube no longer exposes
an exact like count to logged-out clients, and inventing a number from a rounded label would be
making data up.
availableCaptions lists which caption tracks exist and in which languages. It does not include
the caption text — see below.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk","https://youtu.be/dQw4w9WgXcQ","https://www.youtube.com/shorts/…","jNQXAC9IVRw"],"minViews": 10000}
| Option | Default | Notes |
|---|---|---|
videoUrls | — | Watch, Shorts, youtu.be, embed links, or bare IDs. De-duplicated |
minViews | 0 | Drop videos below this view count |
minDurationSeconds / maxDurationSeconds | 0 | Keep only videos in a length range — e.g. maxDurationSeconds: 60 for Shorts |
publishedAfter | — | ISO date; older videos are dropped |
titleContains | — | Keep only titles containing any of these phrases (case-insensitive) |
maxItems | 0 | Hard cap on rows for the run |
Videos that fail a filter are not delivered and not charged. They are counted under
filteredOut in the run summary.
Pricing
$0.015 per video, on every Apify plan — Free, Bronze, Silver, Gold, Platinum, Diamond. Check the Pricing tab: all six columns are identical. The price a listing advertises in its title is not always the price a free-plan run pays; here it is.
What you are not charged for
| What happens here | |
|---|---|
| Unavailable videos | Private, deleted, region-blocked, or mistyped IDs produce one row marked chargedForThis: false. Nothing is billed. |
| Filtered-out videos | A video that fails minViews or any other filter is not written and not billed. |
| Empty or placeholder rows | If the video data did not come back, no row is written. |
| The free plan | Same code path, same fields, same limits. No demo mode, no row cap, no nulls in place of data. |
What this Actor cannot do
- No transcripts or subtitles. YouTube serves caption text only to clients that pass a proof-of-origin check; this Actor does not attempt to defeat it. You get the list of caption languages, not the text.
- No channel listings. For "the latest videos from these channels", use the YouTube Video & Channel Scraper — same code, same prices, plus a $0.005 channel event.
- No exact like count. YouTube stopped exposing it to logged-out clients; you get YouTube's own rounded label.
- No comments, no search.
How it stays working
Video pages are loaded through a rotating residential connection — an ordinary browser-like request from an ordinary address, not a bypass of anything. YouTube's page structure is read at runtime; if a video's data does not come back, the row is marked unavailable rather than filled with nulls.
Integrating
curl -X POST "https://api.apify.com/v2/acts/nick.cheng~youtube-video-stats/run-sync-get-dataset-items?token=<TOKEN>" \-H 'Content-Type: application/json' \-d '{"videoUrls":["aircAruvnKk","dQw4w9WgXcQ"]}'
Official clients exist for JavaScript and Python, and results export as JSON, CSV, or Excel.