YouTube Scraper avatar

YouTube Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
YouTube Scraper

YouTube Scraper

[๐Ÿ’ฐ $0.5 / 1K] Extract YouTube videos, shorts, channels, and playlists from search queries, URLs, handles, or the Trending tab. Returns titles, view counts, like counts, publish dates, channel info, thumbnails, and durations with localization across 45+ countries and 19+ languages.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Extract YouTube videos, shorts, channels, and playlists at scale. Feed the actor search queries, YouTube URLs (video, channel, playlist, shorts, or search pages), channel handles like @mkbhd, or enable Trending โ€” mix and match in a single run. Each result comes back as a clean, structured row with titles, view counts, publish dates, channel info, thumbnails, and durations.

Why This Scraper?

  • One input surface, four data types โ€” search queries, URLs, @handles, and Trending can all run in the same job, and every row is tagged with recordType (video, short, channel, or playlist) so you always know what you're looking at.
  • Powerful search filters โ€” narrow results by upload date, duration, sort order (relevance, upload date, view count, rating), and combine multiple video features (HD, 4K, HDR, Subtitles, Creative Commons, Live, 360ยฐ, VR180, 3D).
  • Real-time Trending feed โ€” pull the current Trending tab for any of 40+ supported countries with a single toggle.
  • Localized results โ€” get region-specific data across 40+ countries and 19+ interface languages with friendly dropdowns (no raw locale codes).
  • Channel enrichment โ€” add fetchChannelInfo: true and every channel input emits an extra row with subscribers, total views, video count, description, country, and creation date.
  • No-code friendly โ€” clean JSON inputs, dropdown menus with readable labels (no cryptic short codes), and sensible defaults so non-technical users can get started in seconds.
  • Pay only for results โ€” no compute-time charges. You pay a flat rate per 1,000 rows returned.

Use Cases

Market Research

  • Track share of voice on a topic or keyword over time
  • Measure how a new product, album, or announcement is performing across creators
  • Benchmark total view counts and publish cadence across a category

Lead Generation

  • Build creator lists in any niche by searching keywords and collecting channel handles
  • Enrich channel rosters with subscriber counts, contact info hints (channel description), and country targeting
  • Find rising channels before they're discovered by competitors

Content Strategy

  • See which titles, thumbnails, and durations are winning in your niche
  • Identify trending formats (shorts vs. long-form) per category
  • Study upload cadence and posting times of top performers

Competitive Analysis

  • Monitor competitor channels โ€” their full Videos tab plus Shorts
  • Track competitor view counts and publish cadence week-over-week
  • Spot when a competitor pivots topics or picks up a new trend

Academic Research

  • Gather large, reproducible video datasets for media studies
  • Study engagement patterns across countries and languages
  • Sample trending content for cultural and political research

Trend Monitoring

  • Pull Trending for multiple countries in parallel to compare regional trends
  • Detect breakout topics as soon as YouTube surfaces them
  • Track recurring trends across time windows using the upload date filter

Getting Started

The fastest way to start โ€” one search query and a result cap.

{
"searchQueries": ["mkbhd"],
"maxResults": 20
}

Narrow results with upload date, duration, sort order, features, and localization.

{
"searchQueries": ["electric vehicle review"],
"uploadDate": "month",
"duration": "medium",
"sortBy": "viewCount",
"features": ["hd", "subtitles"],
"country": "us",
"language": "en",
"maxResults": 100
}

URL-Based Input

Paste any mix of YouTube URLs โ€” video, channel, playlist, shorts, or search URLs. Toggle fetchChannelInfo to also get full channel stats for every channel URL.

{
"startUrls": [
"https://www.youtube.com/watch?v=c347oYQO57A",
"https://www.youtube.com/@mkbhd",
"https://www.youtube.com/playlist?list=PLpjK416fmKwQ4Jb2vE2lK7K3vzoD9E5nQ"
],
"fetchChannelInfo": true,
"maxResults": 25
}

Pull the current Trending tab for a specific country.

{
"getTrending": true,
"country": "us",
"maxResults": 50
}

Channel Handles with Shorts

Scrape multiple channels by handle and also collect their Shorts tab.

