# Reddit Post Comments Export: Threads to JSON & CSV (`tenfoldfleet/reddit-post-comments-export`) Actor

Export all comments from a Reddit post to JSON or CSV: paste post URLs and get each comment's author, text, time and link, plus the post itself. Merge sort orders for more than 500 comments. No login. $0.80 per 1,000 comments + $0.0025 per post; failed posts are free.

- **URL**: https://apify.com/tenfoldfleet/reddit-post-comments-export.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Social media, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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

Not affiliated with Reddit, Inc. This Actor reads Reddit's public feeds only: no login, no account, no API key.

### What does Reddit Post Comments Export do?

**Reddit Post Comments Export** turns the comment section of any public Reddit post into rows you can download as **JSON, CSV or Excel**. Paste one or thousands of post URLs and get **every comment's author, text, time and permalink**, plus one row for the post itself (title, author, self text, outbound link). It works like a small **Reddit comments API**: run it from the Apify Console, on a schedule, through the Apify API, or from an AI agent over MCP.

### Why use it?

- **Research and voice of customer**: pull what people actually say about a product, a launch or a competitor in one thread, then read it in a spreadsheet or feed it to an LLM.
- **Follow a live thread**: turn on **Only new comments** and schedule the run. Each run returns only the comments added since the last one, and you pay only for those.
- **Datasets for analysis**: sentiment, topic modelling, AMA archives, support-forum exports.
- **Cheap and simple**: flat price per comment, no browser, no Reddit account.

### What data can it extract?

| Row | Fields |
|---|---|
| Post (one per post) | `postId`, `subreddit`, `author`, `postTitle`, `text`, `linkUrl`, `thumbnailUrl`, `createdAt`, `url`, `commentsAvailable`, `commentsReturned`, `commentsAlreadySeen`, `sortsRead` |
| Comment | `commentId`, `postId`, `subreddit`, `author`, `text`, `createdAt`, `url` (comment permalink), `postTitle`, `postUrl`, `isDeleted`, `sort`, `position`, `sortsFound` |
| Error (free) | `input`, `error` |

**What it does not return** (Reddit's public feed doesn't carry it): upvote scores, award counts, reply depth or parent comment ids. Comments come as a flat list in the order of the sort you picked. If you need scores or the reply tree, this is the wrong tool.

### How to export Reddit comments

1. Open the Actor and paste your post URLs into **Reddit post URLs** (full URLs, old.reddit.com links, redd.it links or bare ids like `1xisjeh`).
2. Leave **Sort orders** on *Best* for most posts. For big threads, add *New*, *Top* and *Old* as well (see Tips).
3. Set **Max comments per post** (0 = everything the chosen sorts return).
4. Click **Start**, then download the results as JSON, CSV or Excel from the Output tab.

### How much does it cost?

Pay per event, no monthly fee:

- **$0.80 per 1,000 comments** ($0.0008 each)
- **$0.0025 per post** read (the post row plus its comment feeds in every chosen sort order)
- $0.00005 per run start

Example: 100 posts with 200 comments each = 100 x $0.0025 + 20,000 x $0.0008 = **$16.25**. Posts that can't be read (deleted, private, wrong URL) are free, and so are comments already returned when **Only new comments** is on. Apify's datacenter proxy is included.

**Free Apify plan**: up to 300 comments per run. Paid plans have no per-run cap; use the run's max-cost setting to stay within a budget.

### Input

```json
{
    "postUrls": [
        "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/",
        "https://redd.it/1xiw00k"
    ],
    "sorts": ["confidence", "new"],
    "maxCommentsPerPost": 1000,
    "onlyNew": false
}
```

A comment link (`.../comments/<post>/<slug>/<commentId>/`) exports that comment and its replies instead of the whole post. Share links (`/r/<sub>/s/...`) are not supported: open them once in a browser and paste the full URL.

### Output

```json
{
    "type": "comment",
    "postId": "t3_1xisjeh",
    "commentId": "t1_19rue7iqh2me8",
    "subreddit": "shopify",
    "author": "No-Army6590",
    "postTitle": "Chargeback refunds?",
    "text": "No, don't refund. You've already lost the money and the chargeback fee...",
    "createdAt": "2026-10-29T19:00:39+00:00",
    "url": "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/19rue7iqh2me8/",
    "postUrl": "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/",
    "isDeleted": false,
    "sort": "confidence",
    "position": 3,
    "sortsFound": "confidence, new"
}
```

