YouTube Video Details Scraper (views, likes, description, tags) avatar

YouTube Video Details Scraper (views, likes, description, tags)

Pricing

from $0.60 / 1,000 videos

Go to Apify Store
YouTube Video Details Scraper (views, likes, description, tags)

YouTube Video Details Scraper (views, likes, description, tags)

YouTube Video Details Scraper returns views, likes, description, tags, category, channel and comment count for any YouTube video URL or ID — no YouTube Data API key or quota needed.

Pricing

from $0.60 / 1,000 videos

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

What is YouTube Video Details Scraper?

YouTube Video Details Scraper returns views, likes, description, tags, category, channel and comment-count data for any public YouTube video — no YouTube Data API key, no daily quota, and no browser required. Paste a video URL or ID and get one structured row per video: title, exact view and like counts, full description, uploader-set keywords, category, channel name/ID/URL, subscriber count text, publish date, duration and more. Point it at any YouTube video and run it on Apify with scheduling, API access and monitoring built in.

Under the hood it reads the same ytInitialPlayerResponse block the youtube.com watch page embeds for itself, plus the youtubei/v1/next endpoint the page calls for the sidebar and comments panel — so there is nothing to authenticate and no per-request cost from Google.

Why use YouTube Video Details Scraper?

  • Content research — pull view/like counts, tags and descriptions across a competitor's or influencer's catalog to spot what performs.
  • SEO and metadata audits — check whether a channel's videos have keywords, a filled-in description and a matching category.
  • Monitoring and reporting — schedule a run to track view/like growth on a set of videos over time.
  • AI agent tooling — let an agent look up "how many views does this video have" without writing any scraping code.

How to use YouTube Video Details Scraper

  1. Click Try for free (or Run if you already have it open).
  2. In Videos, paste one or more YouTube URLs or bare video IDs.
  3. Optionally set Max concurrency, Language and Region. Leave Proxy configuration on its default (Residential) for platform runs.
  4. Click Start and watch rows appear in the Dataset tab as they're fetched.
  5. Export the results as JSON, CSV, Excel or HTML, or pull them via the API.

Input

FieldTypeDescription
videosarrayVideo IDs or URLs (watch, shorts, youtu.be). Default: ["dQw4w9WgXcQ"].
proxyModestringauto, always or never — see Proxy requirement below. Default auto.
proxyConfigurationobjectWhich Apify Proxy group to use when proxyMode needs one. Default: Residential proxy.
maxConcurrencyintegerVideos fetched in parallel, 1–10. Default 3.
languagestringUI language code, e.g. category name. Default en.
regionstring2-letter country code. Default US.

See the Input tab for the full schema with examples.

Example input

{
"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ", "jNQXAC9IVRw"],
"maxConcurrency": 3
}

Proxy requirement

YouTube's watch page and its /player//next endpoints can return a "Sign in to confirm you're not a bot" page to requests coming from Apify's own datacenter IP ranges — this comes and goes (a run can succeed for hours, then start failing without any code change). The Proxy mode input controls how the Actor reacts:

  • Auto (default) — every request is tried directly first, with zero proxy cost; the moment YouTube blocks a direct request, the Actor switches to Apify Proxy (see Proxy configuration) for the rest of that run, so later videos don't re-pay the failed-direct attempt.
  • Always — skip the direct attempt and route everything through the proxy from the start.
  • Never — always request directly, even if that means some videos come back with an error.

When the proxy is in play, the Actor also minimizes what goes through it: it prefers the small /youtubei/v1/player call (a few KB) over the ~1 MB watch page, and skips the (surprisingly large, ~370-420 KB) /next call entirely once a run is already paying for proxy bandwidth — /next only ever adds a few optional fields (exact subscriber-count text, comment count, a like-count fallback), so it isn't worth its size once you're not getting it for free.

Output

One row per video:

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"description": "The official video for \"Never Gonna Give You Up\" by Rick Astley...",
"keywords": ["rick astley", "Never Gonna Give You Up", "rick roll"],
"category": "Music",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelName": "Rick Astley",
"channelUrl": "https://www.youtube.com/@RickAstleyYT",
"subscriberCountText": "4.54M subscribers",
"publishDate": "2009-10-24T23:57:33-07:00",
"uploadDate": "2009-10-24T23:57:33-07:00",
"viewCount": 1815026601,
"likeCount": 19386875,
"commentCountText": "2.4M",
"durationSeconds": 213,
"isLive": false,
"isLiveContent": false,
"isPrivate": false,
"isFamilySafe": true,
"isUnlisted": false,
"thumbnailUrl": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/maxresdefault.webp",
"chapters": [],
"hashtags": [
"#RickAstleyNever",
"#RickAstley",
"#NeverGonnaGiveYouUp",
"#WheneverYouNeedSomebody",
"#OfficialMusicVideo"
],
"error": null,
"scrapedAt": "2026-09-13T00:00:00.000Z"
}

