YouTube Scraper
Pricing
from $0.50 / 1,000 results
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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 withrecordType(video,short,channel, orplaylist) 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: trueand 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
Simple Search
The fastest way to start โ one search query and a result cap.
{"searchQueries": ["mkbhd"],"maxResults": 20}
Filtered Search
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}
Trending Feed
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
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["mkbhd"] | Keywords to search on YouTube. Each query runs independently. |
startUrls | string[] | [] | YouTube URLs โ accepts video, channel (/@handle, /channel/UC..., /c/..., /user/...), playlist, shorts, and search result URLs in the same list. |
youtubeHandles | string[] | [] | Channel handles like @mkbhd or mkbhd (the leading @ is optional). Each handle resolves to that channel's Videos tab. |
getTrending | boolean | false | Also pull the current Trending tab for the selected country. |
Results
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 50 | Maximum 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. |
includeShorts | boolean | false | When 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.
| Parameter | Type | Default | Description |
|---|---|---|---|
uploadDate | string | "any" | Upload recency: Any time / Last hour / Today / This week / This month / This year. |
duration | string | "any" | Video length: Any length / Short (under 4 min) / Medium (4โ20 min) / Long (over 20 min). |
sortBy | string | "relevance" | Sort order: Relevance / Upload date (newest first) / View count / Rating. |
features | string[] | [] | Multi-select video features: HD, Subtitles / CC, Creative Commons, Live, 4K, 360ยฐ, VR180, 3D, HDR. Combine as needed. |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
country | string | "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. |
language | string | "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
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchChannelInfo | boolean | false | For 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)
| Field | Type | Description |
|---|---|---|
recordType | string | One of video, short, channel, playlist. |
id | string | Canonical YouTube ID (videoId, channelId, or playlistId). |
url | string | Public YouTube URL. |
title | string | Video title, channel name, or playlist name. |
sourceInput | string | The original query, URL, or handle that produced this row. |
scrapedAt | string | ISO 8601 timestamp of when the row was captured. |
Video & Short fields
| Field | Type | Description |
|---|---|---|
description | string | null | Video description (snippet on search results, full text on direct video URLs). |
duration | integer | null | Length in seconds. null for live streams. |
durationText | string | null | Human-readable duration (e.g. "12:34"). |
viewCount | integer | null | Total views. |
likeCount | integer | null | Always null in this version โ see Good to Know below. |
publishedText | string | null | Human-readable publish label (e.g. "2 weeks ago", "vor 3 Monaten"). |
publishedAt | string | null | Resolved ISO-8601 UTC timestamp when available (English-locale searches and direct video URLs). Always UTC (+00:00). |
isLive | boolean | true if the video is currently live. |
isShort | boolean | true for YouTube Shorts. |
thumbnails | object[] | Thumbnail renditions with url, width, height. |
channel.id | string | Parent channel ID. |
channel.name | string | Parent channel name. |
channel.handle | string | null | Channel handle (@handle). |
channel.url | string | Channel URL. |
Channel fields (recordType: "channel")
| Field | Type | Description |
|---|---|---|
handle | string | null | Channel handle in @handle form. |
subscriberCount | integer | null | Numeric subscriber count. |
subscriberCountText | string | null | Original label (e.g. "20.9M subscribers"). |
videoCount | integer | null | Total videos uploaded. |
viewCount | integer | null | All-time channel views. |
description | string | null | Channel description. |
country | string | null | Listed channel country. |
joinedAt | string | null | Channel creation date (ISO format). |
joinedText | string | null | Original "Joined" label from the About tab. |
thumbnail | string | null | Channel avatar URL. |
banner | string | null | Channel banner URL. |
Playlist fields (recordType: "playlist")
| Field | Type | Description |
|---|---|---|
description | string | null | Playlist description if present. |
videoCount | integer | null | Number of videos in the playlist. |
channel | object | {id, name, handle, url} of the playlist owner. |
thumbnails | object[] | Playlist thumbnail renditions. |
Tips for Best Results
- Use exact phrases in quotes (
"\"galaxy s25 review\"") for narrower search results. maxResults: 0pulls 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/abc123short links, longwatch?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
publishedAtcomes 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
sourceInputfield so you can group results by origin in your downstream pipeline. - Search filters are keyword-only โ applying
uploadDateordurationto a URL, handle, or Trending input has no effect. To narrow channel uploads, post-filter onpublishedAtanddurationafter extraction.
Pricing
No compute charges โ you only pay per result returned.
$0.50 per 1,000 results.
| Results | Cost |
|---|---|
| 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
likeCountis alwaysnull. 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.
publishedAtISO dates are populated for English-locale runs. Non-English searches still return the human-readablepublishedText(e.g."vor 3 Monaten") but leavepublishedAtasnull. 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 instartUrls. - 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"withsortBy: "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.
Legal & Ethical Use
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.