# Reddit Scraper - Posts, Comments & 20 Filters (`parseforge/reddit-posts-comments-scraper`) Actor

Reads Reddit posts from subreddits, users, searches or post URLs, with comment threads as an option. Filters cover sort, time range, minimum score and comments, flair, domain and NSFW. 41 fields per post: title, text, author, score, upvote ratio, comments, awards, flair, media, crossposts and edits.

- **URL**: https://apify.com/parseforge/reddit-posts-comments-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 1,225 total users, 205 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.33 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Reddit Posts & Comments Scraper

**Scrape Reddit posts and comments from any subreddit, search query, user profile, or post URL, up to a million per run.** Every post comes with its score, comment count, full body text, and optional top comments. No login or API key. Export to CSV, JSON, Excel, or XML.

**No minimum charge:** you only pay for the results you get.

Reddit's official API needs an app registration, OAuth, and rate-limits you. This reads the public post and comment feeds directly, filtered by score, comments, flair, domain, or post type, and returns each match in one fixed schema. Scrape a single subreddit, search all of Reddit, pull a user's posts, or fetch every comment on a specific post.

| Who uses it | What they scrape Reddit for |
|---|---|
| Market researchers | Which topics a niche is discussing this week |
| Brand managers | What customers say about their product in relevant subreddits |
| Data scientists | Building a dataset of posts and comments for sentiment analysis |
| SEO specialists | Finding questions and pain points people post about a keyword |
| Journalists | Tracking breaking discussions and public reactions on Reddit |

### What it does

This Actor collects Reddit posts and comments by subreddit, search query, user profile, or direct post URL, and returns each one as a flat row.

- 🎯 **Five scraping modes:** subreddit, search, user, multi-subreddit, and comments from a specific post.
- 💬 **Comment enrichment:** optionally fetch top comments for each post, with configurable count per post.
- 🔄 **Sort and time filters:** hot, new, top, rising, controversial, relevance, or most commented, with time ranges from hour to all time.
- 🎛️ **Advanced filters:** minimum score, minimum comments, exact flair, domain, post type, and NSFW toggle.
- 📊 **Flat output:** every post and comment as a clean row, ready for CSV, JSON, Excel, or XML export.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Reddit data

**📈 Track topics and trends.**

A market researcher scrapes r/technology sorted by hot each morning to see which stories and product categories are gaining traction.

**🔍 Monitor brand mentions.**

A brand manager runs a search for the company name across all of Reddit, filtered by minimum score, to catch high-visibility feedback.

**🧠 Build sentiment datasets.**

A data scientist pulls posts and their top comments from r/AskReddit and r/worldnews, then exports JSON for a sentiment model.

**📝 Find content ideas.**

An SEO specialist scrapes questions from r/SEO and r/bigseo with the flair 'Question' to build a list of blog topics.

**🗞️ Gather public reactions.**

A journalist fetches all comments from a breaking news post URL to quote representative opinions and gauge the discussion.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrape public Reddit feeds without registering an app or dealing with OAuth. |
| **Up to 1,000,000 items** | Collect large datasets in a single run, limited only by your maxItems setting. |
| **Comments included** | Fetch top comments per post with a separate request and proxy rotation to avoid rate limits. |
| **Flexible input** | Use subreddit names, search terms, usernames, or post URLs, with multi-subreddit support. |
| **Fixed schema** | Every row has the same fields, so you can merge runs and build reliable pipelines. |

### How it compares

This Actor offers five scraping modes and advanced filters, while the competitors below focus on either basic extraction or enterprise-scale coverage.

