Video & audio · Live on Apify

YouTube Comments Scraper

Export public comments and replies from YouTube videos. Each reply keeps its parent comment ID. No YouTube login or API key is needed.

About $0.85 for 1,000 comments$0.0008 per comment + $0.05 per run. Apify bills you, not us.One comment in a run of its own: about $0.05.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

itemTypecomment
videoIdaqz-KE-bpKQ
videoUrlhttps://www.youtube.com/watch?v=aqz-KE-bpKQ

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: https://www.youtube.com/watch?v=aqz-KE-bpKQ in YouTube video URLs or IDs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

YouTube Comments Scraper gets public comments and replies from YouTube videos. Add video URLs or IDs, choose Top or Newest order, and export one row for each saved comment or reply as JSON, CSV, or Excel. No YouTube login or API key is needed.

Good for

  • Read feedback on a known public video or a small set of videos.
  • Export comment text, likes, public author fields, and reply links.
  • Match repeated exports by stable comment IDs in your own system.

Who uses it

YouTube creators

Read viewer feedback from many videos in one table.

Brand managers

See what people say under product review videos.

Researchers

Study a discussion by grouping replies under each comment.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Stored comment or reply$0.0008Charged once after one unique comment or reply is saved to the Dataset.
Start fee$0.05Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.

Examples

  • One comment: about $0.05.
  • 1,000 comments: about $0.85.
  • Every day 100 comments, for 30 days: about $3.90 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 5,800 comments.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Does it work with Shorts?

Yes. Shorts links, watch links and video IDs work.

Can I get live chat messages?

No. Live video links give comments, not live chat.

Do I need a Google API key?

No. It does not use the YouTube Data API or any key.

Is this an official YouTube or Google tool?

No. It is an independent Actor and is not made, approved, or sponsored by YouTube or Google.

Does it use the official YouTube Data API?

No. It reads the public website's InnerTube comments surface through YouTube.js. That interface is not a public supported API and can change.

Does this YouTube comment scraper need an API key?

No. It does not accept a Google API key, OAuth token, YouTube account, or cookies. For a separate official API client, Google documents commentThreads.list; that API is not this Actor's source.

Can I export comments from multiple videos, including Shorts?

Yes. Use up to 50 supported public video URLs or IDs. Duplicate videos are processed once. Live video URLs refer to comments, not live chat.

Can I download YouTube comments as CSV or Excel?

Yes. Open the results table and choose JSON, CSV, or Excel. Each saved comment or reply is one row. JSON preserves the complete nested shape.

Can it get every comment or recover deleted comments?

No. It gets the public comments visible during the run and inside your limits. It cannot recover deleted, hidden, held, private, or member-only comments.

Are replies included?

Only when includeReplies=true and maxRepliesPerComment>0. Leave room in maxComments by choosing a smaller per-video top-level cap. Every saved reply counts toward the total and price.

Details

Step by step on Apify
  1. Open Input. A new form suggests a public Blender video in startUrls.
  2. Keep that example or add your public video URL or ID.
  3. Keep sort=TOP, maxComments=100, and includeReplies=false for a first run.
  4. Click Start. Set a maximum charge in Run options when needed.
  5. Open Comments and replies. Check videoId, text, and isReply.
  6. Open Run summary to check the result and stop reason for each video.
Use cases
TaskInput choiceKey fieldsNext step
Read feedbackOne video, TOP, small maxCommentstext, likeCount, videoIdExport a table for review
Read recent commentssort=NEWESTpublishedTimeText, topLevelPositionCheck the displayed source order
Study a discussionReplies on, smaller top-level capisReply, parentCommentId, threadIdGroup rows by parent
Match repeat exportsSame video in later runsid, recordKey, retrievedAtDeduplicate in your own system
Tips for better results
  • Choose Newest order to read fresh comments first.
  • Set a total row limit to control cost.
  • Use comment IDs to remove duplicates between exports.
