Reddit Scraper Pro avatar

Reddit Scraper Pro

Pricing

Pay per event

Go to Apify Store
Reddit Scraper Pro

Reddit Scraper Pro

Reddit scraper for automation workflows. Track keywords across Reddit or inside chosen communities, monitor subreddits, score posts with AFINN sentiment and pull full comment threads. Flat JSON - title, body, author, subreddit, score, flair, timestamps, matched keywords - for n8n and Zapier.

Pricing

Pay per event

Rating

5.0

(1)

Developer

WebDataLabs

WebDataLabs

Maintained by Community

Actor stats

0

Bookmarked

167

Total users

14

Monthly active users

2 days ago

Last modified

Share

Reddit Scraper Pro - Posts, Comments & Sentiment Analysis

High-performance Reddit scraper (99%+ success rate) for automation workflows. Monitor subreddits, track keywords with sentiment analysis, scrape comments, and integrate with n8n/Zapier for powerful automation.

Apify Actor

🆚 Why Choose Reddit Scraper Pro?

FeatureReddit Scraper Protrudax/reddit-scraperOther Reddit Scrapers
Success Rate99%+69-92%70-90%
User Rating4.5+ (target)2.50-2.662.5-3.5
State Management✅ No duplicates across runs❌ No❌ No
Webhook Alerts✅ Built-in n8n/Zapier❌ No⚠️ Limited
Sentiment Analysis✅ AFINN-165 NLP❌ No❌ No
Comment Scraping✅ With depth control⚠️ Limited⚠️ Limited
Pricing Model✅ Pay-per-post (predictable)⚠️ Varied⚠️ Compute-time
Scheduled Runs✅ Optimized for automation⚠️ Limited⚠️ Limited

✨ Key Features

  • 🎯 99%+ Success Rate - Smart rate limiting, exponential backoff, residential proxy support
  • 🔄 State Management - No duplicate posts across scheduled runs (tracks 10k recent post IDs)
  • 📊 Sentiment Analysis - Built-in NLP using AFINN-165 (positive/negative/neutral classification)
  • 🔔 Webhook Integration - Direct n8n/Zapier support for real-time alerts
  • 💬 Comment Scraping - Configurable depth (0-5 levels) for deep analysis
  • 💰 Predictable Pricing - Transparent pay-per-post model (see current pricing in the Apify Console when starting a run)
  • ⚡ Incremental Scraping - Only fetch new posts since last run for efficient scheduled automation

🎯 Use Cases

Brand Monitoring with Sentiment Analysis

{
"searchMode": "keyword",
"keywords": ["YourBrand", "YourProduct"],
"subreddits": ["webdev", "SaaS"],
"analyzeSentiment": true,
"webhookUrl": "https://n8n.io/webhook/reddit-alerts",
"maxAgeHours": 24
}

Result: Daily alerts when your brand is mentioned, with sentiment context (positive/negative/neutral).

Subreddit Monitoring for New Posts

{
"searchMode": "subreddit",
"subreddits": ["webdev", "programming", "javascript"],
"maxItemsPerSubreddit": 100,
"minUpvotes": 10,
"maxAgeHours": 24
}

Result: Daily scrape of high-quality posts (10+ upvotes) from last 24 hours. Schedule every 24 hours.

Competitor Tracking Across Reddit

{
"searchMode": "keyword",
"keywords": ["Competitor1", "Competitor2"],
"subreddits": ["webdev", "SaaS", "startups"],
"minUpvotes": 5,
"analyzeSentiment": true,
"includeComments": true,
"commentDepth": 1
}

Result: Track competitor mentions with engagement metrics, sentiment, and top-level comments.

Trend Analysis with Comments

{
"searchMode": "keyword",
"keywords": ["AI", "ChatGPT", "GPT-4", "Claude"],
"maxItemsPerSubreddit": 500,
"analyzeSentiment": true,
"includeComments": true,
"commentDepth": 2
}