| Feature | ParseForge | Reddit Scraper Lite | Reddit Scraper - Posts, Comments, Search & Subreddits | Reddit Scraper | Enterprise Grade |
|---|---|---|---|---|
| Scrape by subreddit | Yes | Yes | Yes | Yes |
| Scrape by search query | Yes | Not listed | Yes | Yes |
| Scrape by user profile | Yes | Yes | Yes | Yes |
| Scrape comments from a specific post | Yes | Not listed | Yes | Yes |
| Multi-subreddit mode | Yes | Not listed | Not listed | Not listed |
| Filter by minimum score and comments | Yes | Not listed | Not listed | Not listed |
| Filter by flair and domain | Yes | Not listed | Not listed | Not listed |

### Configure the run

Drive the Actor from subreddits, search queries, user profiles, and direct post URLs, alone or together, and filters run as each post is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "mode": "subreddit",
  "maxItems": 10,
  "subreddit": "technology",
  "sort": "hot",
  "timeRange": "day"
}
```

Only the popular results:

```json
{
  "mode": "subreddit",
  "maxItems": 200,
  "subreddit": "technology",
  "sort": "hot",
  "timeRange": "day",
  "minScore": 10
}
```

### Pricing

Pay-per-result: **$0.00149 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.15 |
| 1,000 results | $1.49 |
| 10,000 results | $14.90 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Reddit Posts & Comments Scraper](https://apify.com/parseforge/reddit-posts-comments-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Reddit through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/reddit-posts-comments-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your filters. Minimum score, minimum comments, flair, domain, or post type may be too restrictive. Also verify the subreddit name, search query, or username is spelled correctly and exists.

**Why is the run slow when I enable comments?**

Each post with comments requires a separate request. Reduce Comments Per Post or lower Maximum posts and comments to speed up the run.

**Why are some comments missing?**

The Actor fetches only the top comments up to the Comments Per Post limit. Deleted or removed comments are not available from Reddit's public feed.

**Why did I get fewer items than maxItems?**

Reddit may not have enough matching posts for your filters and sort order. Try broadening filters or using a different sort.

**Can I scrape a private subreddit?**

No. The Actor reads public feeds only. Private or quarantined subreddits are not accessible without authentication.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Reddit API key or login? | No. The Actor reads Reddit's public feeds directly, so you do not need to register an app, handle OAuth, or log in. |
| Can I scrape comments along with posts? | Yes. Enable Include Comments and set Comments Per Post to fetch the top comments for each post. Each post requires a separate request, so run time increases with the number of posts. |
| How do I scrape multiple subreddits at once? | Set the mode to Multi and enter a comma-separated list of subreddit names in the Subreddits List field, for example javascript, typescript, webdev. |
| Can I search all of Reddit for a keyword? | Yes. Set the mode to Search and enter your query in Search term for posts. Optionally restrict the search to one subreddit with Search Within Subreddit. |
| How do I get comments from a specific post? | Set the mode to Comments and provide either the full Post URL or the Post ID. The Actor extracts the post ID automatically and fetches all comments. |
| What filters are available? | You can filter by minimum score, minimum comments, exact flair text, domain, post type (text, link, image, video), and include or exclude NSFW posts. |
| What sort orders are supported? | For posts: hot, new, top, rising, controversial, relevance (search only), and comments. For comments: best, top, new, controversial, old, and Q\&A. |
| What is the maximum number of items I can scrape? | You can set Maximum posts and comments up to 1,000,000 per run. The Actor stops when it reaches that number or when Reddit has no more matching items. |
| Can I scrape NSFW content? | Yes, but it is off by default. Enable Include NSFW Posts to include posts marked as 18+. |
| What output formats are supported? | The dataset can be exported to CSV, JSON, Excel, or XML from the Apify platform. |
| Does this Actor handle Reddit rate limits? | Yes. When Include Comments is enabled, the Actor uses proxy rotation to avoid Reddit rate limits and keep the run stable. |
| Can I scrape a user's posts? | Yes. Set the mode to User and enter the username without the u/ prefix, for example spez. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

⭐ **Found this Actor useful?** [Leave a review](https://console.apify.com/actors/maHN1GuyMEabutUFh/reviews). It takes a minute and helps us keep it maintained.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Reddit, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `mode` (type: `string`):

Choose how to scrape Reddit:

- subreddit: Fetch posts from a single subreddit
- search: Search across all of Reddit
- user: Fetch posts by a specific user
- multi: Fetch from multiple subreddits at once
- comments: Fetch all comments from a specific post

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

Maximum number of posts and comments to collect per run.

## `subreddit` (type: `string`):

Subreddit name without the r/ prefix.

Examples: technology, AskReddit, worldnews, programming

## `subreddits` (type: `string`):

Comma-separated list of subreddits for multi mode.

Example: javascript, typescript, webdev, programming

## `searchQuery` (type: `string`):

Search query to find Reddit posts. Used in search mode.

Examples: web scraping, machine learning, best tools 2026

## `searchInSubreddit` (type: `string`):

Restrict search to a specific subreddit. Leave empty to search all of Reddit.

## `username` (type: `string`):

Reddit username without the u/ prefix.

Example: spez, AutoModerator

## `postUrl` (type: `string`):

Full Reddit post URL for comments mode. The post ID will be extracted automatically.

Example: https://www.reddit.com/r/technology/comments/abc123/post_title/

## `postId` (type: `string`):

Reddit post ID as an alternative to Post URL.

Example: abc123

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

How to sort posts:

- hot: Currently popular posts
- new: Most recent posts
- top: Highest scored posts (use with Time Range)
- rising: Posts gaining momentum
- controversial: Most debated posts
- relevance: Best match (search only)
- comments: Most commented

## `timeRange` (type: `string`):

Time range for top and controversial sort orders.

## `commentSort` (type: `string`):

Sort order for comments when using comments mode or Include Comments.

## `postType` (type: `string`):

Filter posts by type:

- all: All post types
- self: Text posts only
- link: Link posts only
- image: Image posts only
- video: Video posts only

## `minScore` (type: `integer`):

Only include posts with at least this many upvotes. Leave empty for no minimum.

## `minComments` (type: `integer`):

Only include posts with at least this many comments. Leave empty for no minimum.

## `flairFilter` (type: `string`):

Only include posts with this exact flair text.

Examples: Discussion, News, Tutorial, Question

## `domainFilter` (type: `string`):

Only include posts linking to this domain.

Examples: youtube.com, github.com, imgur.com

## `includeNsfw` (type: `boolean`):

Include posts marked as NSFW (Not Safe For Work / 18+)

## `includeComments` (type: `boolean`):

Fetch top comments for each post. Each post requires a separate API request. Uses proxy rotation to avoid Reddit rate limits.

## `commentsPerPost` (type: `integer`):

Maximum number of comments to fetch per post when Include Comments is enabled.

## Actor input object example

```json
{
  "mode": "subreddit",
  "maxItems": 10,
  "subreddit": "technology",
  "sort": "hot",
  "timeRange": "day",
  "commentSort": "top",
  "postType": "all",
  "includeNsfw": false,
  "includeComments": false,
  "commentsPerPost": 10
}
```

# Actor output Schema

## `posts` (type: `string`):

Complete dataset with all scraped Reddit posts including scores, comments, media URLs, and metadata

## `overview` (type: `string`):

Overview view of Reddit posts with key fields displayed in a table format

# 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 = {
    "mode": "subreddit",
    "maxItems": 10,
    "subreddit": "technology",
    "sort": "hot",
    "timeRange": "day"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/reddit-posts-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 = {
    "mode": "subreddit",
    "maxItems": 10,
    "subreddit": "technology",
    "sort": "hot",
    "timeRange": "day",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/reddit-posts-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 '{
  "mode": "subreddit",
  "maxItems": 10,
  "subreddit": "technology",
  "sort": "hot",
  "timeRange": "day"
}' |
apify call parseforge/reddit-posts-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/reddit-posts-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/maHN1GuyMEabutUFh/builds/Foh2Z8ghY6L8AK0Kb/openapi.json
