YouTube Comment Voice-of-Customer Miner
Pricing
from $2.50 / 1,000 comments
YouTube Comment Voice-of-Customer Miner
Pulls comments and replies from YouTube videos matching a brand, product, or keyword, via the official YouTube Data API v3, structured for sentiment and voice-of-customer analysis.
Pricing
from $2.50 / 1,000 comments
Rating
0.0
(0)
Developer
Mikkel Bech-Hansen
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
Pulls the comments and replies people actually leave on YouTube videos about a brand, product, or topic, so you can read (or run sentiment analysis on) what customers really think — without scraping the YouTube website. It talks to Google's official YouTube Data API v3, the same API YouTube itself is built on, so there's no anti-bot cat-and-mouse and no login required.
You either point it at specific videos, or give it a search topic and it finds the top matching videos itself. Every comment can optionally be filtered down to only the ones mentioning your keywords (a brand name, a feature, a competitor) before it's saved.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
apiKey | string (secret) | (required) | Your free YouTube Data API v3 key. Get one at console.cloud.google.com/apis/credentials → Create Credentials → API key, then enable YouTube Data API v3 for that project in the API Library. Takes about 2 minutes, no billing account required. |
videoUrls | array of strings | [] | Explicit videos to mine, as full URLs (https://www.youtube.com/watch?v=...) or bare 11-character video IDs. If empty, searchQuery is used to discover videos instead. |
searchQuery | string | "iPhone 16 review" | Brand/product/topic to search YouTube for. Only used when videoUrls is empty. |
keywordFilter | array of strings | [] | Only keep comments/replies containing at least one of these words or phrases (case-insensitive). Leave empty to keep everything. |
includeReplies | boolean | true | Also fetch replies to top-level comments. |
sortOrder | "relevance" | "time" | "relevance" | relevance = YouTube's top comments first. time = newest first, good for monitoring fresh reactions. |
maxItems | integer | 100 | Hard cap on total comments/replies returned and charged for, across the whole run. |
maxVideos | integer | 5 | When discovering videos via searchQuery, how many candidate videos to pull comments from (1–50). Ignored when videoUrls is set. |
proxyConfiguration | object | { "useApifyProxy": false } | Optional. The actor talks directly to Google's API, not youtube.com, so a proxy is rarely needed. |
The default input runs with zero changes except pasting in your own apiKey — it searches "iPhone 16 review" and returns up to 30 comments from up to 3 videos.
Output
One dataset record per matching comment or reply:
{"videoId": "aaaaaaaaaa1","videoTitle": "iPhone 16 Review: Is It Worth It?","videoUrl": "https://www.youtube.com/watch?v=aaaaaaaaaa1","commentId": "c1","parentId": null,"isReply": false,"authorDisplayName": "alice","authorChannelUrl": "https://www.youtube.com/channel/alice","textOriginal": "The battery life on this thing is amazing","likeCount": 12,"publishedAt": "2026-08-01T00:00:00Z","updatedAt": "2026-08-01T00:00:00Z","matchedKeywords": ["battery"],"commentUrl": "https://www.youtube.com/watch?v=aaaaaaaaaa1&lc=c1"}
parentId is null for top-level comments and the parent comment's ID for replies. matchedKeywords lists which of your keywordFilter terms matched (empty array if no filter was set).
Cost
This actor uses pay-per-event pricing:
| Event | Price | When it's charged |
|---|---|---|
comment-scraped | $0.003 | Once per comment or reply saved to the dataset. |
video-searched | $0.005 | Once per video discovered via searchQuery (not charged when you supply videoUrls directly). |
A typical run pulling 100 comments from 5 videos found via search costs about 100 × $0.003 + 5 × $0.005 = $0.325. Supplying videoUrls directly and skipping search cuts that to $0.30 for the same 100 comments. The run stops cleanly (not with an error) if it hits your configured ACTOR_MAX_TOTAL_CHARGE_USD cap partway through — whatever was collected up to that point is kept.
Known limitations
- Reply depth: only the replies YouTube inlines with each comment thread (typically the first few, most-relevant ones) are returned. Very long reply chains are not fully paginated in this version.
- Comments disabled / held for review: videos with comments turned off, or where all comments are pending moderator approval, return nothing for that video — this is logged as a warning, not an error, and the run continues with the other videos.
- Free API quota: Google's free tier is 10,000 units/day; a
commentThreads.listcall costs 1 unit and asearch.listcall costs 100 units, so heavysearchQueryuse burns quota faster than supplyingvideoUrlsdirectly. High-volume users may need to request a quota increase from Google (free, self-service) or shard across API keys. - No sentiment scoring: this actor returns raw comment text and metadata, not a sentiment label — pair it with your own analysis or a downstream LLM/NLP step.
- Public data only: no OAuth, so it can only see what's publicly visible on YouTube — no access to a channel's private comment moderation queue.
Legal
This Actor is an independent, third-party tool. It is not affiliated with, endorsed by, or sponsored by YouTube or Google, and it uses the official YouTube API Services.
By using this Actor you agree to comply with the YouTube API Services Terms of Service and the Google Privacy Policy, which govern any data retrieved through the YouTube Data API v3. In particular: do not retain cached API data longer than permitted (generally, refresh or delete it within 30 days unless you have a separate right to keep it), do not use the data to build a product that replicates or competes with core YouTube functionality, and honor deletion if a video, comment, or channel is removed from YouTube. You are responsible for your own use of the data this Actor returns.
