# Reddit Comments Scraper - Export Comments & Nested Replies (`zaver.api/reddit-comments-scraper`) Actor

Export every comment and nested reply from any Reddit post without the Reddit API - 'load more comments' and deep threads expanded automatically. No API key, no login, no start fee, post details free. CSV, Excel or JSON.

- **URL**: https://apify.com/zaver.api/reddit-comments-scraper.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Categories:** Social media, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 comments

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Reddit Comments Scraper — Export Every Comment and Nested Reply to CSV, Excel or JSON

**Download the complete comment thread of any Reddit post.** Paste post URLs and get every comment and nested reply, with "load more comments" and deep threads expanded automatically. No Reddit API key, no login. **Pay per comment, no start fee, and the post row is free.**

> ⭐ Full comment trees · up to 50,000 comments per post · reply structure preserved · proxies included · pay only per comment delivered · API and MCP ready

### What does Reddit Comments Scraper do?

Reddit Comments Scraper is a purpose-built **Reddit comment extractor**. Reddit's website shows about 500 comments and hides the rest behind "load more comments" and "continue this thread" links. This Actor opens every one of those branches for you and returns the whole conversation as flat rows.

- **Paste any link to a thread**: post URLs, comment permalinks, `redd.it` short links, mobile share links and bare post IDs all work.
- **Get the whole tree**: top-level comments, replies, and replies to replies, at any depth.
- **Keep the structure**: every comment carries `depth`, `parentId` and `parentType`, so you can rebuild the thread exactly.
- **Get the post too**: title, text, author, score and comment count arrive as one extra row, free of charge.

### What data does the Reddit Comments Scraper extract?

#### Comment fields

| Field | Description |
|---|---|
| `text` | Full comment body, with original line breaks |
| `id`, `url` | Comment ID and permalink |
| `score` | Net upvotes |
| `createdAt` | ISO 8601 timestamp (UTC) |
| `depth` | 0 for top-level comments, 1 for replies, and so on |
| `parentId`, `parentType` | ID of the comment or post being replied to |
| `controversiality`, `awards` | Reddit's controversy flag and award count |
| `isEdited`, `isStickied`, `distinguished` | Edit, pin and moderator or admin flags |

#### Author fields

| Field | Description |
|---|---|
| `author` | Username |
| `authorId` | Stable account ID, which survives username changes |
| `isSubmitter` | `true` when the commenter is the original poster |

#### Parent post fields

| Field | Description |
|---|---|
| `postId`, `postTitle`, `postUrl` | On every comment row, so comments from many posts stay separable |
| `subreddit` | Community name |

When **Include the post itself** is on, one `type: "post"` row per thread adds `title`, `text`, `author`, `score`, `upvoteRatio`, `numComments`, `flair`, `imageUrls`, `link` and `createdAt`.

### A Reddit API alternative

Since Reddit changed its API pricing, the official Data API needs a registered app, OAuth credentials and, for commercial use, a paid agreement. Free access is rate limited and listings stop at 1,000 items. With PRAW you also have to call `replace_more()` yourself, one rate-limited request per hidden branch, to get past the first few hundred comments.

This Actor is a **Reddit API alternative** for comment threads. It works **without the Reddit API**: there is no app to register, no client ID or secret, no token refresh and no API pricing to negotiate. You pay per row you export and nothing else.

| | Official Reddit API or PRAW | This Actor |
|---|---|---|
| Setup | Register an app, manage OAuth tokens | Paste links or keywords |
| Commercial use | Paid agreement with Reddit | Pay per result |
| Rate limits | Yours to manage | Handled for you |
| Proxies and retries | Not applicable, but you build the pipeline | Included |
| Output | Raw API objects | Flat rows: CSV, Excel, JSON |

### Why use this Reddit comment extractor

#### It reaches the comments other tools stop before

A page-level scraper returns what the first page shows. This Actor keeps calling Reddit for the hidden branches until your limit is reached or the thread is exhausted. On a 2,700-comment thread it delivers 1,500 comments in about 30 seconds.

#### No start fee, and the post is free

Many Reddit scrapers add a fee every time a run starts and bill the post row as a result. Here a run costs nothing to start and you pay for comments only.

#### No login and no API key

Nothing to register, no tokens to refresh, no app review. Residential proxies are built in and included in the price.

#### You only pay for comments you receive

Charges are made right after each batch is saved. Deleted and removed comments are skipped and never billed. A post that is private or gone returns an error row at no cost.

