YouTube Video Detail Scraper avatar

YouTube Video Detail Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
YouTube Video Detail Scraper

YouTube Video Detail Scraper

Fetch a YouTube video's metadata — title, channel, views, likes label, description, upload date, keywords, thumbnails. No login.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract rich metadata for any YouTube video in bulk — title, channel, view count, description, thumbnails, keywords, upload date, category, and country availability — in a clean structured JSON output.

Why use this actor

  • No account / no login required — just give it a YouTube video ID, watch URL, short URL, or Shorts URL.
  • No API key needed and no quota — unlike the YouTube Data API, this actor has no daily request cap and no API key to manage.
  • Flexible input — 11-character video IDs, full youtube.com/watch?v=... URLs, youtu.be/... short links, and youtube.com/shorts/... Shorts URLs are all accepted in the same list.
  • Live view count — the viewCount reflects the count YouTube shows on the page at the moment of scraping, not a cached or aggregated number.
  • Bulk input — pass a list of videos in one run; one clean dataset row per video.
  • Status-aware — private, removed, age-restricted, and members-only videos surface as a structured _error envelope so you can triage failures.
  • Stable JSON output suitable for pipelines, spreadsheets, and databases — every row carries _input, _source, _scrapedAt envelope fields so you can join results back to your input list.

How it works

  1. You provide a list of YouTube videos as IDs or URLs (any of the supported URL shapes).
  2. The actor opens each video's public watch page and reads the metadata block the same way the YouTube web app does, then assembles a flat JSON record.
  3. Unavailable videos (private, removed, age-restricted, region-blocked) return a structured _error instead of crashing the run.
  4. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.

Input

{
"videos": [
"dQw4w9WgXcQ",
"https://www.youtube.com/watch?v=jNQXAC9IVRw"
],
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["DATACENTER"]
}
}
FieldTypeDescription
videosarrayList of YouTube videos to scrape. Accepts 11-character IDs (dQw4w9WgXcQ), full watch URLs (https://www.youtube.com/watch?v=...), short URLs (https://youtu.be/...), and Shorts URLs (https://www.youtube.com/shorts/...).
proxyConfigurationobjectApify Proxy settings. Datacenter proxy is fine for most workloads.

Output

Input: dQw4w9WgXcQ

{
"_input": "dQw4w9WgXcQ",
"_source": "S1-primary",
"_scrapedAt": "2026-05-18T10:42:41.835602+00:00",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"lengthSeconds": "213",
"viewCount": "1773571537",
"likesLabel": "",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelTitle": "Rick Astley",
"channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"isLive": false,
"isPrivate": false,
"shortDescription": "The official video for “Never Gonna Give You Up” by Rick Astley. \n\nNever: The Autobiography OUT NOW! \nFollow this link to get your copy and listen to Rick’s ‘Never’ playlist ... (truncated)",
"thumbnails": [
{ "url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg?sqp=...", "width": 168, "height": 94 },
{ "url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg?sqp=...", "width": 336, "height": 188 },
{ "url": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/maxresdefault.webp", "width": 1920, "height": 1080 }
],
"keywords": [
"rick astley",
"Never Gonna Give You Up",
"rick roll",
"rickrolled",
"80s music"
],
"uploadDate": "2009-10-24T23:57:33-07:00",
"publishDate": "2009-10-24T23:57:33-07:00",
"category": "Music",
"isFamilySafe": true,
"availableCountries": ["AD", "AE", "AF", "AG", "AI", "... 240 more"]
}
FieldTypeDescription
_inputstringThe video ID or URL exactly as you supplied it. Use this to join results back to your input list.
_sourcestringInternal tag for the path used to fetch the record. S1-primary means the fastest, richest path; values starting with S2- indicate a fallback was used.
_scrapedAtstringISO-8601 UTC timestamp when the record was scraped.
videoIdstringThe canonical 11-character YouTube video ID.
titlestringVideo title.
lengthSecondsstringVideo duration in seconds (numeric string, as returned by YouTube).
viewCountstringTotal view count at the moment of scraping (numeric string).
likesLabelstringAccessibility label for the like button (e.g. "like this video along with 1.2K other people"). Empty string if the video has no public like count. YouTube no longer exposes the raw integer publicly.
channelIdstringChannel ID (the UC... slug). Stable across channel renames.
channelTitlestringChannel display name.
channelUrlstringCanonical channel URL (https://www.youtube.com/channel/UC...).
isLivebooleantrue if the video is or was a live stream.
isPrivatebooleantrue if the video is private.
shortDescriptionstringVideo description text (preserves line breaks).
thumbnailsarrayList of thumbnail variants. Each item has url, width, height. The largest is usually maxresdefault.webp (1920x1080).
keywordsarrayList of video tags / keywords set by the uploader. May be empty.
uploadDatestringISO-8601 timestamp the video was uploaded.
publishDatestringISO-8601 timestamp the video was published (often equal to uploadDate; differs for premiered videos).
categorystringYouTube category name (e.g. "Music", "Gaming", "Education").
isFamilySafebooleantrue if YouTube classifies the video as family-safe.
availableCountriesarrayISO 3166-1 alpha-2 country codes where the video is viewable.

Error envelope

Videos that are private, removed, age-restricted, or otherwise unavailable return a structured error instead of crashing the run:

{
"_input": "abc123XYZ45",
"_source": "S1-primary",
"_scrapedAt": "2026-05-18T10:42:43.123456+00:00",
"_error": "login_required",
"_errorDetail": "Sign in to confirm your age"
}

Common _error values: invalid_input, fetch_failed, parse_failed, login_required (age-restricted), unplayable (removed by uploader / copyright), error (private or deleted).

Filter on _error to triage failed rows.

Pricing

This actor is billed per result: $3.50 per 1,000 videos. Each successful video record = 1 result. Errors (not-found, removed, age-restricted) are not billed.

Other Sosmed Actors

PlatformActorBest for
YouTubeYouTube Channel ScraperChannel profile, subscriber count, video list
YouTubeYouTube Video Comments ScraperTop-level + replies for any video
TwitchTwitch Video Detail ScraperVOD / clip metadata + streamer info
BlueskyBluesky Post Detail ScraperSingle post + author + thread context
InstagramInstagram Post Detail ScraperReel / image post + author + caption
X (Twitter)X Post Detail ScraperTweet + author + engagement counters
RedditReddit Post Detail ScraperPost + subreddit + score + comment count

Browse the full catalog at apify.com/xtracto.

Notes

  • YouTube removed exact like counts in 2021; likesLabel returns the labeled string ("like this video along with 1.2K other people") which you can parse to an approximate integer. It is empty when YouTube does not surface a label for the video.
  • viewCount is the live count at scrape time, not a real-time tick — it lags actual views by seconds to a few minutes.
  • Age-restricted videos return _error: "login_required" — they require an authenticated session this actor does not provide.
  • Private or deleted videos return _error: "error" with the YouTube-supplied reason in _errorDetail.
  • Live streams in progress return partial data — view count and duration may not be finalized.
  • Region-blocked videos may succeed but with availableCountries excluding your proxy location. Switch proxy region if you need a specific market.