YouTube Video & Channel Data Scraper
Pricing
from $2.00 / 1,000 results
YouTube Video & Channel Data Scraper
Scrape YouTube videos and channels by search query, video URL or channel URL. Get title, view count, channel name, subscribers, duration, publish date, description and thumbnail. Export to JSON, CSV or Excel. No API key or proxy.
Pricing
from $2.00 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
YouTube Video & Channel Data Scraper
Here is one real result, with every field the actor returns:
{"videoId": "CLeZyIID9Bo","url": "https://www.youtube.com/watch?v=CLeZyIID9Bo","title": "Chill Lofi Mix [chill lo-fi hip hop beats]","channelName": "Settle","channelId": "UCkKT4qf-TcPFOmpqhTawrGA","channelUrl": "https://www.youtube.com/channel/UCkKT4qf-TcPFOmpqhTawrGA","viewCount": 34086842,"viewCountText": "34,086,842 views","likeCount": 187000,"likeCountText": "187K","duration": "1:44:52","publishedText": "3 years ago","publishedAt": "2022-08-12","description": "YouTube Playlists: http://listen.settle.fm/youtube Listen on Spotify, Apple Music & more: https://listen.settle.fm/playlists Tracklist ...","thumbnailUrl": "https://i.ytimg.com/vi/CLeZyIID9Bo/hq720.jpg?sqp=-oaymwE2CNAFEJQDSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGQoZTAP&rs=AOn4CLCljfsoUy4QvdaH9IydXKSjwkcbgg","isLive": false,"source": "search","observedAt": "2026-08-10T14:38:45.934Z","error": null}
The most complete YouTube scraper available. It returns every field the public YouTube data layer exposes for each video, plus enriched like counts and an ISO publish date on search and channel results, and gives you three inputs (search queries, video URLs, channel URLs) to target exactly the videos you need. No API key or proxy.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads YouTube's public data layer and returns one normalized record per video. It accepts three kinds of input, in any combination:
searchQueries: keywords to search YouTube for; returns matching video cards.videoUrls: video URLs or IDs; returns full per-video details including subscriber count.channelUrls: channel URLs; returns that channel's recent videos.
With enrichDetails on (the default), every search and channel result is enriched with its like count and exact ISO publish date (video-URL records always include them). Missing values are returned as null. No API key and no proxy are required.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 10 top videos for a search.
{"maxVideos": 10,"searchQueries": ["lofi hip hop"],"enrichDetails": true,"country": "US","language": "en"}
Provide any combination of searchQueries, videoUrls, and channelUrls. Every video-URL record includes the channel's subscriberText.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["lofi hip hop"] | Keywords to search YouTube for. Each query returns matching videos. |
videoUrls | string[] | no | [] | YouTube video URLs or IDs to fetch full details for (watch?v=..., youtu.be/..., or a bare 11-character ID). |
channelUrls | string[] | no | [] | Channel URLs to pull recent videos from (/@handle, /channel/UC..., /c/name). |
maxVideos | integer | no | 10 | Maximum number of videos to return across all inputs. Free Apify plans are capped at 10 per run. |
enrichDetails | boolean | no | true | Add like counts and the exact publish date to every video found by search or channel. Turn off for the fastest run. |
country | string | no | US | Two-letter country code for results (gl). |
language | string | no | en | Interface language code (hl). |
At least one of searchQueries, videoUrls, or channelUrls must be provided.
Output reference
One dataset item per video. Types: string, integer, boolean, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
videoId | string | YouTube 11-character video ID. |
url | string | Canonical watch URL for the video. |
title | string | Video title. |
channelName | string | Name of the channel that published the video. |
channelId | string | Channel ID (UC...), or null. |
channelUrl | string | Canonical channel URL, or null. |
subscriberText | string | Channel subscriber count as shown, for example 4.53M subscribers. Present on video-URL records only. |
viewCount | integer | View count parsed to an integer, or null. |
viewCountText | string | View count as shown, for example 34,086,842 views. |
likeCount | integer | Like count parsed to an integer, or null when unavailable. |
likeCountText | string | Like count as shown, for example 187K, or null. |
duration | string | Video duration, for example 1:44:52. null on video-URL records. |
publishedText | string | Relative or absolute publish text, for example 3 years ago or Oct 24, 2009. |
publishedAt | string | Exact publish date normalized to YYYY-MM-DD, or null. |
description | string | Video description or search snippet, or null. |
thumbnailUrl | string | URL of the best available thumbnail. |
isLive | boolean | true when the item is a live stream. Present on search and channel records. |
source | string | Where the record came from: search, video, or channel. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. An item that could not be parsed is written with a populated error field instead. |
subscriberText appears on video-source records; isLive and duration appear on search and channel records.
Example output record
Real record from a live run (input {"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"], "maxVideos": 1}). The description is trimmed here for readability; the actor returns the full description string:
{"videoId": "dQw4w9WgXcQ","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw","subscriberText": "4.53M subscribers","viewCount": 1804354752,"viewCountText": "1,804,354,752 views","likeCount": 19000000,"likeCountText": "19M","duration": null,"publishedText": "Oct 24, 2009","publishedAt": "2009-10-24","description": "The official video for \"Never Gonna Give You Up\" by Rick Astley. [trimmed for README]","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg","source": "video","observedAt": "2026-08-15T11:12:21.690Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~youtube-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["lofi hip hop"],"maxVideos":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~youtube-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"channelUrls":["https://www.youtube.com/@RickAstleyYT"],"maxVideos":50}'
Apify CLI:
apify call scrapers_lat/youtube-scraper \--input '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per video record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. Items that cannot be parsed are written with a populated
errorfield and are not charged. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxVideos. - No API key or proxy is required.
FAQ and troubleshooting
A run returned 0 records. Why?
No input was provided, or the search matched nothing. Provide at least one of searchQueries, videoUrls, or channelUrls. Zero-result runs are not charged.
Why is likeCount null on some records?
Like counts and exact dates are added by the detail enrichment step. Keep enrichDetails on (the default) so search and channel results carry them. Video-URL records always include them.
Why is subscriberText missing on some records?
Subscriber count is only exposed on the per-video detail response, so it appears on video-source records (from videoUrls), not on search or channel cards.
Can I mix search, video, and channel inputs?
Yes. Provide any combination; results from all three are merged and deduplicated by video ID up to maxVideos.
Do I need a YouTube API key? No. The actor reads YouTube's public data layer directly. No API key and no proxy are needed.
Is this an official YouTube tool? No. This actor is independent and has no affiliation with YouTube or Google. It reads only data that is publicly available.
Related scrapers
- YouTube Video Summarizer: AI summaries of YouTube videos from their transcript.
- Yellow Pages Canada Business Leads Scraper: Canadian business leads.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with YouTube or Google. Accesses only publicly available data.