### How to scrape Reddit comments

1. Open the Actor and paste your links into **Reddit post URLs**, one per line.
2. Set **Max comments per post**. The default is 1,000.
3. Pick a **Comment order**. `Top` returns the most upvoted first, which is what you want when a thread is bigger than your limit.
4. Press **Start** and watch comments stream into the dataset.
5. Export as CSV, Excel, JSON or XML, or fetch through the API.

> 💡 To capture a whole thread, set **Max comments per post** above the post's comment count. Reddit's own count includes deleted comments, so the delivered number is usually a little lower.

### Input example

```json
{
  "postUrls": [
    "https://www.reddit.com/r/AskReddit/comments/1wrj0s2/"
  ],
  "maxCommentsPerPost": 1000,
  "sort": "top",
  "includePost": true
}
```

| Field | Type | Description |
|---|---|---|
| `postUrls` | array | **Required.** Post URLs, one per line. Comment permalinks, `redd.it` short links, share links and bare post IDs work too - each is resolved to its parent post. |
| `maxCommentsPerPost` | integer | Maximum comments per post, nested replies included. Reddit shows about 500 per page; the Actor keeps expanding 'load more comments' until it reaches this number or the thread ends. Default `1000`. |
| `sort` | string | Which comments come first. Matters when a thread is larger than your limit. Default `"top"`. |
| `includePost` | boolean | Add one row with the post's title, text, author, score and comment count. This row is free. Default `true`. |
| `includeNSFW` | boolean | Include posts, comments and communities marked 18+. Off by default. Default `false`. |
| `maxItems` | integer | Hard cap on billable comments for the whole run. 0 means no cap. Default `0`. |

### Output example

```json
{
  "type": "comment",
  "id": "pcdofpa",
  "url": "https://www.reddit.com/r/AskReddit/comments/1wab3cd/what_is_a_skill_everyone_should_learn/pcdofpa/",
  "text": "Basic cooking. Five recipes you can make without thinking will carry you through life.",
  "author": "kitchen_karl",
  "authorId": "t2_9x2k1abc",
  "score": 2841,
  "createdAt": "2026-09-27T15:10:03Z",
  "depth": 0,
  "parentId": "1wab3cd",
  "parentType": "post",
  "isSubmitter": false,
  "isEdited": false,
  "controversiality": 0,
  "postId": "1wab3cd",
  "postTitle": "What is a skill everyone should learn?",
  "postUrl": "https://www.reddit.com/r/AskReddit/comments/1wab3cd/what_is_a_skill_everyone_should_learn/",
  "subreddit": "AskReddit",
  "source": "https://www.reddit.com/r/AskReddit/comments/1wab3cd/"
}
```

A reply to that comment has `"depth": 1`, `"parentId": "pcdofpa"` and `"parentType": "comment"`.

### Pricing

Pay per result. **No start fee, no monthly rental, no minimum.**

| Event | Charged for | Price |
|---|---|---|
| `comment-scraped` | each comment or reply delivered | **$1.49 / 1,000** |
| `-` | the parent post row | ****free**** |

| You export | You pay |
|---|---|
| 1,000 comments | **$1.49** |
| 10,000 comments | **$14.90** |
| 100,000 comments | **$149.00** |

You are charged right after each batch lands in your dataset, so a run you stop early costs only what it delivered. Targets that fail, are private, or return nothing are free. Proxies are included in the price - there is nothing else to pay for.

### Use cases

#### Sentiment analysis on real audience language

Export the comments under a product announcement, a review thread or a news story and score them with your own model. Weight by `score` to reflect what readers actually saw.

#### AI training data and evaluation sets

Comment trees are multi-turn conversations. With `depth` and `parentId` you can build prompt and response pairs, or whole dialogue chains, for fine-tuning and evaluation.

#### Customer research and voice of customer

Threads asking "what do you use for X" are unprompted product feedback. Extract the comments and count which products are named, and why.

#### Community moderation and brand safety

Pull every comment on your community's busiest threads for review, or audit the conversation around a campaign before you amplify it.

#### Journalism and academic research

Capture a full public discussion at a point in time, with stable IDs and UTC timestamps, for quoting, coding or archiving.

### FAQ

**Do I need a Reddit account or API key?**
No. It works without the Reddit API. The Actor reads public threads without logging in.

