Reddit Scraper | All In One | Cheapest ($0.99/1K Result) avatar

Reddit Scraper | All In One | Cheapest ($0.99/1K Result)

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Reddit Scraper | All In One | Cheapest ($0.99/1K Result)

Reddit Scraper | All In One | Cheapest ($0.99/1K Result)

[π˜Ύπ™π™šπ™–π™₯π™šπ™¨π™©] Reddit Scraper Enterprise extracts posts, comments, subreddits, user profiles, votes, timestamps, and other public Reddit data at scale πŸ’¬πŸ“Š Ideal for sentiment analysis, market research, trend monitoring, brand tracking, AI datasets, and competitive intelligence.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Hub

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

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
}
FieldTypeMeaning
queriesstring[]Keywords/phrases to search. A value like r/pics cats restricts the search to a subreddit.
maxPostsintMax posts collected per query (paginates in pages of 100).
sort / timeframeenumReddit search sort (relevance/hot/top/new/comments) and time window (all/year/month/week/day/hour).
subredditSort / subredditTimeframeenumSame, applied when a query targets a specific r/subreddit.
strictSearchboolKeep only posts where every query token appears in the title/body.
strictTokenFilterboolKeep only posts containing the exact query phrase.
maximize_coverageboolSweep multiple sort orders to gather more unique posts.
forceSortNewForTimeFilteredRunsboolForce new sort whenever timeframe != all.
includeNsfwboolInclude over_18 posts.
scrapeComments / maxCommentsbool / intAlso fetch and flatten each post's comment tree.
content_analysisboolAttach a content_analysis object (keywords, token stats, question/URL detection).
sentiment_analysisboolAttach 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_hour
  • engagement_total, comment_to_score_ratio, is_high_engagement
  • media_type, has_media, gallery_images, gallery_count, outbound_url_host
  • title_length, body_length, word_count
  • is_deleted_or_removed, content_flags
  • canonical_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 UI
Dockerfile 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 lifecycle
src/reddit.py RedditBrowser (browser fetch) + search/pagination
src/comments.py Comment scraping
src/enrich.py Derived fields
src/analysis.py Content + sentiment analysis

Run locally

pip install -r requirements.txt
apify run # or: python -m src (with local input in storage/)

Deploy

apify login
apify push # builds a NEW image with the current code

Notes

  • Use residential proxies. Reddit blocks datacenter IPs; the default proxyConfiguration is useApifyProxy + 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.