Result: Deep analysis of AI trends with comment discussions (2 levels deep).

📥 Input Configuration

Quick Start (Default Settings)

Just click "Start" to test with default configuration:

{
"searchMode": "keyword",
"keywords": ["AI", "ChatGPT", "web scraping"],
"subreddits": ["webdev", "programming", "technology"],
"maxItemsPerSubreddit": 50
}

Search Modes

1. Keyword Search (recommended for automation) Search all of Reddit (or specific subreddits) for keywords:

{
"searchMode": "keyword",
"keywords": ["Apify", "web scraping"],
"subreddits": ["webdev", "programming"]
}

Leave subreddits empty to search all of Reddit.

2. Subreddit Monitoring (subreddits is required in this mode) Work inside specific communities:

{
"searchMode": "subreddit",
"subreddits": ["webdev", "javascript"],
"keywords": ["Apify"]
}
  • With keywords - each community is searched for your keywords through Reddit's own search, which matches post titles and post bodies. Multi-word keywords are searched as a phrase. Results come back newest-first.
  • Without keywords - you simply get the newest posts of each community.
  • keywords_matched on every row tells you which of your keywords literally appear in that post; an empty list means Reddit's search returned it as a related match.

Which mode should I use?

Pick Keyword Search when you care about a topic or brand wherever it appears; pick Subreddit Monitoring when you care about everything happening in specific communities.

Your goalModeExample input
Every mention of your brand across RedditKeywordkeywords: ["YourBrand"], subreddits: []
A keyword, but only inside certain subredditsKeywordkeywords: ["ChatGPT"], subreddits: ["programming"]
Posts about a phrase inside certain communitiesSubredditsubreddits: ["webdev"], keywords: ["dark mode bug"]
Everything new in your communitiesSubredditsubreddits: ["django", "flask"]

Essential Parameters

ParameterTypeDefaultDescription
searchModeenum"keyword"keyword or subreddit
keywordsarray["AI", "ChatGPT", ...]Keywords to search/filter
subredditsarray["webdev", ...]Subreddits to monitor (without "r/")
maxItemsPerSubredditinteger50Hard cap on posts fetched, saved and charged — per subreddit in subreddit mode, per keyword x subreddit in keyword mode (1-10,000)
searchSortenum"relevance"Keyword-mode sort only; subreddit mode always fetches newest-first
minUpvotesinteger0Minimum upvotes filter (0 = keep everything)
maxAgeHoursinteger0Max post age in hours (0 = no age limit; 168 = 7 days)
includeCommentsbooleanfalseFetch comments (one extra request per saved post)
commentDepthinteger1Comment reply depth (0 = top-level only, up to 5)
analyzeSentimentbooleantrueEnable sentiment analysis
dedupeAcrossRunsbooleanfalseRemember delivered posts between scheduled runs and never re-charge them
webhookUrlstring-POST results to this URL

Advanced Filtering

Control data quality with filters:

{
"minUpvotes": 10,
"maxAgeHours": 24,
"includeComments": true,
"commentDepth": 2
}

📤 Output Schema

Each post includes comprehensive metadata:

{
"id": "01HQZX9K3P2VQWE8RTGBNM4567",
"platform": "reddit",
"type": "post",
"reddit_id": "abc123",
"subreddit": "webdev",
"subreddit_prefixed": "r/webdev",
"title": "Amazing new web scraping tool",
"body": "Just discovered Apify and it's incredible...",
"author": "username",
"url": "https://apify.com",
"reddit_url": "https://www.reddit.com/r/webdev/comments/...",
"score": 156,
"upvotes": 180,
"num_comments": 42,
"gilded": 2,
"sentiment_score": 5.2,
"sentiment_comparative": 0.35,
"sentiment_label": "positive",
"keywords_matched": ["Apify"],
"created_utc": "2025-10-16T10:00:00Z",
"flair": "Discussion",
"comments": [...],
"ingest_meta": {
"first_seen_at": "2025-10-16T11:00:00Z",
"scrape_run_id": "...",
"actor_run_id": "..."
}
}

