Reddit Scraper - Posts, Comments, Search & Subreddits

Export public Reddit posts and comments from subreddit, user, search, post, comment, and short-link URLs for social listening, lead research, AI datasets, and alerts.

Data fields

FieldTypeDescription
typestringWhether this row is a Reddit post or comment.
idstring | nullPublic Reddit post or comment ID.
thingIdstring | nullReddit fullname such as t3_post or t1_comment.
subredditstring | nullSubreddit name when exposed by the public feed.
titlestring | nullPost title; null for comment rows.
textstring | nullPublic self-post text when present in RSS.
selfTextstring | nullBackward-compatible alias for post text.
bodystring | nullPublic comment text; null for post rows.

Input preview

urlsReddit URLs
searchQuerySearch query
searchSubredditSearch subreddit
sortSort order
timeFilterTime filter
maxPostsPerSourceMaximum posts per source

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Scrape public Reddit posts, subreddit feeds, keyword search results, user feeds, URLs, and optional comments.

Use this Actor to export public Reddit discussion data for social listening, market research, community monitoring, AI summaries, lead research, content analysis, and alerts. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Reddit source coverage: Scrape subreddit listings, user pages, search results, direct post URLs, and comment threads where publicly available.
  • Posts and comments: Save post rows and optionally collect public comments for each post.
  • Search workflows: Search all Reddit or search inside one subreddit with sort and time filters.
  • Monitoring ready: Schedule recurring subreddit, keyword, or URL checks for social listening and alerts.
  • API export: Send Reddit rows to spreadsheets, BI tools, databases, summaries, or AI agents.

What can it do?

Reddit Scraper extracts public Reddit listing, search, post, and comment data and saves structured dataset rows.

  • Scrape subreddits and URLs: Add subreddit pages, user pages, search pages, or direct post URLs.
  • Run keyword searches: Use searchQuery, searchSubreddit, sort, and timeFilter.
  • Collect comments: Enable comments and cap them with maxCommentsPerPost.
  • Control reliability: Use retry, pacing, and proxy settings for larger runs.
  • Export repeatable datasets: Use Apify downloads, API calls, schedules, webhooks, and integrations.

Common workflows

  • Social listening: Track mentions of brands, products, competitors, issues, and topics.
  • Market research: Export public discussions for pain-point analysis, category research, and trend reports.
  • Community monitoring: Watch subreddits and search terms on a recurring schedule.
  • AI training and RAG datasets: Collect public posts and comments with available score, upvote ratio, timestamps, and thread structure for downstream filtering, labeling, embedding, fine-tuning, or retrieval workflows.
  • AI summaries: Feed posts and comments into summarization, classification, or sentiment workflows.
  • Content research: Find questions, objections, stories, and language for content planning.
  • Support and alerting: Trigger downstream workflows when new posts match a query.

Build a Reddit dataset for AI training or RAG

Use Reddit Scraper as the collection layer for a public-discussion dataset. It extracts post and comment text plus available engagement and thread fields; your downstream pipeline controls quality thresholds, labels, embeddings, storage, and model use.

  1. Choose focused subreddits, keyword searches, or post URLs.
  2. Set sort and timeFilter; enable includeComments when replies matter.
  3. Keep score, upvoteRatio, numComments, parentId, and depth alongside the text so downstream jobs can rank or reconstruct context.
  4. Export JSON or use the Dataset API to filter, deduplicate, classify, embed, and load records into your vector store or training pipeline.
  5. For continuously refreshed post candidates, use Reddit Post Monitor Lite with scheduled runs and cross-run deduplication, then send selected post URLs back to Reddit Scraper when comments are needed.

Important: this Actor does not score training quality, label reactions, generate embeddings, fine-tune models, or write to a vector database by itself. Reddit scores can change, and popularity is not a substitute for relevance, consent, safety, or bias review. Process public content only where your use is lawful and consistent with applicable terms.

Example: collect high-signal posts and comments

{
  "urls": ["https://www.reddit.com/r/MachineLearning/top/?t=year"],
  "sort": "top",
  "timeFilter": "year",
  "maxPostsPerSource": 100,
  "includeComments": true,
  "maxCommentsPerPost": 50,
  "commentContextDepth": 2
}

This preserves available Reddit engagement metadata for downstream ranking; it does not guarantee that every item has a score or that the resulting data is suitable for training.

What data can you collect?

The Actor returns public Reddit post rows and, when enabled, comment rows.