**Is scraping Reddit legal?**
This is general information, not legal advice. The Actor collects only what any logged-out visitor can see, and never touches private communities, private messages or login-protected pages. Whether your use is lawful depends on where you are, what you collect and what you do with it. Usernames and posts can be personal data under laws such as GDPR and CCPA, and Reddit's User Agreement restricts automated collection and some commercial uses of its content. Collect only what you need, do not republish personal data, honour deletion requests, and ask a lawyer before building a commercial product on the data.

**How many comments can I get from one post?**
Up to 50,000 per post. Set **Max comments per post** to the number you need.

**Why is the number of comments lower than what Reddit shows?**
Reddit's counter includes deleted, removed and spam-filtered comments. Those have no content, so they are skipped and not billed.

**Can I paste a link to a single comment?**
Yes. A comment permalink is resolved to its post and the whole thread is collected.

**Can I scrape comments from many posts at once?**
Yes. Paste up to 5,000 links per run. To collect comments for every post in a community or a search, use the [Reddit Scraper](https://apify.com/zaver.api/reddit-scraper) with **Include comments** turned on.

**In what order do comments arrive?**
In the order you choose: top, best, newest, oldest, controversial or Q\&A. Replies follow their parent on the first page; expanded branches follow afterwards. Use `parentId` and `depth` to rebuild the tree.

**Does it work on NSFW posts?**
Only when **Include NSFW content** is on. It is off by default.

**What happens if a post was deleted or the community is private?**
You get an error row naming the link and the reason. Error rows are free.

**Can I schedule it?**
Yes. Schedule the Actor to re-collect a live thread and de-duplicate on `id`.

### Integrations

- **Apify API** - start runs and fetch datasets from Python, Node.js, cURL or any HTTP client.
- **MCP server** - call this Actor as a tool from Claude, Cursor, ChatGPT agents and any MCP client.
- **No-code** - Make, Zapier, n8n, Pipedream, Google Sheets, Airtable, Slack, webhooks.
- **Schedules** - run hourly, daily or weekly and append to the same dataset for monitoring.
- **Exports** - JSON, JSONL, CSV, Excel (XLSX), XML, HTML table, RSS.

### Related Reddit scrapers

- [Reddit Scraper](https://apify.com/zaver.api/reddit-scraper) - posts, comments, search, users and communities in one Actor
- [Reddit Search Scraper](https://apify.com/zaver.api/reddit-posts-search-scraper) - posts, communities and users by keyword
- [Reddit Lead Finder](https://apify.com/zaver.api/reddit-lead-finder) - people asking for what you sell, scored by buying intent

***

*Not affiliated with, endorsed by or sponsored by Reddit, Inc. This Actor reads only publicly available pages, does not log in and does not access private communities, private messages or deleted content. You are responsible for using the data in line with applicable laws, Reddit's terms and the privacy rights of the people whose public posts you collect.*

# Actor input Schema

## `postUrls` (type: `array`):

Post URLs, one per line. Comment permalinks, <code>redd.it</code> short links, share links and bare post IDs work too - each is resolved to its parent post.

## `maxCommentsPerPost` (type: `integer`):

Maximum comments per post, nested replies included. Reddit shows about 500 per page; the Actor keeps expanding 'load more comments' until it reaches this number or the thread ends.

## `sort` (type: `string`):

Which comments come first. Matters when a thread is larger than your limit.

## `includePost` (type: `boolean`):

Add one row with the post's title, text, author, score and comment count. This row is free.

## `includeNSFW` (type: `boolean`):

Include posts, comments and communities marked 18+. Off by default.

## `maxItems` (type: `integer`):

Hard cap on billable comments for the whole run. 0 means no cap.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.reddit.com/r/AskReddit/comments/1wrj0s2/"
  ],
  "maxCommentsPerPost": 1000,
  "sort": "top",
  "includePost": true,
  "includeNSFW": false,
  "maxItems": 0
}
```

# Actor output Schema

## `results` (type: `string`):

All dataset items.

## `resultsCsv` (type: `string`):

CSV download.

## `runSummary` (type: `string`):

Counts for the run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "postUrls": [
        "https://www.reddit.com/r/AskReddit/comments/1wrj0s2/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/reddit-comments-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "postUrls": ["https://www.reddit.com/r/AskReddit/comments/1wrj0s2/"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/reddit-comments-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "postUrls": [
    "https://www.reddit.com/r/AskReddit/comments/1wrj0s2/"
  ]
}' |
apify call zaver.api/reddit-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/reddit-comments-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YF9SaMzPif6clNEis/builds/zrNBqwY6DEmB5Cgws/openapi.json
