YouTube Scraper - No Rate Limits, Pay Per Result avatar

YouTube Scraper - No Rate Limits, Pay Per Result

Pricing

from $1.20 / 1,000 videos

Go to Apify Store
YouTube Scraper - No Rate Limits, Pay Per Result

YouTube Scraper - No Rate Limits, Pay Per Result

Scrape YouTube video metadata by keyword, channel, playlist or a single video URL. No concurrency caps, no minimum items per query, no waiting between runs. No login, no cookies, no browser.

Pricing

from $1.20 / 1,000 videos

Rating

0.0

(0)

Developer

plainjson

plainjson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

YouTube Scraper — No Rate Limits, Pay Per Result

Extract YouTube video metadata by keyword, channel, playlist, or a single video URL. No login, no cookies, no browser rendering, and no artificial limits on how you run it.

A YouTube Data API alternative for people who ran out of quota, and a replacement for scrapers that ration you.


What makes this one different

Most YouTube scrapers on the market work, but they fence you in. This one removes four specific fences, and each is checkable against any competitor's own documentation:

Common restriction elsewhereHere
Concurrent runs"max 1 concurrent run at the same time"Unlimited. Run as many as your plan allows
Single video URL"single video URLs are not allowed"Allowed. One URL, one result, no batching required
Minimum per query"you should fetch min of 10 items"No minimum. Ask for 1 item and get 1 item
Waiting between runs"wait a couple of minutes between your runs"No wait. Fire when you want

If you have ever seen Rate limited immediately after renewal in your logs, this is the tool that does not do that to you.

To be precise about what "no rate limits" means: this Actor imposes none of its own. It does not throttle you, does not cap concurrency, and does not make you wait. What it cannot do is change how YouTube itself responds — if YouTube throttles a request, you will see it, and the row lands in your dataset with an error field instead of disappearing. Turning on proxyConfiguration resolves that in practice.


What you get per video

{
"id": "BBz-Jyr23M4",
"url": "https://www.youtube.com/watch?v=BBz-Jyr23M4",
"title": "Guitar Lesson 1 - Absolute Beginner? Start Here!",
"viewCount": 38622892,
"viewCountText": "38,622,892 views",
"durationSeconds": 971,
"durationText": "16:11",
"publishedText": "9 years ago",
"description": "Feeling stuck, inconsistent…",
"isLive": false,
"channel": {
"name": "Andy Guitar",
"id": "UC...",
"url": "https://www.youtube.com/channel/UC..."
},
"thumbnail": "https://i.ytimg.com/vi/BBz-Jyr23M4/hq720.jpg",
"source": "search:guitar lesson",
"scrapedAt": "2026-08-20T11:35:25.405Z"
}

viewCount and durationSeconds come as numbers, not strings you have to clean up. source tells you which input produced the row, so a mixed run stays traceable.


Input

{
"searchQueries": ["guitar lesson", "bass tutorial"],
"startUrls": [
"https://www.youtube.com/watch?v=BBz-Jyr23M4",
"https://www.youtube.com/@AndyGuitar",
"https://www.youtube.com/playlist?list=PL..."
],
"maxItems": 100,
"country": "US",
"language": "en"
}

Every field is optional except that you need at least one of searchQueries or startUrls.

Accepted URL shapes: /watch?v=, youtu.be/, /shorts/, /@handle, /channel/, /c/, /user/, /playlist?list=, and /results?search_query=.


What happens when something fails — and what it costs you

Nothing. You are never charged for an input that did not produce data.

Failures do not go into the main dataset, because the main dataset is what you are billed on. They go into a separate failed-inputs dataset (Storage tab) and are shouted into the run log, one line each. Never silent, never billed:

{ "input": "https://www.youtube.com/watch?v=deleted", "error": "extraction_failed",
"message": "video deleted: videoDetails missing (private, removed, or age-restricted)" }

So a run where you paste 100 URLs and 30 are dead costs you 70 videos, not 100.

errorMeaning
invalid_urlThe URL is not a YouTube URL this Actor recognises
extraction_failedThe video is private, removed, or age-restricted
search_failedThe search page did not return usable data

Proxy

Not needed for search, channels or playlists. Those read the data YouTube renders server-side over plain HTTP — no headless browser, no proxy. Verified running on Apify's own infrastructure.

Single video lookups are the one exception. From a datacenter IP, YouTube's player endpoint answers Sign in to confirm you're not a bot, so this Actor falls back to a second public path that is not restricted, and still returns the full record — title, exact view count, duration, channel. You do not have to do anything; it happens automatically and is reported in the run log.

Turning proxyConfiguration on makes single video lookups take the direct, cheaper path again. It is optional, and everything works without it.


Honest limits

  • Channel pages return the channel's recent uploads, not the full lifetime archive in a single run. Increase maxItems and paginate for deeper history.
  • viewCount on channel and playlist listings is YouTube's rounded figure (e.g. 1.2K). For an exact count, pass the video URL directly — single video lookups return the precise number.
  • Age-restricted and private videos cannot be read without a login, and this Actor does not log in. They come back as extraction_failed.
  • YouTube changes its page structure from time to time. If a field goes empty, open an issue — that is the fastest way to get it fixed.

What this Actor is for, and what it is not for

For: competitive research, content analytics, trend tracking, media monitoring, academic work — anything where you need the public metadata of public videos.

Not for: building profiles of individuals, compiling contact details, or enriching people-datasets. This Actor returns no emails, no phone numbers, no subscriber lists, no comment authors, and nothing that sits behind a login. If a person-level dataset is what you need, this is the wrong tool and it will not become the right one.

This Actor reads publicly available, logged-out pages. It does not log in, does not use cookies, and does not bypass any technical access control — when YouTube restricts an endpoint, this Actor falls back to a public path rather than working around the restriction.

On personal data: video metadata carries the public channel name and channel URL of whoever published the video. That is returned as YouTube shows it. Nothing else about people is collected, and no profile is built. You are the data controller for whatever you do with the output.

On what it talks to: the only host this Actor contacts is www.youtube.com. There is no callback to the author, no telemetry, and no third-party endpoint. Your data stays in your account.