YouTube Comments Scraper
Pricing
from $0.02 / 1,000 comment extracteds
YouTube Comments Scraper
Export public YouTube and Shorts comments, replies, authors, likes, creator signals, and thread metadata with keyword filters, retries, and downloadable datasets.
Pricing
from $0.02 / 1,000 comment extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
14 days ago
Last modified
Categories
Share
Export public YouTube and Shorts comments and replies with authors, likes, creator signals, thread context, keyword filters, and downloadable datasets.
This Apify actor helps teams collect public comment data from YouTube videos for social listening, creator analytics, moderation research, brand monitoring, audience research, and community reporting.
It accepts YouTube video URLs or video IDs, reads public comment threads, and saves clean dataset rows with author, text, timestamps, reply metadata, and source video details.
At a glance
- Input: YouTube or Shorts URLs/IDs, limits, top/newest/both sorting, reply controls, keyword/like filters, run tags, and optional proxy settings.
- Output: One row per public comment or reply with stable IDs, direct comment URL, author/channel data, likes, pins, creator signals, thread metadata, and timestamps.
- Best for: Social listening, creator analytics, moderation research, brand monitoring, audience research, and community reporting.
- Pricing unit: A start event per run plus one
commentevent for each saved public comment or reply row. - Login required: No. The Actor reads public YouTube comment data only.
Ready-to-run examples
- Export top YouTube video comments - Start with top comments from one public video.
- Export YouTube comments with replies - Keep reply context for thread-level analysis.
- Monitor newest YouTube video comments - Pull newest comments for recurring monitoring.
- YouTube top comments for video - Use a saved task pattern for quick comment exports.
What can it do?
YouTube Comments Scraper collects public comments from one or more YouTube videos.
Use it when you need structured comment data instead of manually scrolling through a video page.
The actor returns one dataset item per comment or reply.
Each row includes the video ID, canonical video URL, video title, comment ID, author name, author channel URL, text, visible published time, reply relationship fields, requested sort mode, and scrape timestamp.
Who is it for?
Social listening teams
Track what viewers say about a campaign, product, creator, brand mention, or announcement video.
Creators and channel managers
Export comments for content planning, community analysis, moderation workflows, and audience research.
Agencies
Collect public viewer feedback across client videos and competitor videos for recurring reporting.
Researchers
Analyze public conversations around media, politics, education, entertainment, and cultural trends.
Support and community teams
Find repeated complaints, questions, feature requests, or praise in video comment sections.
Why use this actor?
- Export comments into JSON, CSV, Excel, XML, or HTML from Apify datasets.
- Process multiple public videos in one run.
- Include reply metadata so nested conversations stay understandable.
- Use stable IDs such as
commentId,parentCommentId, andvideoIdfor deduplication and follow-up analysis. - Run repeatable workflows manually, on a schedule, through the API, or from automation tools.
- Connect output to spreadsheets, BI dashboards, sentiment tools, moderation queues, or LLM pipelines.
Output fields
| Field | Description |
|---|---|
videoId | YouTube video ID |
videoUrl | Canonical YouTube watch URL |
videoTitle | Public video title when exposed by YouTube |
commentId | Public comment identifier when exposed by YouTube |
parentCommentId | Parent comment ID for replies |
isReply | Whether the row is a nested reply |
authorName | Public author display name |
authorChannelUrl | Public author channel URL |
authorThumbnailUrl | Public author avatar image URL |
text | Comment or reply text |
likeCount | Visible like count when available |
publishedTimeText | Relative published time shown by YouTube |
replyCount | Visible reply count when available |
commentUrl | Direct public URL to the comment when its ID is exposed |
authorChannelId | Stable public author channel ID when exposed |
authorIsChannelOwner | Whether the author owns the video channel when exposed |
authorIsVerified | Whether YouTube exposes a verified-author badge |
isPinned | Whether the comment is pinned when exposed |
isEdited | Whether the visible timestamp indicates an edited comment |
hasCreatorHeart | Whether the creator-heart signal is exposed |
sort | Requested comment sort mode |
runTag | Optional caller-supplied workflow label |
scrapedAt | ISO timestamp when the row was saved |
Pricing
This Actor uses pay-per-event pricing. Input is validated before the one-time start charge, and every billed comment event corresponds to one row stored in the dataset.
| Event | Billing unit | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|---|
start | Once per valid run | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
comment | Per 1,000 stored comments or replies | $0.04694 | $0.04081 | $0.03184 | $0.02449 | $0.01633 | $0.01143 |
Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.
Input configuration
| Setting | JSON key | What to enter |
|---|---|---|
| YouTube video URLs | videoUrls | Public YouTube watch, Shorts, youtu.be, or embed URLs. |
| YouTube video IDs | videoIds | Raw 11-character IDs when you already have them. |
| Maximum comments per video | maxCommentsPerVideo | Cost and size cap per video. |
| Maximum comments to inspect | maxCommentsToScanPerVideo | Optional work cap for rare-match filtered runs; defaults to 3ร the output limit. |
| Sort order | sort | Top comments or newest comments where YouTube exposes the order. |
| Include replies | includeReplies | Whether reply rows are collected with top-level comments. |
| Maximum replies per thread | maxRepliesPerComment | Bound reply fan-out for large threads. |
| Include/exclude keywords | includeKeywords, excludeKeywords | Case-insensitive filtering on comment text and author. |
| Minimum likes | minLikes | Save only comments meeting a visible-like threshold. |
| Run tag | runTag | Add a workflow or campaign label to each row. |
| Safe deadline | maxRunSeconds | Stop safely before the platform timeout. |
| Proxy configuration | proxyConfiguration | Apify proxy settings for the run. |
Input notes
YouTube video URLs
Paste one or more public YouTube video URLs.
Supported examples:
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/shorts/dQw4w9WgXcQ
YouTube video IDs
If you already have video IDs, enter them directly.
dQw4w9WgXcQ
Maximum comments per video
Set a cap to control run size and cost.
For a quick test, use 10 to 25 comments.
For monitoring, increase the limit based on the size of the videos you track.
Sort order
Choose top comments or newest comments.
Newest-first depends on what YouTube exposes for the selected video at run time.
Include replies
Enable replies when you want conversation context.
Disable replies when you only need top-level comments.
Proxy configuration
The actor supports Apify Proxy configuration.
Automatic proxy settings are a good default for most runs.
Use residential proxy only if your workload is throttled.
Example input
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxCommentsPerVideo": 25,"sort": "top","includeReplies": true,"proxyConfiguration": {"useApifyProxy": true}}
Example output
{"videoId": "dQw4w9WgXcQ","videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","commentId": "Ugzge340dBgB75hWBm54AaABAg","parentCommentId": null,"isReply": false,"authorName": "@YouTube","authorChannelUrl": "https://www.youtube.com/@YouTube","authorThumbnailUrl": "https://yt3.ggpht.com/example=s88-c-k-c0x00ffffff-no-rj","text": "can confirm: he never gave us up","likeCount": 255000,"publishedTimeText": "1 year ago","replyCount": 960,"sort": "top","scrapedAt": "2026-06-16T14:21:28.786Z"}
How to scrape YouTube comments
- Open the actor on Apify.
- Paste one or more YouTube video URLs.
- Set the maximum number of comments per video.
- Choose top or newest sort.
- Decide whether to include replies.
- Click Start.
- Download the dataset in your preferred format.
Tips for best results
- Start with a small limit to confirm the video has public comments.
- Use video IDs if you already have a list from another workflow.
- Disable replies when you only need high-level audience sentiment.
- Schedule recurring runs for campaign monitoring.
- Deduplicate downstream by
commentIdif you run the same video repeatedly. - Use
scrapedAtto compare comment exports over time.
Common use cases
- Brand sentiment tracking on product launch videos.
- Creator audience analysis across recent uploads.
- Exporting comments for moderation review.
- Detecting recurring customer questions.
- Researching public reaction to news or entertainment videos.
- Building datasets for natural language processing.
- Monitoring competitor campaign responses.
Integrations
Send results to Google Sheets through Apify integrations.
Load dataset exports into BigQuery, Snowflake, Airtable, or your BI stack.
Trigger the actor from Zapier, Make, n8n, GitHub Actions, or a custom backend.
Use webhooks to notify your team when a recurring monitoring run finishes.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/youtube-comments-scraper').call({videoUrls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],maxCommentsPerVideo: 25,sort: 'top',includeReplies: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('fetch_cat/youtube-comments-scraper').call(run_input={'videoUrls': ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],'maxCommentsPerVideo': 25,'sort': 'top','includeReplies': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/fetch_cat~youtube-comments-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxCommentsPerVideo": 25,"sort": "top","includeReplies": true}'
MCP and AI agents
You can run this actor from Claude Desktop, Claude Code, and other MCP-compatible tools through Apify MCP.
Use this MCP URL pattern:
https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper
Claude Code setup:
$claude mcp add apify-youtube-comments https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper
Claude Desktop JSON configuration:
{"mcpServers": {"apify-youtube-comments": {"url": "https://mcp.apify.com/?tools=fetch_cat/youtube-comments-scraper"}}}
Example prompts:
- "Scrape the top 50 comments from this YouTube video and summarize the main viewer reactions."
- "Export public comments from these three video URLs and identify common product complaints."
- "Run the YouTube Comments Scraper for this video ID and group comments by sentiment."
Scheduling
Create a schedule in Apify Console to monitor the same video list daily, weekly, or monthly.
Scheduled runs are useful for campaigns, launches, music videos, trailers, tutorials, and recurring brand mentions.
Data quality notes
YouTube can change what it exposes for individual videos.
Some videos have comments disabled.
Some comments may be hidden, moderated, removed, region-limited, or unavailable.
Visible like counts and reply counts may not be available for every row.
Troubleshooting
Why did I get zero comments?
Check RUN_SUMMARY in the default key-value store. A public video with disabled or genuinely empty comments finishes as EMPTY_SOURCE. Private, deleted, age-restricted, blocked, or structurally unreadable videos are reported as failures instead of silently producing a green zero-row run. Keyword and minimum-like filters can also legitimately produce zero stored rows.
Why are some fields null?
YouTube does not expose every field for every comment.
The actor keeps the row instead of inventing values.
Should I use residential proxy?
Small runs may work without residential proxy. For larger or repeated workloads, residential proxy groups are more reliable. The Actor rotates proxy sessions and retries transient 403, 429, 5xx, timeout, and network failures.
Legality and privacy
This actor is designed to collect publicly visible YouTube comments.
Do not use it to collect private, account-only, or restricted data.
You are responsible for using the data in accordance with applicable laws, platform terms, and privacy requirements.
Avoid collecting more data than you need.
Related scrapers
Explore other actors by the same developer on Apify:
FAQ
Can I scrape multiple videos in one run?
Yes. Add multiple video URLs or IDs to the input.
Can I get replies?
Yes. Enable includeReplies to include nested replies when YouTube exposes them.
Can I export to CSV?
Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, and HTML.
Can I run this from code?
Yes. Use the Apify API, JavaScript client, Python client, webhooks, schedules, or MCP.
Does this require a YouTube account?
No. The actor is designed for public comments visible without login.
Limitations
This actor does not use private accounts.
It does not bypass paywalls, login walls, or private video restrictions.
It cannot return comments that YouTube itself does not expose for the public video page.
Privacy and data handling
This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.
Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.
You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.
Support
If a public video does not behave as documented, include the Apify run ID or run URL, the input JSON, expected output, actual output, and a reproducible public URL. Please remove tokens, cookies, private URLs, and personal data before sharing a report.