Every row has a `type` (`post`, `comment` or `error`), so one CSV holds the whole export and filters easily. Download the dataset as JSON, CSV, Excel, XML or HTML, or read it with the Apify API.

### Tips

- **About 500 comments per sort order.** Reddit's public feed returns at most ~500 comments of a post per request. Choosing several sort orders returns a different slice each time, and the Actor merges them without duplicates: in our test a 2,000-comment AskReddit thread gave 497 comments with *Best* alone and about 1,450 with six orders. Very large threads (5,000+ comments) can't be exported completely this way.
- **Big batches are slow on purpose.** Reddit allows about one feed request per IP address per minute. The Actor uses a fresh datacenter IP for every request, keeps at most 10 requests in flight, and when Reddit answers "too many requests" it waits for the reset time Reddit reports and retries on another IP. Expect roughly 20-30 requests a minute: 1,000 posts with one sort order take around 40-50 minutes, and each extra sort order adds the same again. Raise the run timeout for big lists.
- **Only new comments** keeps one small memory record per post in a key-value store in your own account. Use **Memory name** to keep separate memories for separate projects; saved tasks get their own memory automatically.
- `position` is the comment's place in the sort it was first found in, so sorting by it rebuilds Reddit's order.

### FAQ

#### Do I need a Reddit account or API key?

No. The Actor reads the same public feeds any logged-out visitor can open.

#### Does it return upvotes or the reply tree?

No. The public feed has no scores, no depth and no parent ids, and this Actor doesn't log in to get them. You get the author, text, time and permalink of each comment.

#### Why did I get fewer comments than the post shows?

Reddit's comment count includes deleted and removed comments and comments past the ~500-per-sort limit. Add more sort orders to collect more.

#### What about private or quarantined subreddits?

They have no public feed. Those posts come back as free error rows.

#### Can I use it from an AI agent?

Yes. The Actor runs through the Apify API and Apify's MCP server, so an agent can pass post URLs and read back the dataset.

### Disclaimer

This Actor collects publicly available data only. Comments can contain personal data: you are responsible for using the results in line with Reddit's terms and with data-protection laws such as the GDPR. If you are unsure, consult a lawyer.

# Actor input Schema

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

Posts to export. Full post URLs (https://www.reddit.com/r/<subreddit>/comments/<id>/...), old.reddit.com links, redd.it short links or bare post ids (1xisjeh). A comment link exports that comment and its replies. Share links (/r/<sub>/s/...) are not supported: open them once and paste the full URL. Up to 2,000 posts per run.

## `sorts` (type: `array`):

Reddit returns at most about 500 comments per post for each sort order. Pick several orders to collect more of a big thread: comments are merged and never returned twice. Each extra order is one more request per post (slower), not a higher price per comment. 'Best' is Reddit's default order.

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

Stop each post after this many comments. 0 = as many as the chosen sort orders return (up to 3,000).

## `onlyNew` (type: `boolean`):

Remember which comments were already returned (in a key-value store in your own Apify account) and return only comments added since the last run. Use it on a schedule to follow a thread. Comments already returned are free; each post read still counts as one post.

## `memoryName` (type: `string`):

With 'Only new comments': keep separate memories for different lists or projects. Runs of a saved task get their own memory automatically.

## `includeDeleted` (type: `boolean`):

Keep \[deleted] and \[removed] comments (they hold their place in the thread but have no author or text).

## `proxyConfiguration` (type: `object`):

Apify datacenter proxy, included in the price. Reddit allows about one request per IP per minute, so every request uses a new IP. Residential proxy is not used. Free Apify plan: up to 300 comments per run.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.reddit.com/r/AskReddit/comments/1xe3r5l/teachers_of_reddit_has_gen_alpha_really_speedrun/",
    "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/"
  ],
  "sorts": [
    "confidence"
  ],
  "maxCommentsPerPost": 500,
  "onlyNew": false,
  "includeDeleted": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

# 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/1xe3r5l/teachers_of_reddit_has_gen_alpha_really_speedrun/",
        "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/reddit-post-comments-export").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/1xe3r5l/teachers_of_reddit_has_gen_alpha_really_speedrun/",
        "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/reddit-post-comments-export").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/1xe3r5l/teachers_of_reddit_has_gen_alpha_really_speedrun/",
    "https://www.reddit.com/r/shopify/comments/1xisjeh/chargeback_refunds/"
  ]
}' |
apify call tenfoldfleet/reddit-post-comments-export --silent --output-dataset

```

## MCP server setup

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

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/YMLfX4Lt0YvxSTgZD/builds/nCKvU9rvUCGgdddSv/openapi.json