Sentiment Analysis Fields

  • sentiment_score: AFINN score (-5 to +5, 0 = neutral)
  • sentiment_comparative: Normalized score per word
  • sentiment_label: positive, negative, or neutral

Example Sentiment Interpretation:

  • sentiment_score: 5.2, label: "positive" → Very positive post
  • sentiment_score: -3.8, label: "negative" → Negative sentiment
  • sentiment_score: 0.5, label: "neutral" → Neutral/mixed

📊 Dataset Views in Apify Console

The actor provides 3 optimized views:

  1. Overview - Main view with 8 key fields (title, subreddit, author, score, comments, sentiment, date, link)
  2. Engagement & Sentiment - Combined metrics for deeper insights (score, upvote ratio, awards, sentiment)
  3. Full Details - Complete dataset with all 43 fields for advanced analysis

🔗 Webhook Integration

n8n Workflow Example

  1. Create webhook trigger in n8n
  2. Configure Reddit Scraper Pro:
{
"searchMode": "keyword",
"keywords": ["YourBrand"],
"webhookUrl": "https://your-n8n.com/webhook/reddit",
"analyzeSentiment": true
}
  1. Process in n8n:
    • Filter by sentiment: sentiment_label === "negative"
    • Send negative mentions to Slack/email
    • Store all results in Airtable/Google Sheets
    • Create follow-up tasks in ClickUp/Asana

Zapier Workflow Example

Use Zapier's "Webhook by Zapier" trigger with the webhookUrl configuration.

Webhook Payload (Batch Mode)

Results are sent at the end of each run:

{
"type": "batch",
"timestamp": "2025-10-16T11:00:00Z",
"runId": "abc123",
"posts": [
{ /* post 1 */ },
{ /* post 2 */ }
],
"stats": {
"totalPosts": 42,
"totalComments": 180,
"keywordMatches": 38,
"sentimentDistribution": {
"positive": 15,
"negative": 8,
"neutral": 19
}
}
}

🔄 Incremental Scraping (opt-in)

Set dedupeAcrossRuns: true to make scheduled monitoring incremental:

  • No duplicates - posts already delivered by an earlier run are skipped and not charged again
  • Scoped per target - state is keyed by your search mode + subreddits + keywords, so different monitors do not interfere
  • Bounded - the last 10,000 post IDs are remembered

How it works:

  1. First run: saves the delivered post IDs
  2. Next run with the same subreddits/keywords: skips the ones already delivered
  3. A repeat run can therefore legitimately return zero new posts — the run log and the OUTPUT record say so explicitly

Leave it off (the default) for one-off runs where you want the full result set every time.

🧾 Run outcome record (OUTPUT)

Every run writes an OUTPUT record to its key-value store with status (SUCCESS / PARTIAL / NO_RESULTS / FAILED), how many posts were fetched vs actually saved, per-target results, and exactly why anything was dropped (too old, below the upvote floor, duplicate). A run that finds nothing says which input found nothing and why — it never reports success over an empty dataset.

💰 Pricing

Pay-Per-Event Model: Transparent pay-per-post pricing

You only pay for posts successfully scraped. See current pricing in the Apify Console when starting a run.

Plus: Apify platform costs:

  • Compute time (minimal for standard runs)
  • Residential proxy bandwidth (required for reliability)

Cost Optimization Tips:

  • Use maxItemsPerSubreddit to limit scraping
  • Set maxAgeHours to 24 for daily monitoring
  • Use minUpvotes filter (focus on quality content)
  • Disable includeComments unless needed (significantly reduces runtime)

🛡️ Built-in Anti-Blocking

Reddit blocks datacenter traffic, so this scraper automatically routes through residential proxies for a high success rate — no setup needed on your side.

