YouTube Scraper - Videos by Search, Channel & URL avatar

YouTube Scraper - Videos by Search, Channel & URL

Pricing

from $1.99 / 1,000 videos

Go to Apify Store
YouTube Scraper - Videos by Search, Channel & URL

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

Lantern Lab

Maintained by Community

Actor 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
}
FieldWhat it does
searchQueriesSearch terms. Each returns up to maxResults videos in YouTube's result order, Shorts included.
channelUrlsyoutube.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).
videoUrlsWatch, 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.
maxResultsThe most videos per search term, per channel and for the link list. Default 30. Never exceeded.
maxUpstreamRequestsOptional 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:

  • viewCount and likeCount are exact. commentCount and channelSubscriberCount are the rounded numbers YouTube shows (2.4M), with the page text kept next to them in commentCountText / channelSubscriberCountText.
  • publishedAt is YouTube's publish timestamp; collectedAt is when this run read the video.
  • A live stream has viewCount: null while it is live: YouTube shows concurrent viewers there, not views.
  • commentCount is null when YouTube shows no count; commentsTurnedOff: true says the channel turned comments off.
  • A collaboration video lists several owner channels; channelName / channelId are the main one and channelSubscriberCount is null, because the page states no single count.
  • sourceType / sourceInput / sourceRank say 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:

partialReasonMeaning
blockedYouTube 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_errorA request to YouTube failed.
upstream_request_cap / charge_limit_reachedThe 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.

EventPriceCharged for
videoUSD 0.00199 (USD 1.99 per 1,000)Each complete video row. Partial rows and status rows are free.
run-startUSD 0.005Once 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.