YouTube Comments Scraper — Public Comments & Replies
Under maintenancePricing
from $0.50 / 1,000 results
YouTube Comments Scraper — Public Comments & Replies
Under maintenanceUnder maintenance. Designed to export public YouTube comments and selected replies with text, authors, approximate likes, relative publication text, and available pinned/heart flags. Retrieval may currently fail.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Coor Yu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
UNDER MAINTENANCE: This Actor currently carries the
UNDER_MAINTENANCEnotice. Public comment retrieval may fail or return incomplete results. Do not depend on it for production collection until the maintainer confirms recovery. A successful build does not prove working YouTube extraction. Startup and Apify usage charges can still apply to failed or empty runs.
YouTube Comments Scraper is designed to export public YouTube top-level comments and selected reply threads, with comment text, author-channel information, likes, relative publication text, and available pinned/creator-heart flags. Use it for discussion research, subject to the warning above.
The implementation uses public YouTube page data and HTTP continuations with a bounded Python curl-cffi helper, not a browser or configured proxy. No YouTube login/Data API key is supplied; public client configuration and response cookies are acquired internally. Apify API authentication is separate and needs an Apify token.
Supported modes
- Top comments:
sortBy: "top"follows YouTube's exposed top-comment ordering. - Newest first:
sortBy: "newest"requests its newest continuation; the video fails if YouTube does not expose one. - Replies:
includeReplies: truefetches available reply continuations for the selected top-level comments, up to the separate per-parent bound.
Supported inputs are public YouTube watch, youtu.be, Shorts, embed, and live video URLs. This Actor does not discover channel videos, retrieve private discussions, or export live-chat messages.
Small test input
If you choose to test during maintenance, use a small request and inspect both the dataset and run logs:
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"commentsPerVideo": 5,"includeReplies": false,"repliesPerComment": 20,"sortBy": "top","maxConcurrency": 2}
Illustrative input, not verified live output. Save as input.json for an Apify API test:
curl -X POST \'https://api.apify.com/v2/acts/funny_ground~youtube-comments-scraper/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data-binary @input.json
Calling this endpoint starts a billable run; the maintenance notice remains applicable.
Input fields
| Field | Default | Scope and range |
|---|---|---|
videoUrls | [] | Required nonempty array of public video URLs. Repeated identical trimmed URL strings are removed. |
commentsPerVideo | 100 | Top-level maximum per video; 0–100000. 0 removes the requested row bound, not pagination or access limits. |
includeReplies | false | Retrieve reply threads only for selected top-level comments with exposed reply tokens. |
repliesPerComment | 20 | Reply maximum per selected parent; 0–10000. 0 removes the requested reply-row bound. |
sortBy | "top" | "top" or "newest". |
maxConcurrency | 6 | Global concurrent HTTP requests across videos/replies; 1–20. |
maxRequestRetries | 2 | Request retries; 0–5. |
requestTimeoutSecs | 20 | Per-request timeout; 5–120 seconds. |
Both top-level and reply feeds have a 10,000-page safety bound and stop on repeated continuation tokens. Requested counts are upper bounds, not promises of complete discussions. Reply rows are additional to commentsPerVideo.
Developer Free-plan preview: at most 50 saved rows globally per run, including replies. Only the first 50 input URLs are used, and requested top-level/reply bounds are each capped at 50; on this plan 0 is also converted to 50. Top-level rows are placed before replies in a video's output, so the global preview cap can leave no room for replies. Paid plans remove this developer cap, not source or pagination constraints. FREE-tier events are not zero-priced.
Dataset and billing unit
Each saved row represents one top-level comment or one reply. Fields include commentId, videoId, videoUrl, text, publishedTimeText, likeCount, likeCountText, replyCount, isReply, optional parentCommentId, depth, isPinned, isHearted, author, and collection time scrapedAt. The nested author object can contain channelId, name, avatarUrl, verified, and isCreator.
publishedTimeTextis YouTube's localized/relative text, not an exact publication timestamp.scrapedAtis the collection timestamp.- Abbreviated likes and replies are parsed into approximate numbers. Missing/unparseable count text becomes
0; it should not be interpreted as an independently verified zero.likeCountTextpreserves the original displayed like text. - Badge/heart booleans depend on available source fields;
falseis not independent proof that a badge or heart is absent. - Reply rows use
depth: 1; top-level comments usedepth: 0. This is not a reconstruction of arbitrary nested conversation depth.
IDs are deduplicated within a video's top-level feed and within each reply feed. There is no run-wide video-ID deduplication across different URL forms of the same video, so watch and short-link aliases can cause repeat collection and result charges.
Billing uses the configured apify-default-dataset-item event for saved dataset rows, not HTTP requests or a custom thread event. A video's rows are pushed only after its top-level and optional reply collection finishes. A pagination or reply-fetch exception can therefore discard that video's earlier collected rows; other completed videos may still be saved. Unsaved rows are not result events, but startup/platform usage remains payable.
Current pricing
| Apify plan | Per saved comment/reply event | Per 1,000 events |
|---|---|---|
| FREE | $0.0025 | $2.50 |
| BRONZE, SILVER, GOLD, PLATINUM, DIAMOND | $0.0005 | $0.50 |
apify-actor-start costs $0.005 per GB of allocated memory, minimum one event per run, not one universal fixed startup fee. Apify compute, transfer, and storage are separately billed to the running user, including possible failed/empty-run costs. No downstream Actor or separate per-request charge event is configured.
See the Pricing tab for current effective charges. A maximum event budget does not guarantee a full export or cover all platform usage.
Reliability, availability, and FAQs
Is the Actor currently confirmed operational? No. It is under maintenance; this documentation describes implemented behavior, not a live-service guarantee. The run fails when no video produces valid comment records, while some video failures can coexist with saved output from others. Inspect saved rows rather than relying solely on logged counts.
Do zero limits retrieve every comment? No guarantee. Public availability, 10,000-page bounds, continuation changes, request errors, Free-plan policy, and budgets still apply. Replies are limited to selected parents with reachable reply continuations.
Does no YouTube API key mean free or unauthenticated Apify access? No. You do not provide YouTube credentials, but Apify API runs need an Apify token and incur event/start/platform costs.
Deleted, held-for-review, private, members-only, disabled, restricted, or otherwise inaccessible comments may not be returned. The Actor does not bypass authentication or access controls. Collect and process public discussion data only for lawful purposes and in accordance with platform terms and privacy requirements.
Complementary Actors
- YouTube Scraper — channel videos, Shorts, playlists, searches, and video metadata, rather than comment text.
- YouTube Influencer Finder — public creator discovery rather than comment-thread collection.