Cost: Residential proxy bandwidth is billed separately by Apify (see current proxy pricing in the Apify Console).

🕐 Rate Limiting & Reliability

Built for stable, hands-off automation:

  • Smart request pacing to keep runs reliable
  • Automatic retries with exponential backoff on transient errors
  • Residential proxy rotation for high success rates

Best Practices:

  • Don't run multiple instances simultaneously
  • Schedule runs at least 10 minutes apart
  • Use state management to avoid reprocessing

Brand Monitoring

  • Frequency: Every 6-12 hours
  • Config: maxAgeHours: 12, analyzeSentiment: true, webhookUrl: "..."

Subreddit Monitoring

  • Frequency: Daily (every 24 hours)
  • Config: maxAgeHours: 24, minUpvotes: 5

Trend Analysis

  • Frequency: Weekly
  • Config: maxAgeHours: 168, maxItemsPerSubreddit: 500, includeComments: true

Competitor Tracking

  • Frequency: Daily
  • Config: maxAgeHours: 24, analyzeSentiment: true, webhookUrl: "..."

❓ FAQ

How do I scrape Reddit without an API key?

This scraper accesses public Reddit data directly — no authentication, API keys, or Reddit account required.

Can I use this with n8n or Zapier?

Yes! Enable the webhookUrl parameter to send results directly to n8n, Zapier, or Make. The scraper posts a JSON payload with all results and stats at the end of each run.

How accurate is the sentiment analysis?

The sentiment analysis uses AFINN-165, a research-validated lexicon with ~2,500 words. Accuracy is typically 70-80% for social media text. Best for detecting overall positive/negative/neutral trends rather than nuanced emotion.

What's the difference between keyword and subreddit mode?

  • Keyword mode searches all of Reddit (or specific subreddits) for posts matching keywords
  • Subreddit mode monitors specific subreddits and optionally filters by keywords

For brand monitoring, use keyword mode. For community monitoring, use subreddit mode.

Can I schedule this to run automatically?

Yes! Use Apify's built-in scheduler or integrate with n8n/Zapier for custom schedules. We recommend running every 6-12 hours for brand monitoring, or daily for subreddit monitoring.

Will I get duplicate posts across runs?

No! The state management system tracks the last 10,000 post IDs seen. On subsequent runs, already-seen posts are automatically skipped. This is critical for scheduled automation.

Do I need to configure proxies?

No — the scraper uses residential proxies automatically. Reddit blocks datacenter IPs, so residential routing is built in for reliability (proxy bandwidth is billed separately by Apify).

How many posts can I scrape per run?

Technically unlimited, but Reddit's API typically returns ~1,000 posts per subreddit. Use maxItemsPerSubreddit to control volume and cost.

Can I scrape private subreddits?

No, the unofficial JSON API only accesses public subreddits. Private/quarantined subreddits require authentication via Reddit's official API.

What format is the output?

JSON by default, but you can export to CSV, Excel, HTML, or XML. The output is flat (not deeply nested) for easy import to Google Sheets, databases, or automation tools.

🛠️ API Integration

Using Apify API (cURL)

curl -X POST https://api.apify.com/v2/acts/YOUR_USERNAME~reddit-scraper-pro/runs \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchMode": "keyword",
"keywords": ["Apify"],
"maxItemsPerSubreddit": 50
}'

