YouTube Video & Channel Scraper — No API Key, No Login avatar

YouTube Video & Channel Scraper — No API Key, No Login

Pricing

from $15.00 / 1,000 video scrapeds

Go to Apify Store
YouTube Video & Channel Scraper — No API Key, No Login

YouTube Video & Channel Scraper — No API Key, No Login

Scrape YouTube video data and channel listings by URL, ID, or @handle. No API key, no login, no cookies, no proxies. Charged only for results actually returned.

Pricing

from $15.00 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Nicholas Cheng

Nicholas Cheng

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

YouTube Video & Channel Scraper

Give it a video link or a channel handle, get structured JSON back. No API key, no OAuth, no login, no cookies, no quota to apply for. Point it at dQw4w9WgXcQ, https://www.youtube.com/watch?v=…, @veritasium, or a UC… channel ID.

You are charged only for results that actually came back. A private, deleted, or region-blocked video produces an explanatory row and costs nothing.

InputVideo URLs / IDs (watch, Shorts, youtu.be, embed) and channel URLs / @handles / UC… IDs
OutputVideo metadata + channel profiles, as separate rows
Price$0.015 per video · $0.005 per channel — the same on every Apify plan
API keyNot needed. This does not use the YouTube Data API, so it does not consume your quota
TranscriptsNot supported. See What this Actor cannot do

What you get

Videos

{
"itemType": "video",
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"title": "But what is a neural network? | Deep learning chapter 1",
"description": "Full text of the video description, not truncated.",
"durationSeconds": 1120,
"viewCount": 23951183,
"likesLabel": "like this video along with 512,000 other people",
"publishedAt": "2017-10-05T00:00:00-07:00",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"channelName": "3Blue1Brown",
"channelUrl": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw",
"channelSubscribersLabel": "7.4M subscribers",
"keywords": ["neural networks", "deep learning", "machine learning"],
"category": "Education",
"isLive": false,
"thumbnail": "https://i.ytimg.com/vi/aircAruvnKk/maxresdefault.jpg",
"availableCaptions": [
{ "language": "en", "name": "English", "isAutoGenerated": false },
{ "language": "es", "name": "Spanish", "isAutoGenerated": false }
]
}

viewCount and durationSeconds are real numbers, not display strings — you can sort and filter on them without parsing "1.2M" first. likesLabel is a string on purpose: YouTube no longer exposes an exact like count to logged-out clients, and inventing a number from a rounded label would be making data up.

availableCaptions lists which caption tracks a video has, in which languages, and whether they are human-written or auto-generated. It does not include the caption text — see below.

Channels

Each channel you pass returns one profile row, plus the videos you asked for:

{
"itemType": "channel",
"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ",
"channelName": "NASA",
"handle": "@NASA",
"subscribersLabel": "15.1M subscribers",
"videoCountLabel": "6.1K videos",
"description": "NASA's mission is to explore the unknown in air and space…",
"videosOnPage": 30
}

Input

{
"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk", "dQw4w9WgXcQ"],
"channelUrls": ["@veritasium", "https://www.youtube.com/@NASA"],
"maxVideosPerChannel": 10,
"includeChannelProfile": true,
"maxItems": 0
}

maxVideosPerChannel applies per channel, in one run. Monitoring forty channels and taking the five newest videos from each is a single run, not forty.


Pricing

Pay-per-event. You pay for what came back, nothing else.

EventPriceWhat it covers
video-scraped$0.015One video with full metadata.
channel-resolved$0.005One channel profile plus its recent video list. Charged once per channel.

Two events because the work is shaped that way: resolving a channel is cheap, loading a video page is not. Splitting them means a channel-listing job is not priced as if it were a video job.

What you are not charged for

Every item below is checkable against a run log:

What happens here
Unavailable videosPrivate, deleted, region-blocked, or mistyped IDs produce one row marked chargedForThis: false. Nothing is billed.
Empty or placeholder rowsIf the video data did not come back, no row is written. There are no filler rows in your dataset.
The free planSame code path, same fields, same limits. No demo mode, no 10-row cap, no nulls in place of data.
Plan-tiered pricing$0.015 per video on every Apify plan — Free, Bronze, Silver, Gold, Platinum, Diamond. Check the Pricing tab: all six columns are identical.

That last row is worth checking on any Actor you compare, including this one. The Pricing tab shows the per-plan breakdown, and the price a listing advertises in its title is not always the price a free-plan run pays.


What this Actor cannot do

Being straight about this up front so you do not buy the wrong tool:

  • No transcripts or caption text. YouTube serves caption tracks only to clients that pass its proof-of-origin attestation, and returns an empty body to everyone else. That is true regardless of IP, proxy type, or HTTP client — we measured it across datacenter, residential, and unproxied connections, and every one returned 200 OK with zero bytes. Producing transcripts would mean defeating that attestation, which this Actor does not do. availableCaptions tells you which tracks exist so you can decide what to do next; the text itself is not something we can deliver honestly, so we do not sell it.
  • No comments. Same reason.
  • No search. This works from links and handles, not keywords.
  • No exact like counts. YouTube stopped exposing them to logged-out clients. You get the rounded accessibility label instead, verbatim.
  • No private, members-only, or age-gated videos. Those require an account, and this Actor never signs in to anything.

How it stays working

Video pages are fetched through rotating residential connections because YouTube shows a bot check to datacenter addresses — we measured 1 usable response in 10 without one, and 9 in 10 with. Channel pages need no such thing and are fetched directly, so a channel-listing job does not pay for bandwidth it does not need.

The Actor also stops downloading each video page as soon as it has the two embedded JSON blocks it needs, rather than pulling the full 1.3 MB. That is roughly half the bytes, and it is why the per-video price can stay where it is.


Integrating

Every run writes to a standard Apify dataset, so the usual routes all work: the REST API, the JavaScript and Python clients, scheduled runs, webhooks, and the MCP server for agent use. Two dataset views are provided — Videos & channels for everything, Channels only for the profile rows on their own.