Reddit Comment Scraper Pro | No Login | No Cookie avatar

Reddit Comment Scraper Pro | No Login | No Cookie

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Reddit Comment Scraper Pro | No Login | No Cookie

Reddit Comment Scraper Pro | No Login | No Cookie

Scrape Reddit comments at scale with zero browser overhead. Extracts nested comment trees, deep replies, sentiment scores, and media URLs in bulk. 10x faster and ultra-low memory usage (<150MB). Perfect for AI training & NLP sentiment.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

REXREUS D.O

REXREUS D.O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Reddit Comment Scraper

High speed bulk Reddit comment scraping and sentiment analysis without browser bloat

Extract Reddit comment trees, discussion hierarchies, and sentiment analysis at massive scale.

Pure HTTP Tree Walker · Crawlee & got-scraping · Zero Browser Overhead (<150MB RAM) · Apify Residential Proxy Rotation

Quick Start Apify Node.js TypeScript Crawlee


⚡ Why this Actor?

FeatureWhat you get
Pure HTTP Engine (No Browser)10x faster and 90% cheaper than browser scrapers (consumes <150MB RAM vs 1GB+ with Playwright).
Anti-Bot TLS FingerprintingUses got-scraping to negotiate genuine browser TLS Client Hello (JA3/JA4) and HTTP/2 headers to bypass Fastly CDN blocks.
Residential Proxy Auto-RotationSeamlessly integrates with Apify RESIDENTIAL proxies; retires session and swaps to a clean IP immediately upon 429/403.
Deep Collapsed CommentsAutomatically calls POST /api/morechildren in batches of 100 to extract deeply buried comments often missed by basic scrapers.
Full Thread HierarchyOutputs threadId (root comment), ancestorIds path array, and depth for zero-friction tree reconstruction in Pandas or BI tools.
Lightweight Sentiment AnalysisEvaluates in-memory polarity scores (score, comparative, label) for every comment at <0.01ms latency without expensive AI tokens.
Link & Media ExtractorParses markdown hyperlinks, images, videos, and embedded GIFs (i.redd.it, Giphy, Imgur).
Multi-Target IngestionSupports direct post URLs, shortlinks (redd.it), raw post IDs, or whole subreddits.

🚀 Quick start

Apify Console

  1. Open Reddit Comment Scraper in the Apify Store and click Try for free or Start.
  2. Paste target Reddit post URLs or subreddit names in the input form.
  3. Click Save & Run.
  4. Download structured results in JSON, CSV, or Excel from Storage → Dataset.

🔄 How it works

Input (URLs / Subreddits / Post IDs)
[Input Normalizer] ──► Deduplicate IDs & extract endpoints
[Crawlee HttpCrawler] (got-scraping + SessionPool + Apify Residential Proxies)
├──► GET /comments/{id}.json?raw_json=1&limit=500
│ │
│ ├─► [Comment Tree Parser] ──► Extract authors, body, scores, depth
│ │
│ ├─► [Sentiment Service] ──► In-memory polarity score & label
│ │
│ └─► [Hierarchy Mapper] ──► Calculate threadId & ancestorIds
├──► POST /api/morechildren (Unfold collapsed comments in 100-ID batches)
[Streaming Dataset Output] ──► Actor.pushData() in 100-record chunks

📥 Input Reference

