YouTube Scraper - Videos by Search, Channel & URL
Pricing
from $1.99 / 1,000 videos
YouTube Scraper - Videos by Search, Channel & URL
Public YouTube video data from search terms, channels and video links.
Pricing
from $1.99 / 1,000 videos
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
A Lantern Lab Actor. Collect public YouTube video data three ways: by search term, from a channel, or from a list of video links. Each video comes back with its title, description, publish time, duration, views, likes, comment count, channel name, ID and subscriber count, tags, category, thumbnail and whether it is a Short. No login, no cookies, no account of your own: the Actor reads only what YouTube shows a signed-out visitor.
Price: USD 1.99 per 1,000 videos, plus USD 0.005 per run. A search that finds nothing, a channel that does not exist, a bad link, a blocked request and a duplicate are free - you pay for complete video rows only. See Pricing.
Need the spoken words too? Use YouTube Transcript Scraper on the same links.
Input
{"searchQueries": ["lofi hip hop"],"channelUrls": ["https://www.youtube.com/@NASA"],"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxResults": 30}
| Field | What it does |
|---|---|
searchQueries | Search terms. Each returns up to maxResults videos in YouTube's result order, Shorts included. |
channelUrls | youtube.com/@handle, /channel/UC..., /c/Name, /user/Name, a bare @handle or UC... ID. Each returns up to maxResults of the channel's most recent videos (Videos tab, newest first). |
videoUrls | Watch, youtu.be, Shorts, embed or live links, or bare 11-character video IDs. The list as a whole returns up to maxResults videos, in the order given. |
maxResults | The most videos per search term, per channel and for the link list. Default 30. Never exceeded. |
maxUpstreamRequests | Optional hard ceiling on requests to YouTube. Left empty, the Actor derives one from the input. |
Output
One row per video (recordType: "video"). Every input that produced no video gets one free status row that says why. Totals are in the run's key-value store under RUN_SUMMARY.
{"recordType": "video","platform": "youtube","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. ...","publishedAt": "2009-10-24T23:57:33-07:00","publishedDateText": "Oct 24, 2009","durationSec": 213,"viewCount": 1832227041,"likeCount": 19490275,"commentCount": 2400000,"commentCountText": "2.4M","commentsTurnedOff": false,"channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","channelUrl": "https://www.youtube.com/@RickAstleyYT","channelSubscriberCount": 4550000,"channelSubscriberCountText": "4.55M subscribers","thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg","tags": ["rick astley", "Never Gonna Give You Up", "..."],"category": "Music","isShorts": false,"isLiveContent": false,"isLiveNow": false,"isUnlisted": false,"sourceType": "video","sourceInput": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","sourceRank": 1,"collectedAt": "2026-10-31T10:12:03.511Z","partial": false,"partialReason": null,"statusText": null}
Notes on the fields:
viewCountandlikeCountare exact.commentCountandchannelSubscriberCountare the rounded numbers YouTube shows (2.4M), with the page text kept next to them incommentCountText/channelSubscriberCountText.publishedAtis YouTube's publish timestamp;collectedAtis when this run read the video.- A live stream has
viewCount: nullwhile it is live: YouTube shows concurrent viewers there, not views. commentCountisnullwhen YouTube shows no count;commentsTurnedOff: truesays the channel turned comments off.- A collaboration video lists several owner channels;
channelName/channelIdare the main one andchannelSubscriberCountisnull, because the page states no single count. sourceType/sourceInput/sourceRanksay which input found the video and where it ranked.- A field YouTube did not state is
null, never guessed.
Incomplete rows
partial: true means the row is not complete, and it is not charged. partialReason says why:
partialReason | Meaning |
|---|---|
blocked | YouTube asked to confirm we are not a bot, from two different exit IPs. Fields from the watch page are kept; duration, tags and the exact publish time are null. |
upstream_error | A request to YouTube failed. |
upstream_request_cap / charge_limit_reached | The run reached maxUpstreamRequests or your maximum cost per run, and stopped. |
Other status rows are complete answers, not failures, and are free: no_results (the search lists nothing), not_found (no such channel), invalid_input (not a YouTube link), and video rows with unavailable (deleted, private, age-restricted or members-only).
Duplicates
A video is collected once per run, keyed by video ID. If a search, a channel and your link list all contain the same video, it is written and charged once; RUN_SUMMARY.sources[].duplicates counts the skips.
Pricing
Pay per event: USD 1.99 per 1,000 videos, plus USD 0.005 per run. Apify platform usage, including proxy traffic, is included; you pay only these two events.
| Event | Price | Charged for |
|---|---|---|
video | USD 0.00199 (USD 1.99 per 1,000) | Each complete video row. Partial rows and status rows are free. |
run-start | USD 0.005 | Once per run, together with the first video. A run that returns no video is not charged at all. |
Example: 3 search terms x 100 videos = 300 videos costs USD 0.005 + 300 x 0.00199 = USD 0.602.
To cap a run's cost, set Maximum cost per run in the run options. When it is reached, the Actor stops, writes a charge_limit_reached status row and does not start the remaining inputs.
Limits
- What a signed-out visitor sees: no private, members-only or age-restricted videos, no comments text, no downloads, no transcripts.
- A channel input reads the Videos tab (long-form uploads). Shorts and live streams of a channel appear when you search for them or pass their links.
- Search returns what YouTube's search page lists for the term; very broad terms are cut at
maxResults.
Notes
Respect YouTube's terms and local law, and collect only what you need. Channel names are public, but they can identify a person.