{
"youtubeHandles": ["@mkbhd", "@veritasium", "@LinusTechTips"],
"includeShorts": true,
"fetchChannelInfo": true,
"maxResults": 30
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchQueriesstring[]["mkbhd"]Keywords to search on YouTube. Each query runs independently.
startUrlsstring[][]YouTube URLs โ€” accepts video, channel (/@handle, /channel/UC..., /c/..., /user/...), playlist, shorts, and search result URLs in the same list.
youtubeHandlesstring[][]Channel handles like @mkbhd or mkbhd (the leading @ is optional). Each handle resolves to that channel's Videos tab.
getTrendingbooleanfalseAlso pull the current Trending tab for the selected country.

Results

ParameterTypeDefaultDescription
maxResultsinteger50Maximum rows per query, URL, or handle (0โ€“500). For channels with Shorts enabled, this is a combined videos + shorts total. Set to 0 for as many as YouTube will serve.
includeShortsbooleanfalseWhen scraping a channel URL or handle, also pull the channel's Shorts tab in addition to Videos. Shorts count toward the same maxResults cap โ€” videos fetch first, then shorts fill any remaining slots.

Filters (Search Only)

These apply to keyword searches. URL, handle, playlist, and Trending inputs ignore them.

ParameterTypeDefaultDescription
uploadDatestring"any"Upload recency: Any time / Last hour / Today / This week / This month / This year.
durationstring"any"Video length: Any length / Short (under 4 min) / Medium (4โ€“20 min) / Long (over 20 min).
sortBystring"relevance"Sort order: Relevance / Upload date (newest first) / View count / Rating.
featuresstring[][]Multi-select video features: HD, Subtitles / CC, Creative Commons, Live, 4K, 360ยฐ, VR180, 3D, HDR. Combine as needed.

Localization

ParameterTypeDefaultDescription
countrystring"us"Country for result localization and Trending selection. Supports United States, United Kingdom, Canada, Australia, New Zealand, Ireland, France, Germany, Spain, Italy, Netherlands, Belgium, Portugal, Switzerland, Austria, Sweden, Norway, Denmark, Finland, Poland, Japan, South Korea, Hong Kong, Taiwan, Singapore, Malaysia, Thailand, Indonesia, Philippines, Vietnam, India, Brazil, Mexico, Argentina, Chile, Colombia, United Arab Emirates, Saudi Arabia, Turkey, Israel, South Africa, and Egypt.
languagestring"en"Interface language for titles and metadata. English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Turkish, Russian, Japanese, Korean, Chinese (Simplified), Chinese (Traditional), Arabic, Hebrew, Thai, Vietnamese, Indonesian.

Enrichment

ParameterTypeDefaultDescription
fetchChannelInfobooleanfalseFor channel URLs and handles, emit one extra row per channel with subscriber count, description, country, and creation date.

Output

Every row carries a recordType field so you can tell videos, shorts, channels, and playlists apart at a glance. Below is one example per type.

Video

{
"recordType": "video",
"id": "qzGxK6Uiu04",
"url": "https://www.youtube.com/watch?v=qzGxK6Uiu04",
"title": "Incredible Wildlife in Stunning 16K HDR 120fps Dolby Vision",
"description": "Experience the incredible wildlife in stunning 16K HDR 120fps Dolby Vision...",
"duration": 4952,
"durationText": "1:22:32",
"viewCount": 19552604,
"likeCount": null,
"publishedText": "1 year ago",
"publishedAt": "2025-04-24T17:46:41+00:00",
"isLive": false,
"isShort": false,
"thumbnails": [
{"url": "https://i.ytimg.com/vi/qzGxK6Uiu04/hq720.jpg", "width": 720, "height": 404}
],
"channel": {
"id": "UChB3UnDddahXU7FKZXmpzMA",
"name": "8K Earth",
"handle": "@8kEarth",
"url": "https://www.youtube.com/@8kEarth"
},
"sourceInput": "8k hdr nature",
"scrapedAt": "2026-04-24T17:46:41+00:00"
}

Short

Illustrative example โ€” individual YouTube video IDs can be deleted or set to private by their creator at any time, so don't rely on any specific ID in this document for live data.

{
"recordType": "short",
"id": "s3DrGkDvgNw",
"url": "https://www.youtube.com/shorts/s3DrGkDvgNw",
"title": "You won't believe this camera trick",
"description": null,
"duration": 49,
"durationText": "0:49",
"viewCount": 1824300,
"likeCount": null,
"publishedText": null,
"publishedAt": "2026-03-11T15:22:04+00:00",
"isLive": false,
"isShort": true,
"thumbnails": [
{"url": "https://i.ytimg.com/vi/s3DrGkDvgNw/hq720.jpg", "width": 720, "height": 1280}
],
"channel": {
"id": "UCBJycsmduvYEL83R_U4JriQ",
"name": "Marques Brownlee",
"handle": "@mkbhd",
"url": "https://www.youtube.com/@mkbhd"
},
"sourceInput": "https://www.youtube.com/shorts/s3DrGkDvgNw",
"scrapedAt": "2026-04-24T17:46:41+00:00"
}

Channel

Emitted only when fetchChannelInfo: true and the input is a channel URL or handle.

{
"recordType": "channel",
"id": "UCBJycsmduvYEL83R_U4JriQ",
"url": "https://www.youtube.com/@mkbhd",
"title": "Marques Brownlee",
"handle": "@mkbhd",
"subscriberCount": 20900000,
"subscriberCountText": "20.9M subscribers",
"videoCount": 1816,
"viewCount": 5361395937,
"description": "MKBHD: Quality Tech Videos | YouTuber | Geek | Consumer Electronics...",
"country": "United States",
"joinedAt": "2008-03-21",
"joinedText": "Joined 21 Mar 2008",
"thumbnail": "https://yt3.googleusercontent.com/ytc/mkbhd_avatar.jpg",
"banner": "https://yt3.googleusercontent.com/ytc/mkbhd_banner.jpg",
"sourceInput": "@mkbhd",
"scrapedAt": "2026-04-24T17:46:41+00:00"
}

Playlist

Emitted once per playlist URL, alongside the videos it contains.

{
"recordType": "playlist",
"id": "PLpjK416fmKwQ4Jb2vE2lK7K3vzoD9E5nQ",
"url": "https://www.youtube.com/playlist?list=PLpjK416fmKwQ4Jb2vE2lK7K3vzoD9E5nQ",
"title": "Retro Tech",
"description": "Revisiting the best tech of decades past.",
"videoCount": 42,
"channel": {
"id": "UCBJycsmduvYEL83R_U4JriQ",
"name": "Marques Brownlee",
"handle": "@mkbhd",
"url": "https://www.youtube.com/@mkbhd"
},
"thumbnails": [
{"url": "https://i.ytimg.com/vi/retrothumb/hqdefault.jpg", "width": 480, "height": 360}
],
"sourceInput": "https://www.youtube.com/playlist?list=PLpjK416fmKwQ4Jb2vE2lK7K3vzoD9E5nQ",
"scrapedAt": "2026-04-24T17:46:41+00:00"
}

Fields by Record Type

Common fields (every row)

FieldTypeDescription
recordTypestringOne of video, short, channel, playlist.
idstringCanonical YouTube ID (videoId, channelId, or playlistId).
urlstringPublic YouTube URL.
titlestringVideo title, channel name, or playlist name.
sourceInputstringThe original query, URL, or handle that produced this row.
scrapedAtstringISO 8601 timestamp of when the row was captured.

Video & Short fields

FieldTypeDescription
descriptionstring | nullVideo description (snippet on search results, full text on direct video URLs).
durationinteger | nullLength in seconds. null for live streams.
durationTextstring | nullHuman-readable duration (e.g. "12:34").
viewCountinteger | nullTotal views.
likeCountinteger | nullAlways null in this version โ€” see Good to Know below.
publishedTextstring | nullHuman-readable publish label (e.g. "2 weeks ago", "vor 3 Monaten").
publishedAtstring | nullResolved ISO-8601 UTC timestamp when available (English-locale searches and direct video URLs). Always UTC (+00:00).
isLivebooleantrue if the video is currently live.
isShortbooleantrue for YouTube Shorts.
thumbnailsobject[]Thumbnail renditions with url, width, height.
channel.idstringParent channel ID.
channel.namestringParent channel name.
channel.handlestring | nullChannel handle (@handle).
channel.urlstringChannel URL.

Channel fields (recordType: "channel")

FieldTypeDescription
handlestring | nullChannel handle in @handle form.
subscriberCountinteger | nullNumeric subscriber count.
subscriberCountTextstring | nullOriginal label (e.g. "20.9M subscribers").
videoCountinteger | nullTotal videos uploaded.
viewCountinteger | nullAll-time channel views.
descriptionstring | nullChannel description.
countrystring | nullListed channel country.
joinedAtstring | nullChannel creation date (ISO format).
joinedTextstring | nullOriginal "Joined" label from the About tab.
thumbnailstring | nullChannel avatar URL.
bannerstring | nullChannel banner URL.

Playlist fields (recordType: "playlist")

FieldTypeDescription
descriptionstring | nullPlaylist description if present.
videoCountinteger | nullNumber of videos in the playlist.
channelobject{id, name, handle, url} of the playlist owner.
thumbnailsobject[]Playlist thumbnail renditions.

Tips for Best Results

  • Use exact phrases in quotes ("\"galaxy s25 review\"") for narrower search results.
  • maxResults: 0 pulls everything YouTube will serve โ€” typically 500โ€“700 rows per search query and up to several thousand per channel. Set a concrete cap when you need a predictable run.
  • URL input is forgiving โ€” youtu.be/abc123 short links, long watch?v= URLs with extra parameters, and mobile URLs all work.
  • Country and language matter โ€” they shift which videos YouTube surfaces, which trending feed is returned, and whether publishedAt comes back as a clean ISO date (English locales only).
  • Mix inputs freely โ€” one run can combine search queries, direct video URLs, channel handles, and Trending. Every row keeps a sourceInput field so you can group results by origin in your downstream pipeline.
  • Search filters are keyword-only โ€” applying uploadDate or duration to a URL, handle, or Trending input has no effect. To narrow channel uploads, post-filter on publishedAt and duration after extraction.

Pricing

No compute charges โ€” you only pay per result returned.

$0.50 per 1,000 results.

ResultsCost
100$0.05
1,000$0.50
10,000$5.00

Every row in your dataset counts as one result, regardless of record type.

Integrations

Export your data or plug it into your existing stack:

  • API โ€” Pull results programmatically via the Apify API
  • Webhooks โ€” Trigger downstream workflows when a run completes
  • Google Sheets โ€” One-click export to spreadsheets
  • Zapier / Make / n8n โ€” Automate with 1,000+ app connectors
  • Datasets โ€” Download as JSON, CSV, Excel, XML, or RSS

Good to Know

  • likeCount is always null. YouTube hides like counts behind an authenticated endpoint that rotates anti-abuse tokens every few weeks. Including it would make runs unreliable and more expensive โ€” it is intentionally omitted.
  • Comments are not supported in this actor. If you need comments and replies, use a dedicated YouTube comments scraper.
  • publishedAt ISO dates are populated for English-locale runs. Non-English searches still return the human-readable publishedText (e.g. "vor 3 Monaten") but leave publishedAt as null. Direct video URLs always include a clean ISO date regardless of locale.
  • Shorts pulled from a channel's Shorts tab arrive with limited metadata โ€” title, view count, thumbnail, and channel, but no duration or publish date. YouTube's Shorts feed doesn't include those fields; visiting each Short individually would multiply cost. If you need full Short metadata, pass the /shorts/<id> URL in startUrls.
  • Age-gated and members-only videos are not supported โ€” they require YouTube authentication that this actor does not use.
  • Trending is best-effort. YouTube has been restricting the public, signed-out Trending feed throughout 2025โ€“2026 and it now returns empty for many regions (including, intermittently, the US). If the Trending toggle returns zero rows, use a search query like "trending" with sortBy: "viewCount" as an approximation. The actor falls back gracefully with an explanatory log line when Trending is unavailable.
  • Streaming URLs, media formats, and caption transcripts are not returned. They depend on a signed playback endpoint that rotates every few weeks โ€” shipping them would make the actor break silently.

This actor is designed for legitimate market research, content strategy, competitive analysis, and academic research. You are responsible for complying with YouTube's Terms of Service, applicable laws, and data protection regulations in your jurisdiction. The actor only collects publicly visible data โ€” no login, no paywalled or age-gated content, no personal data beyond what YouTube surfaces on public pages. Do not use extracted data for spam, harassment, impersonation, or any unlawful purpose.