{
"startUrls": [
{ "url": "https://www.reddit.com/r/technology/comments/1i3b62l/openai_operator_live_demo/" }
],
"sort": "top",
"maxCommentsPerPost": 100,
"maxDepth": 10,
"expandMoreComments": true,
"enableSentiment": true,
"extractMedia": true,
"minScore": 0,
"skipDeleted": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeDefaultDescription
startUrlsArray[]List of target Reddit post URLs.
subredditsArray[]Subreddit names to fetch latest posts from (e.g. technology, webdev).
postIdsArray[]Raw Reddit post IDs (e.g. 1i3b62l).
postsPerSubredditInteger10Number of recent posts to crawl when subreddits are provided.
sortString"confidence"Comment sort: confidence (Best), top, new, controversial, old, qa.
maxCommentsPerPostInteger100Max comments to scrape per post (0 = all reachable).
maxDepthInteger10Max thread reply depth.
expandMoreCommentsBooleantrueWhen true, fetches collapsed "Load more" comments.
minScoreInteger0Excludes comments below this upvote threshold.
skipDeletedBooleantrueExcludes [deleted] and [removed] comments.
keywordFilterArray[]Keeps only comments containing specified terms.
dateFrom / dateToStringnullISO date filter range (YYYY-MM-DD).
enableSentimentBooleantrueComputes in-memory sentiment scores and labels.
extractMediaBooleantrueParses hyperlinks and media URLs from markdown.
proxyConfigurationObjectRESIDENTIALApify Residential proxy configuration.
maxConcurrencyInteger15Concurrency limit (10–30 recommended).

📤 Output Contract

Every scraped record pushed to the dataset adheres to this structure:

{
"id": "t1_k9z1abc",
"postId": "t3_1i3b62l",
"postTitle": "OpenAI Operator Live Demo",
"postUrl": "https://www.reddit.com/r/technology/comments/1i3b62l/openai_operator_live_demo/",
"postAuthor": "tech_editor",
"subreddit": "technology",
"subredditId": "t5_2qh16",
"parentId": "t1_k9y0xyz",
"threadId": "t1_k9top1",
"ancestorIds": ["t1_k9top1", "t1_k9y0xyz"],
"author": "dev_guru",
"authorFullname": "t2_8q4l1",
"authorFlairText": "Software Engineer",
"body": "This is great progress! The speed and accuracy are impressive: https://example.com/demo",
"bodyHtml": "<p>This is great progress! The speed and accuracy are impressive: <a href=\"https://example.com/demo\">https://example.com/demo</a></p>",
"score": 45,
"createdUtc": 1772755200,
"createdAtIso": "2026-03-06T00:00:00.000Z",
"permalink": "/r/technology/comments/1i3b62l/openai_operator_live_demo/k9z1abc/",
"url": "https://www.reddit.com/r/technology/comments/1i3b62l/openai_operator_live_demo/k9z1abc/",
"isSubmitter": false,
"distinguished": null,
"stickied": false,
"depth": 2,
"replyCount": 3,
"edited": false,
"wordCount": 12,
"charCount": 92,
"sentiment": {
"score": 6,
"comparative": 0.5,
"label": "positive"
},
"extractedUrls": ["https://example.com/demo"],
"mediaUrls": []
}

💰 Cost, Limits & Proxies

MetricSpecificationNote
Container Memory512 MBSufficient for high-concurrency HTTP streaming.
Concurrency15 – 30 workersAdjust via maxConcurrency.
Speed30 – 60 comments/secVaries based on residential proxy latency.
Compute Cost~$0.01 – $0.02Per 10,000 comments scraped.
Proxy Bandwidth~15 MBPer 10,000 comments (~$0.15 on Apify Residential proxy).
Proxy TypeApify RESIDENTIALStrongly recommended. Datacenter IPs are blocked by Reddit.

🍳 Recipes

Recipe 1: Single Thread Deep Dive

{
"startUrls": [{ "url": "https://www.reddit.com/r/webdev/comments/17abcde/slug/" }],
"maxCommentsPerPost": 0,
"maxDepth": 20,
"expandMoreComments": true,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Recipe 2: Subreddit Topic Sentiment Mining

{
"subreddits": ["technology", "artificial"],
"postsPerSubreddit": 25,
"maxCommentsPerPost": 100,
"sort": "top",
"enableSentiment": true,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

🏛️ Architecture

src/
├── main.ts # Composition & Actor lifecycle
├── domain/ # Entity schemas & sentiment logic
│ ├── comment.entity.ts # TypeScript models
│ └── sentiment.service.ts # In-memory polarity calculator
├── input/ # Trust boundary input validation
│ └── comment-input.ts # URL normalizer & deduplicator
├── parsers/ # Hierarchy & regex parsers
│ └── comment-tree.parser.ts # Recursive flattener & tree mapping
└── clients/ # Network & anti-bot transport
└── reddit-json.client.ts # got-scraping with 429/403 backoff & morechildren

🛠️ Development & Testing

# Run unit tests
npx vitest run
# Validate all schemas
apify validate-schema
# Run readiness audit
node scripts/validate-actor-readiness.js

❓ Frequently Asked Questions (FAQ)

Q: Do I need a Reddit account or Reddit API token?
A: No. The Actor retrieves public discussions directly without requiring personal accounts or paid official Reddit API credentials.

Q: Why do I need Residential Proxies?
A: Reddit's CDN (Fastly) blocks datacenter IP blocks (AWS, Google Cloud, DigitalOcean) with HTTP 403 Forbidden. Apify Residential proxies route requests through genuine residential IPs to ensure unblocked operation.

Q: How does the Actor handle collapsed or "load more" comments?
A: The Actor identifies kind: "more" objects and automatically batches IDs into POST /api/morechildren requests (up to 100 IDs per call) until all reachable comments are retrieved.

Q: Can I use this for academic or commercial NLP datasets?
A: Yes. The output includes threadId and ancestorIds, allowing you to reconstruct tree graphs for argument mining, conversational AI, and sentiment analysis.

Q: Will this actor get blocked by Reddit?
A: The Actor uses got-scraping to negotiate real browser TLS Client Hello signatures and headers, combined with residential IP rotation on 429 or 403.


  • Public Data Only: This Actor extracts publicly available comments and submissions. It cannot access private subreddits or quarantined/banned communities.
  • GDPR & Privacy: Scraped data contains publicly posted usernames. Users are responsible for complying with relevant data protection regulations.