Reddit Scraper | Enterprise Grade
Pricing
from $1.99 / 1,000 results
Reddit Scraper | Enterprise Grade
Reddit Scraper Enterprise Grade extracts publicly available posts, comments, subreddits, user profiles, engagement metrics, timestamps, and other Reddit data at scale 💬📊 Perfect for sentiment analysis, brand monitoring, market research, trend tracking, AI datasets, and competitive intelligence.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Reddit Search Scraper (Apify Actor)
Searches Reddit for one or more keyword queries and returns enriched post objects
(and optionally comments) as structured JSON in the Actor dataset. Uses Reddit's
public .json endpoints — no OAuth/API key required.
Input
{"queries": ["Cheesecake", "Swimming Pool"],"maxPosts": 100,"maxComments": 100,"sort": "relevance","timeframe": "all","subredditSort": "relevance","subredditTimeframe": "all","includeNsfw": false,"scrapeComments": false,"strictSearch": false,"strictTokenFilter": false,"maximize_coverage": false,"forceSortNewForTimeFilteredRuns": false,"content_analysis": false,"sentiment_analysis": false}
| Field | Type | Meaning |
|---|---|---|
queries | string[] | Keywords/phrases to search. A value like r/pics cats restricts the search to a subreddit. |
maxPosts | int | Max posts collected per query (paginates in pages of 100). |
sort / timeframe | enum | Reddit search sort (relevance/hot/top/new/comments) and time window (all/year/month/week/day/hour). |
subredditSort / subredditTimeframe | enum | Same, applied when a query targets a specific r/subreddit. |
strictSearch | bool | Keep only posts where every query token appears in the title/body. |
strictTokenFilter | bool | Keep only posts containing the exact query phrase. |
maximize_coverage | bool | Sweep multiple sort orders to gather more unique posts. |
forceSortNewForTimeFilteredRuns | bool | Force new sort whenever timeframe != all. |
includeNsfw | bool | Include over_18 posts. |
scrapeComments / maxComments | bool / int | Also fetch and flatten each post's comment tree. |
content_analysis | bool | Attach a content_analysis object (keywords, token stats, question/URL detection). |
sentiment_analysis | bool | Attach a lexicon-based sentiment object (positive/negative/neutral). |
Output
Each dataset item is either a post ("kind": "post") or a comment
("kind": "comment"). Posts include the raw Reddit fields plus derived metrics:
age_hours,score_per_hour,comments_per_hourengagement_total,comment_to_score_ratio,is_high_engagementmedia_type,has_media,gallery_images,gallery_count,outbound_url_hosttitle_length,body_length,word_countis_deleted_or_removed,content_flagscanonical_url,old_reddit_url,retrieved_at
See src/enrich.js for the exact shape.
How it avoids being blocked
Reddit returns a hard 403 to plain HTTP clients (even ones that impersonate a
TLS fingerprint) because they can't solve Reddit's JS/Cloudflare "Please wait for
verification" challenge. This Actor drives a real headless Chromium
(Playwright) session: it loads a Reddit page so the browser solves the
challenge and earns a valid session cookie, then fetches the .json endpoints
from inside the page (same-origin, credentials: 'include'). One warmed
session is reused for all search pagination and comment fetches; on a block/403
it relaunches with a fresh residential proxy. See RedditBrowser in
src/reddit.py.
Project layout (Python)
.actor/actor.json Actor config.actor/input_schema.json Input UIDockerfile apify/actor-python-playwright:3.13 (Chromium preinstalled)requirements.txt apify (pydantic/browserforge pinned)src/__main__.py Entry point (python -m src)src/main.py Orchestration + Playwright session lifecyclesrc/reddit.py RedditBrowser (browser fetch) + search/paginationsrc/comments.py Comment scrapingsrc/enrich.py Derived fieldssrc/analysis.py Content + sentiment analysis
Run locally
pip install -r requirements.txtapify run # or: python -m src (with local input in storage/)
Deploy
apify loginapify push # builds a NEW image with the current code
Notes
- Use residential proxies. Reddit blocks datacenter IPs; the default
proxyConfigurationisuseApifyProxy+RESIDENTIAL. - Because it runs a real browser, give the Actor enough memory (≥ 2–4 GB).
- If a network blocks/redirects Reddit itself (e.g. some ISPs), local runs will fail — validate on the Apify platform where the residential proxy is used.
- Content/sentiment analysis are lightweight offline heuristics — replace with a real NLP service if you need higher accuracy.