Field Description
type Row type, such as post or comment
id Reddit item identifier
subreddit Subreddit name
author Public Reddit username when available
title Post title
text Post or comment text
url External URL or Reddit URL
permalink Reddit permalink
createdAt Public creation timestamp
score Public score when available
numComments Public comment count for posts
upvoteRatio Upvote ratio when available
flair Post flair when available
parentId Parent post or comment ID for comments
depth Comment depth when available
sourceUrl Input or resolved Reddit source URL
scrapedAt Timestamp when the row was saved

Example input

{
  "urls": ["https://www.reddit.com/r/apify/"],
  "searchQuery": "web scraping",
  "sort": "new",
  "timeFilter": "week",
  "maxPostsPerSource": 25,
  "includeComments": false
}

Example output

{
  "type": "post",
  "id": "abc123",
  "subreddit": "apify",
  "author": "example_user",
  "title": "Example Reddit post",
  "text": "Public Reddit post text...",
  "url": "https://www.reddit.com/r/apify/comments/abc123/example/",
  "permalink": "https://www.reddit.com/r/apify/comments/abc123/example/",
  "createdAt": "2026-07-03T10:00:00.000Z",
  "score": 42,
  "numComments": 8,
  "sourceUrl": "https://www.reddit.com/r/apify/",
  "scrapedAt": "2026-07-03T12:00:00.000Z"
}

How to run it

  1. Open the Actor on Apify.
  2. Add Reddit URLs, a search query, or both.
  3. Choose sort, time filter, and limits.
  4. Decide whether to include comments.
  5. Start the run and export the dataset.

Search tips

  • Start with posts only: Add comments after you verify the post search is relevant.
  • Use focused subreddits: Subreddit-specific searches usually produce cleaner monitoring datasets.
  • Limit comments carefully: Comment extraction can create many rows and higher costs.
  • Use pacing for stability: Larger runs benefit from moderate request pacing and retries.
  • Schedule narrow queries: Monitoring works best with specific keywords, subreddits, and time filters.

Limits and caveats

  • The Actor extracts publicly visible Reddit data only.
  • It does not access private communities, removed content, mod-only data, logged-in feeds, or quarantined content that requires login.
  • Scores and counts can be null or change after scraping.
  • Reddit may return fewer items than requested for narrow queries, private sources, or unavailable content.

API usage

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~reddit-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"searchQuery":"web scraping","sort":"new","timeFilter":"week","maxPostsPerSource":25}'

Node.js example:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/reddit-scraper').call({
  searchQuery: 'web scraping',
  sort: 'new',
  maxPostsPerSource: 25,
});
console.log(run.defaultDatasetId);
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/reddit-scraper').call(run_input={
    'searchQuery': 'web scraping',
    'sort': 'new',
    'maxPostsPerSource': 25,
})
print(run['defaultDatasetId'])

MCP and AI agents

This Actor can be used through the official Apify MCP server at https://mcp.apify.com.

For Claude CLI, add the focused single-Actor tool:

claude mcp add apify-reddit-scraper -- npx -y mcp-remote https://mcp.apify.com?tools=fetch_cat/reddit-scraper

For JSON-based MCP clients, use:

{
  "mcpServers": {
    "apify-reddit-scraper": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.apify.com?tools=fetch_cat/reddit-scraper"]
    }
  }
}

Example prompts:

  • "Run Reddit Scraper for r/apify newest posts and summarize the top discussions."
  • "Collect 10 Reddit posts about web scraping with comments enabled and return a CSV link."
  • "Monitor this Reddit thread URL and list the first public comments you can retrieve."

Use the same JSON keys shown in the input configuration table, such as urls, searchQuery, searchSubreddit, maxPostsPerSource, includeComments, and maxCommentsPerPost.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses content lookup inputs and public posts, profiles, videos, comments, or channel metadata needed for the requested output to produce the output dataset and sends requests to public Reddit pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

Common questions

Questions and answers reused from the canonical actor README.

Does this Actor need Reddit API credentials?

No. It targets public Reddit pages and public discussion data.

Can it scrape private communities?

No. Private, restricted, quarantined, or login-gated content is outside this Actor's public-data scope.

Can it collect every comment in a large thread?

Not always. Reddit can limit or block the public routes available to a run. The Actor returns bounded public comments when reachable, includes parent/depth fields when Reddit exposes them, and uses maxCommentsPerPost to control scope, cost, and reliability.

Can I export to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, HTML, or accessed through the API.