You can download the dataset in various formats such as JSON, CSV, Excel or HTML.

Data table

FieldDescription
videoId, url, titleVideo identity
description, keywords, categoryFull description (up to 5000 chars), uploader-set tags and YouTube category
channelId, channelName, channelUrl, subscriberCountTextUploading channel
publishDate, uploadDate, durationSecondsTiming
viewCount, likeCount, commentCountTextEngagement
isLive, isLiveContent, isPrivate, isFamilySafe, isUnlistedStatus flags
thumbnailUrlHighest-resolution thumbnail
chapters, hashtagsBest-effort, parsed from the description text
errorSet instead of video data when the video is unavailable

Pricing

This Actor uses Pay-per-event pricing: $0.001 per video row. Fetching details for 1,000 videos costs about $1.00. There is no separate compute-unit charge on top — the price already covers it.

Apify Proxy adds a small infrastructure cost on top of that, paid from your Apify plan's proxy allowance rather than charged to the caller. With the default Auto proxy mode, that cost is $0 whenever YouTube isn't currently blocking the run's IP (the common case). Measured live: in Auto mode with a block triggered mid-run, and in Always mode (proxy used for every request), proxy data transfer cost ~$0.00007 per video in both cases — the Actor's direct-first strategy and its preference for the small /player call over the ~1 MB watch page and the ~400 KB /next call keep this small even in the worst case, well inside the Residential free-plan allowance (20 GB/month).

YouTube Video Details Scraper vs. the YouTube Data API

The official YouTube Data API v3 videos.list endpoint requires a Google Cloud project, an API key, and burns your daily quota (10,000 units — a few thousand video reads) fast. This Actor reads the same public data the youtube.com watch page loads for itself, with no key, no quota, and results delivered as a ready-to-export dataset.

Using YouTube Video Details Scraper with AI agents / MCP

This Actor is published with Pay-per-event pricing and limited permissions, so it is directly callable through the Apify MCP Server and AI agent frameworks that support Apify tools — an agent can ask "how many views and likes does this video have" and get structured JSON back without any custom scraping code.

FAQ

Is this legal? The Actor reads publicly visible video metadata the same way a browser loading youtube.com does. Respect YouTube's Terms of Service and applicable data-protection law for how you store and use the results.

What about private, deleted or unavailable videos? These return a row with error set and every other field null — nothing to configure, just check the error field.

What happens with age-restricted videos? Metadata (title, views, likes, description, channel) is still public even when playback itself would need a signed-in account, so age-restricted videos return a normal, full row — only genuinely private/deleted/removed videos produce an error row.

Why is likeCount sometimes approximate? YouTube's watch page exposes an exact like count for almost every video. On the rare video where that field is missing, the Actor falls back to the like button's own compact count/accessibility text, which can be off by a handful due to normal live-count drift between the two page loads.

Are chapters always filled in? No — chapters are parsed on a best-effort basis from timestamp lines in the description (the same convention YouTube's own chapter-list detector uses), and only returned when at least two distinct timestamps are found. Many videos have no chapter list at all, so this is often an empty array.

Will large batches get rate-limited? The Actor routes requests through Apify Proxy by default (see Proxy requirement above) — each parallel request gets its own proxy session. For very large batches, keep maxConcurrency at 2–3; on an HTTP 429 the Actor waits 5 seconds and retries once before giving up on that page.

Can I use this in n8n, Make or Zapier? Yes — call the Actor via its Apify API endpoint from any of these tools' native Apify integration or a generic HTTP node, or trigger it from a webhook.

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, reads public data without a login, and returns one clean row per entity:

Browse the whole suite at webdatatools, or call ten of these Actors straight from Claude, Cursor or Cline with the webdatatools MCP server.

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Support

Found a bug or have a feature request? Open an issue on the Actor's Issues tab in Apify Console. Custom scraping solutions are also available on request.