Using Apify JavaScript Client

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_USERNAME/reddit-scraper-pro').call({
searchMode: 'keyword',
keywords: ['Apify'],
maxItemsPerSubreddit: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using Apify Python Client

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('YOUR_USERNAME/reddit-scraper-pro').call(
run_input={
'searchMode': 'keyword',
'keywords': ['Apify'],
'maxItemsPerSubreddit': 50,
}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

🧪 Testing & Development

Quick Test with Default Input

Just click "Start" or use apify call with no input:

$apify call YOUR_USERNAME/reddit-scraper-pro

Local Development

cd reddit-scraper-pro
npm install
npm run build
# Test with pay-per-event billing
ACTOR_TEST_PAY_PER_EVENT=true ACTOR_USE_CHARGING_LOG_DATASET=true npm run dev

📝 Limitations

  • Rate Limits: Reddit enforces ~60 requests/minute (handled automatically)
  • Historical Data: Limited by Reddit's API (typically ~1,000 posts per subreddit)
  • Private Subreddits: Cannot access private/quarantined subreddits
  • Deleted Content: Cannot retrieve deleted posts/comments
  • Residential Proxies Required: Datacenter IPs are blocked by Reddit
  • Public Data Only: Accesses publicly available Reddit content; may need updates if Reddit changes its site

🤝 Support & Contact

  • Email: via Apify
  • Issues: Report bugs or request features via GitHub Issues
  • Documentation: This README + inline code comments

💡 Success Story

Use Case: "Alert me when r/webdev mentions 'Apify'"

Setup:

{
"searchMode": "keyword",
"keywords": ["Apify"],
"subreddits": ["webdev"],
"webhookUrl": "https://n8n.io/webhook/reddit-alerts",
"analyzeSentiment": true,
"maxAgeHours": 12
}

Schedule: Every 6 hours

Result: Instant Slack notifications when Apify is mentioned in r/webdev, with sentiment context (positive/negative/neutral). Perfect for brand monitoring and community engagement.


🔗 Explore More of Our Actors

💬 Social Media & Community

ActorDescription
Discord Scraper ProExtract Discord messages and chat history for community insights
YouTube Comments HarvesterComprehensive YouTube comments scraper with channel-wide enumeration
Alt Network BundleScrape Bluesky and Mastodon posts for alternative social media research

🛒 E-commerce & Brand Monitoring

ActorDescription
Shopify Scraper ProExtract Shopify product data for competitor and brand monitoring
Etsy Scraper ProFast Etsy product scraper with ratings and reviews
Amazon Reviews ScraperExtract Amazon customer reviews for sentiment analysis

🏢 Business Intelligence

ActorDescription
Indeed Salary AnalyzerGet salary data for compensation benchmarking and market research
Crunchbase ScraperExtract company data and funding information for business intelligence

🏷️ SEO Keywords

Reddit scraper, Reddit data extraction, scrape Reddit posts, Reddit API alternative, Reddit comment scraper, Reddit sentiment analysis, Reddit brand monitoring, Reddit automation, extract Reddit data, Reddit web scraping, Reddit post scraper, Reddit data mining, Reddit competitor analysis, Reddit keyword tracking, Reddit subreddit monitor, how to scrape Reddit, Reddit market research, Reddit trend analysis, Reddit automation tool, n8n Reddit integration, Zapier Reddit scraper, Make Reddit automation


Built with ❤️ by WebDataLabs | Powered by Apify | LICENSE


📬 Custom Solutions & Enterprise

Need a custom data feed, modified output format, or enterprise integration?

Contact: Furkanc58@gmail.com

I offer:

  • Daily/weekly data feeds (Snowflake, S3, BigQuery, Google Sheets)
  • Custom scrapers for platforms not yet covered
  • White-label solutions for agencies
  • Priority support and SLAs

Response within 24-48 hours.

Leave a review

Is this actor saving you time? A quick review on the Store helps other people find it — and tells us which fields to add next. Rate this actor →

This actor is a general-purpose tool for analyzing publicly accessible web data. The user bears sole responsibility for ensuring their specific use complies with:

  • Applicable laws (GDPR/DSGVO, copyright law)
  • The target website's Terms of Service
  • Apify's Terms of Service

The provider (webdatalabs) expressly disclaims liability for any unauthorized or unlawful use. By using this actor, the user agrees to indemnify the provider against any third-party claims arising from their use of the data.


This tool is not affiliated with Reddit. All trademarks belong to their respective owners.