YouTube Scraper & API Alternative | Channels, Comments
Pricing
from $2.00 / 1,000 actor starteds
YouTube Scraper & API Alternative | Channels, Comments
YouTube data without an API key or quota units. Export channel videos, search results and comments, and track new uploads incrementally. No login, no browser, no proxy. $0.002/run + $0.0007/video + $0.00018/comment.
Pricing
from $2.00 / 1,000 actor starteds
Rating
0.0
(0)
Developer
Hriday Rungta
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Scraper | YouTube API Alternative for Channels, Search & Comments
YouTube data without an API key, a Google Cloud project or daily quota limits: a YouTube API alternative for reading public data. Pull a channel's video list, YouTube search results and video comments into a clean dataset, then export it as JSON, CSV or Excel, or send it to Google Sheets, Make, n8n or Zapier. You pay per row: $0.0007 per video row and $0.00018 per comment, plus a $0.002 start fee per run.
It reads YouTube's own public pages and the same internal "innertube" API that YouTube's web player uses. No login, no browser, no proxy.
What can you use YouTube data for?
- Export a YouTube channel's video list. Give it
@handles, channel URLs orUC...ids and get every video it reaches with title, duration, view count as shown, relative publish time, thumbnail and URL. - Monitor competitor YouTube channels. Turn on incremental mode and each scheduled run returns only the videos published since the last run, so you can track new uploads without re-downloading or re-paying for old ones.
- Download YouTube comments. Export top-level comments for one or many videos with author, text, likes, reply count and pinned flag, ready for sentiment analysis or audience research.
- Run YouTube keyword research and search result exports. Get the videos YouTube ranks for a search term with channel, exact view count, duration and a description snippet, to see what already ranks and who ranks.
- Track YouTube brand mentions. Search for your brand, product or competitor name on a schedule and collect new videos that mention it.
- Build a YouTube dataset for analysis or AI. Collect video lists and comments for trend analysis, content research or LLM pipelines from a single flat dataset.
- Replace the YouTube Data API for read-only jobs. If you only need public data and keep running into API keys, quota units and approval steps, this does the same reading job without them. See the FAQ for what it does not cover.
Input
| Field | What it does |
|---|---|
channels | Channels to list videos from: a handle (@nasa), a channel URL or a UC... channel id. |
searchQueries | Search terms to run on YouTube, one per line. |
commentVideoUrls | Videos to download top-level comments from (URL or 11-character video id). |
videoUrls | Videos to fetch full details for (title, likes, exact publish date, description, tags). Retries when YouTube blocks it, see the note below. |
mode | all (default) or changes. changes is incremental mode for channels: only videos new since your last run. |
firstRunSince | How far back a channel's first incremental run looks, e.g. 30 days (default) or all. |
maxItems | Cap on billed video rows for the whole run (channel, search and details combined). Default 100. |
maxComments | Cap on billed comment rows. Set 0 to turn comments off. Default 100. |
maxCommentsPerVideo | Cap on comments taken from any single video. Default 50. |
maxPagesPerSource | Safety cap on pagination pages per channel, search or comment video. Default 10. |
maxRetries | Retries with backoff for network errors and 5xx responses. |
stateStoreName, stateNamespace | Where incremental mode keeps its per-channel marks (optional). |
Input example
{"channels": ["@veritasium", "https://www.youtube.com/@mkbhd"],"mode": "changes","firstRunSince": "7 days","searchQueries": ["apify tutorial"],"commentVideoUrls": ["jNQXAC9IVRw"],"maxItems": 100,"maxComments": 200,"maxCommentsPerVideo": 100}
Output
Every row has kind (video or comment) and mode (channel-videos, search, video-details or comments). All rows share one set of columns, so an export has no ragged rows. Which columns are filled depends on the mode:
| Mode | Filled in | Not available in this mode |
|---|---|---|
channel-videos | videoId, url, title, channelId, channelTitle, channelUrl, lengthSeconds, durationText, viewCountText (as shown, e.g. 11M), publishedTimeText (relative, e.g. 7d ago), thumbnailUrl, sourceChannelHandle | numeric viewCount, likeCount, exact publish date, description, tags |
search | the above plus numeric viewCount, a description snippet and matchedQuery | likeCount, exact publish date, tags |
video-details | title, channel*, viewCount, likeCount, lengthSeconds, publishDate, uploadDate, category, isLiveContent, description, keywords, thumbnailUrl | |
comments | videoId, commentId, text, authorName, authorChannelId, authorIsVerified, likeCount, replyCount, publishedTimeText, isPinned | replies themselves (see the FAQ) |
Output examples
A channel video row:
{"kind": "video","mode": "channel-videos","videoId": "NiCgcUTL9_Q","url": "https://www.youtube.com/watch?v=NiCgcUTL9_Q","title": "The Absurd Engineering Behind the Internet","channelId": "UCHnyfMqiRRG1u-2MsSQLbXA","channelTitle": "Veritasium","lengthSeconds": 2072,"durationText": "34:32","viewCountText": "11M","publishedTimeText": "7d ago","sourceChannelHandle": "veritasium"}
A search result row:
{"kind": "video","mode": "search","videoId": "3rrpfW0bEdc","title": "Apify Tutorial For Beginners | How To Use Apify","channelTitle": "Speak About Digital","viewCount": 43866,"viewCountText": "43,866 views","lengthSeconds": 641,"publishedTimeText": "3y ago","matchedQuery": "apify tutorial"}
A comment row:
{"kind": "comment","mode": "comments","videoId": "jNQXAC9IVRw","commentId": "UgzuC3zzpRZkjc5Qzsd4AaABAg","text": "We're so honored that the first ever YouTube video was filmed here!","authorName": "@SanDiegoZoo","authorIsVerified": true,"likeCount": 4800000,"replyCount": 986,"publishedTimeText": "6 years ago","isPinned": false}
Pricing
Pay per event. No per-GB charge and no "extra fields" tier: every row already includes everything this Actor can extract for it.
| Event | Price | Example |
|---|---|---|
| Actor started | $0.002, once per run | |
| Video scraped | $0.0007 per row (channel video, search result or video details) | 1,000 videos = $0.70 |
| Comment scraped | $0.00018 per comment | 1,000 comments = $0.18 |
So a run of 1,000 channel videos costs about $0.702 and a run of 1,000 comments about $0.182. Use maxItems and maxComments as hard cost caps; a run stops cleanly when a cap or your maximum total charge is reached.
How it works, and what to know before you rely on it
YouTube's pages embed the same JSON the site uses to render itself (ytInitialData, ytInitialPlayerResponse) plus an INNERTUBE_API_KEY. That key unlocks the internal youtubei/v1 endpoints (browse, next, search) used by tools like yt-dlp. The Actor reads the first page, then follows YouTube's own continuation tokens for more pages, anonymously.
- Channel videos, search and comments use that internal API and were verified on 2026-10-20 (channel videos, search results and comments all returned rows).
- Video details mode (
videoUrls) retries when YouTube blocks it. YouTube sometimes serves a bot-check page instead of the video's data to Apify's servers. The Actor then retries through Apify's free datacenter proxy with a fresh IP each time, and falls back to YouTube's player API. In testing on 2026-10-20, 25 of 25 videos came back in 100-150 seconds, three runs in a row. A video that still cannot be read (private, removed, age-restricted, or blocked after all retries) is skipped, logged and not billed. If YouTube tightens its checks, the run stops retrying after 8 misses in a row instead of burning time. - Only top-level comments are collected. Expanding every reply thread needs one extra request per comment, which makes cost unbounded.
replyCounttells you how many replies each comment has. - Channel rows show relative times. A channel's grid only exposes strings like
7d agoor2mo ago, not exact timestamps, so incremental mode uses that as an approximate cutoff. A remembered set of video ids is the safety net that stops a video from being billed twice. - This Actor reads public pages. If YouTube changes its page structure it can break until the Actor is updated, and it cannot access private, unlisted-without-link or age-restricted content.
Incremental mode: track new videos from channels
Set mode to changes. On a channel's first run it seeds from firstRunSince (default 30 days back). Every later run resumes from a per-channel mark kept in a key-value store on your own Apify account, so a daily schedule returns only the videos published since the last run. A run cut short by your budget still advances the mark safely. Use stateStoreName to keep separate tracking sets, for example one store for competitors and one for partners.
Integrations, scheduling and automation
Run it once or put it on a schedule so your YouTube data stays current:
- Apify Schedules. Run hourly, daily or weekly. Pair with incremental mode to pay only for new videos.
- Google Sheets. Use the Apify Google Sheets integration to append each run's dataset to a sheet, or import the dataset CSV URL.
- Make, n8n and Zapier. Start the Actor from a scenario or workflow, wait for it to finish, then read the dataset. A new-video or new-comment trigger is just a scheduled run plus a "dataset items" step.
- Webhooks. Call your own endpoint when a run succeeds, for example to post new competitor uploads to Slack.
- API and clients. Start runs and read results with the Apify API, the JavaScript client or the Python client. Datasets export as JSON, CSV, Excel, XML or HTML.
- AI agents and MCP. The input and output fields have plain-language descriptions so an agent can pick the right inputs.
FAQ
Why use this instead of the official YouTube Data API?
The official YouTube Data API v3 needs a Google Cloud project and an API key, and it is metered by daily quota. Google's current quota documentation (checked 2026-10-20) lists a default allocation of 100 search.list calls per day plus 10,000 units per day for the other endpoints. This Actor has no API key and no quota units; you pay per row instead. It returns public data only: it cannot upload, edit, read private analytics or act on behalf of a channel, which the official API can do with OAuth. YouTube may still rate-limit heavy anonymous traffic, so very large jobs should be split across runs.
Is the YouTube API free, and do I need a YouTube API key?
Access to the official YouTube Data API goes through an API key and is limited by the default daily quota described above. This Actor needs no API key at all; you pay per row (see Pricing) and set your own cost caps.
What are the alternatives to this YouTube scraper?
For wider coverage, the largest YouTube scraper on the Store is streamers/youtube-scraper, and there are dedicated Actors for comments, channels and Shorts. This Actor is narrower on purpose: four read-only modes, flat per-row pricing, and incremental channel tracking. If you need video transcripts or reply threads, use a dedicated Actor for those; see the related Actors below.
How do I download all videos from a YouTube channel?
Put the channel handle or URL in channels and raise maxItems and maxPagesPerSource as high as you need. The Actor follows the channel's continuation pages and stops at your caps.
How do I get new videos from a channel every day?
Set mode to changes and schedule the Actor daily. Each run returns only videos published since the previous run.
Can I get comment replies, likes on videos or subscriber counts?
Replies are not collected (only replyCount). Video likes come from video details mode only. Channel subscriber counts are not part of the output; for rich channel information use the YouTube Channel Scraper below.
Is scraping YouTube allowed?
This Actor reads pages anyone can open without logging in. YouTube's terms restrict automated access, so check that your use is permitted under those terms and under the privacy rules that apply to the comment data you keep. Comment author names are public data but may still be personal data in your jurisdiction.
Related Actors
- YouTube Scraper by streamers, the largest general YouTube scraper on the Store.
- YouTube Comments Scraper by streamers, a dedicated comments Actor.
- YouTube Comments Scraper, comments with replies.
- YouTube Channel Scraper, rich channel information and videos.
- YouTube Shorts Scraper, a channel's Shorts with views, likes and dates.
- YouTube Transcript Extractor, captions and full text.
- Reddit Scraper, posts and comment threads for social listening.