Recent updates
  1. Update · 8 October 2026

    • Recognize an explicit zero-comments header instead of failing with an ambiguous empty result. A challenge or contradictory comment renderer cannot become zero.
    • Show the top-level per-video cap and explain how to leave space for optional replies; preserve every API default and output field.
    • Respect a shorter platform timeout, bound source requests and backoff to the deadline reserve, and keep the existing internal ceiling for longer timeouts.
  2. Version 0.1.0 · 2 September 2026

    • Select Direct below 4,000 requested results and Residential US for larger limits automatically; hide low-level request, time, concurrency, and proxy controls from the visual Input form.
    • Repair an enabled empty proxy-group selection to Residential US instead of failing before the first request.
    • Isolate sticky Residential sessions between Actor runs and rotate the session after transient connection failures as well as blocked responses.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "itemType": "comment",
  "videoId": "aqz-KE-bpKQ",
  "videoUrl": "https://www.youtube.com/watch?v=aqz-KE-bpKQ",
  "isReply": false,
  "parentCommentId": null,
  "likeCount": 1900,
  "publishedAt": null,
  "sort": "TOP",
  "topLevelPosition": 1,
  "replyPosition": null,
  "retrievedAt": "2026-10-08T09:17:19.761Z",
  "source": "youtube-innertube"
}

Use it from code

Actor ID: cliqtomedia/youtube-comments-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/youtube-comments-scraper").call(run_input={
    "startUrls": [
        "https://www.youtube.com/watch?v=aqz-KE-bpKQ"
    ],
    "sort": "TOP"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~youtube-comments-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.youtube.com/watch?v=aqz-KE-bpKQ"], "sort": "TOP"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/youtube-comments-scraper")
result = tool.invoke({"run_input": {"startUrls": ["https://www.youtube.com/watch?v=aqz-KE-bpKQ"], "sort": "TOP"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (22)
FieldTypeMeaning
itemTypestringThe result type. This Actor saves comment rows only.
idstringThe comment ID provided by the source.
recordKeystringA stable key used to prevent duplicate saves and charges in one run.
videoIdstringThe 11-character YouTube video ID.
videoUrlstringThe standard YouTube watch URL for the video.
threadIdstringThe top-level comment ID that starts this comment thread.
isReplybooleanTrue for a reply row.
parentCommentIdstringThe parent comment ID for a reply. It is null for a top-level comment.
textstringThe public comment text shown by the source during this run.
likeCountintegerThe like count seen during this run. It is null when the value is not clear.
authorobjectPublic author details when available. No avatar or added profile data is included.
isPinnedbooleanWhether the comment is pinned. It is null when the source does not make this clear.
isHeartedbooleanWhether the creator hearted the comment. It is null when the source does not make this clear.
authorIsCreatorbooleanWhether the author is the video creator. It is null when this is not clear.
isEditedbooleanWhether the source shows an edited label. It is null when this is not clear.
publishedTimeTextstringThe display time shown by the source, for example 2 hours ago. It may be relative or translated.
publishedAtnullAlways null because the source does not provide a proven exact posting time.
sortstringThe comment order selected for this run.
topLevelPositionintegerThe top-level comment position seen in this run, starting at 1.
replyPositionintegerThe reply position under its parent comment, starting at 1. It is null for a top-level comment.
retrievedAtstringThe UTC time when the Actor saved this result.
sourcestringThe technical name of the public YouTube website data source used by the Actor.
Input settings (11)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
YouTube video URLs or IDs requiredstartUrlsarray["https://www.youtube.com/watch?v=aqz-KE-bpKQ"]
Sort ordersortstring"TOP"
Maximum total resultsmaxCommentsinteger100
Top-level comments for each videomaxTopLevelCommentsPerVideointeger10000
Include repliesincludeRepliesbooleanfalse
Replies for each top-level commentmaxRepliesPerCommentinteger50
Maximum requests for each videomaxRequestsPerVideointeger600
Maximum requests for the runmaxTotalRequestsinteger2000
Videos processed at onceconcurrencyinteger1
Maximum run timemaxRunSecondsinteger1800
Connection settingsproxyConfigurationobject

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure