Reddit Scraper – Posts, Comments & Users avatar

Reddit Scraper – Posts, Comments & Users

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Reddit Scraper – Posts, Comments & Users

Reddit Scraper – Posts, Comments & Users

Scrape Reddit posts, comments, users, no login or API key. Search or paste URLs, filter by keyword/date, export to JSON/CSV/Excel or push to Notion, Slack & more.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Techforce Global

Techforce Global

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Reddit Scraper & MCP Connector

Scrape posts, comments, communities, and user profiles from any corner of Reddit — from subreddits, individual threads, user pages, or keyword searches — as clean, structured data with full engagement metrics. No Reddit login, no API keys, no app registration, no code.

Built for market researchers, brand and social teams, analysts, and builders who need Reddit's real, unfiltered discussion as ready-to-use data — in minutes, not hours of scrolling and copy-pasting.

Paste a subreddit, thread, user, or search → get posts, comments, and metrics → deliver them straight into Notion, Slack, Jira, or your CRM.


⭐ Why This Actor?

  • Just paste a URL or a search term — subreddits (r/…), sorted subreddits, single posts, user profiles (user/…), and search pages all work. Or skip URLs entirely and type keywords to search. No login, API key, or OAuth setup required.
  • Four data types in one run — posts, comments, communities (subreddits), and users, each as a flat, clearly-typed record.
  • Full engagement data — score, upvotes, upvote ratio, comment counts, awards, karma, subscriber counts, and more.
  • Deep comment trees — follow reply threads to the depth you choose, with threading info (parentId, depth, postId) preserved.
  • Filter as you scrape — keyword filters, date ranges, and an NSFW toggle keep your dataset focused.
  • Media extraction — pull thumbnails, images, videos, galleries, and external links from posts.
  • No 403s, no keys — loads Reddit in a real headless Chromium browser, so Reddit serves its .json data exactly like it would to a genuine visitor. Nothing to authenticate.
  • Anti-block resilient — runs through Apify Proxy (residential recommended) with automatic recovery on rate limits.
  • Deliver anywhere via MCP connectors — push results straight into Notion, Slack, Jira, GitHub, Linear, Airtable, and more.
  • Export-ready — JSON, CSV, Excel, HTML, or direct API integration for your own pipeline.

📝 Use Cases & ROI

Use CaseTime SavedWhat You Get
Market & brand research3–6 hrs/topicEverything people say about your product, competitors, or industry
Trend & lead discovery2–4 hrs/nicheRising posts, active communities, and influential users in a space
Sentiment & content analysis4–8 hrs/datasetPosts and full comment threads ready for NLP / AI pipelines
Training data / RAG & AI5–10 hrs/datasetStructured discussion data to feed models, search, or Q&A
Academic & data science3–6 hrs/studyDatasets of discussions, karma, and engagement over time

🚀 How to Use

  1. Open the Actor on Apify.
  2. Add one or more Start URLs (a subreddit, post, user, or search page) and/or type Search terms.
  3. Choose what searches should return — posts, comments, communities, or users — and how to sort them.
  4. Set your limits: Max items, posts per source, comments per post, and comment depth.
  5. (Optional) Filter with keywords, date range, and the NSFW toggle.
  6. (Optional) Pick an MCP connector to deliver each result into Notion, Slack, Jira, etc.
  7. Click Run — results stream into the dataset as each source is processed.
  8. Download as CSV, Excel, JSON, or HTML — or let the connector push them into your tools automatically.

🌐 Proxy: keep Apify Proxy enabled (residential is best). Reddit rate-limits by IP, and a rotating residential proxy lets the Actor recover automatically if a request is throttled. 💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names, so you know what to put in Connector tool name.


🧩 Input Configuration

You can drive the scraper with Start URLs, Search terms, or both. Supported start URL types:

URL typeExampleWhat you get
Subreddithttps://www.reddit.com/r/technology/Community info + its posts (and comments)
Sorted subreddithttps://www.reddit.com/r/technology/top/?t=weekTop posts this week
Posthttps://www.reddit.com/r/AskReddit/comments/abc123/...The post + its comment tree
Userhttps://www.reddit.com/user/spez/Profile + their posts and comments
Searchhttps://www.reddit.com/search/?q=bitcoinMatching posts
FieldTypeRequiredDescription
startUrlsArray➖ One ofDirect Reddit URLs: subreddits, posts, users, or search pages.
searchesArray➖ One ofKeywords to search on Reddit (used with Search for below).
searchTypeEnumOptionalWhat each search returns: posts, comments, communities, or users. Default: posts.
sortEnumOptionalSort order: relevance, hot, top, new, rising, comments. Default: new.
timeEnumOptionalTime window for top/relevance: hour, day, week, month, year, all. Default: all.
commentSortEnumOptionalComment order within a post: confidence (best), top, new, controversial, old, qa. Default: top.
maxItemsIntegerOptionalTotal dataset items cap across the whole run (0 = unlimited). Default: 100.
maxPostCountIntegerOptionalMax posts per subreddit / search / user (0 = unlimited). Default: 50.
maxCommentsIntegerOptionalMax comments per post (0 = skip comments). Default: 20.
maxCommentDepthIntegerOptionalHow deep to follow reply threads (1 = top-level, 0 = unlimited). Default: 3.
maxCommunitiesCountIntegerOptionalMax communities per source (0 = unlimited). Default: 10.
maxUserCountIntegerOptionalMax users per source (0 = unlimited). Default: 10.
skipCommentsBooleanOptionalPost data only — faster and cheaper. Default: false.
skipUserPostsBooleanOptionalFor user URLs, return only the profile (no posts/comments). Default: false.
skipCommunityInfoBooleanOptionalFor subreddit URLs, skip the community "about" item. Default: false.
includeNSFWBooleanOptionalInclude content marked NSFW (over_18). Default: true.
keywordsArrayOptionalKeep only items whose title/body/text contains one of these (case-insensitive).
postDateFrom / postDateToStringOptionalDate filter — YYYY-MM-DD or relative like 7 days, 3 months.
extractMediaBooleanOptionalExtract image/video/gallery URLs, thumbnails, and links. Default: true.
dedupItemsBooleanOptionalDrop duplicate items within a run. Default: true.
proxyConfigurationObjectOptionalProxy used for requests. Residential/rotating strongly recommended for larger runs.
maxConcurrencyIntegerOptionalMax parallel requests (1–50). Lower it if you hit rate limits. Default: 10.
maxRequestRetriesIntegerOptionalRetries for a failed/blocked request. Default: 5.
mcpConnectorConnectorOptionalDeliver results into a connector you've authorized (Notion, Slack, Jira, GitHub, Linear, Airtable, …).
deliveryModeEnumOptionalperItem (one call per item), summary (one digest call for the run), or none. Default: perItem.
mcpToolStringOptionalTool to call on the connector (e.g. create_page, send_message, create_issue).
mcpArgumentsObjectOptionalArguments for the tool; string values support {placeholders}.
mcpMessageTemplateStringOptionalTemplate rendered per item/run, exposed as the {message} placeholder.
{
"startUrls": [{ "url": "https://www.reddit.com/r/technology/top/?t=week" }],
"searches": ["artificial intelligence"],
"searchType": "posts",
"sort": "top",
"time": "week",
"maxItems": 200,
"maxPostCount": 50,
"maxComments": 20,
"maxCommentDepth": 3
}

Example — Filtered, post-only run

{
"startUrls": [{ "url": "https://www.reddit.com/r/MachineLearning/" }],
"maxItems": 100,
"skipComments": true,
"includeNSFW": false,
"keywords": ["openai", "llm"],
"postDateFrom": "30 days",
"proxyConfiguration": { "useApifyProxy": true }
}

📦 Output Fields

Every result is a flat JSON object with a type field — post, comment, community, or user. The Output tab has ready-made views for each. Download as JSON, HTML, CSV, or Excel.

FieldApplies toDescription
typeallpost, comment, community, or user
id / parsedIdallReddit item ID and full name (t3_…, t1_…, etc.)
title / bodyposts / commentsPost title & self-text, or comment text
author / subredditposts, commentsAuthor username and subreddit
urlallPermalink to the item
link / domainpostsOutbound link and its domain (for link posts)
flairpostsPost flair text
score / upVotes / upvoteRatioposts, commentsEngagement metrics
numberOfComments / numberOfCrossposts / awardsCountpostsPost activity counts
depth / parentId / postIdcommentsComment threading info
numberOfRepliescommentsDirect replies to a comment
over18 / spoiler / locked / stickiedpostsContent flags
mediapostsThumbnail, images, video, gallery, external link
username / linkKarma / commentKarma / totalKarmausersProfile and karma
isGold / isMod / isEmployee / verifiedusersAccount flags
name / numberOfMembers / activeUserscommunitiesSubreddit name and size
description / longDescriptioncommunities, usersPublic description / sidebar text
createdAt / createdTimestampallCreation time (ISO 8601 + Unix)

Example Output

{
"type": "post",
"id": "1abc23",
"subreddit": "technology",
"title": "New AI model released",
"body": "Full self-text here...",
"author": "example_user",
"url": "https://www.reddit.com/r/technology/comments/1abc23/...",
"link": "https://example.com/article",
"score": 4213,
"upVotes": 4500,
"upvoteRatio": 0.95,
"numberOfComments": 812,
"flair": "AI",
"over18": false,
"createdAt": "2026-07-08T14:03:21+00:00",
"media": {
"thumbnail": "https://...",
"images": ["https://..."],
"video": null,
"gallery": [],
"externalLink": "https://example.com/article"
}
}

Note: some fields only appear on the relevant item type (karma on users, member counts on communities, etc.), and values Reddit doesn't publish may come back null.


🔌 Integrations & Delivery

Beyond the dataset, this Actor can push each scraped item straight into any MCP connector you've authorized in Apify — no glue code, no webhooks:

  • Notion — create a page per post, or one summary page for the whole run
  • Slack / Discord — post results or a run digest to a channel
  • Jira / GitHub / Linear — open issues or tasks from posts
  • Airtable / Google Sheets — append a structured row per item
  • …or any other MCP-compatible connector

Credentials stay private — delivery runs through the Apify MCP Proxy, so the Actor never sees your connector tokens. You can also consume the dataset directly via the Apify API, or wire it into n8n, Zapier, and Make.

⚙️ Delivery modes: perItem sends one connector call per scraped post/comment/user/community; summary sends a single call with a digest of the whole run; none saves to the dataset only. MCP delivery only runs on the Apify platform and never affects what's saved to the dataset.

Placeholders available in arguments / template

Per-item mode: {type} · {id} · {title} · {text} · {body} · {author} · {subreddit} · {url} / {permalink} · {score} · {upVotes} · {upvoteRatio} · {numberOfComments} · {createdAt} · {username} · {name} · {numberOfMembers} · {message} (plus any other field on the item) Summary mode: {itemCount} · {postCount} · {commentCount} · {userCount} · {communityCount} · {items} (a formatted digest) · {message}

{title} falls back to the subreddit/username for comment/user/community items; {text} is populated for every item type, so it's the safest content placeholder when mixing types.

Example — post each result to Slack

{
"searches": ["artificial intelligence"],
"searchType": "posts",
"maxItems": 50,
"mcpConnector": "<your-slack-connector>",
"deliveryMode": "perItem",
"mcpTool": "send_message",
"mcpArguments": { "channel": "#reddit", "text": "{message}" },
"mcpMessageTemplate": "*[r/{subreddit}] {title}*\n{url}\nScore {score} · {numberOfComments} comments · by u/{author}"
}

Example — create a Notion page per post

{
"startUrls": [{ "url": "https://www.reddit.com/r/technology/top/?t=week" }],
"maxItems": 50,
"mcpConnector": "<your-notion-connector>",
"deliveryMode": "perItem",
"mcpTool": "notion-create-pages",
"mcpArguments": {
"parent": { "page_id": "<your-page-id>" },
"pages": [
{
"properties": { "title": "{title}" },
"content": "{text}\n\nr/{subreddit} · by u/{author}\nScore {score} · {numberOfComments} comments\n{url}"
}
]
}
}

Example — one Notion page summarizing the run

{
"startUrls": [{ "url": "https://www.reddit.com/r/technology/top/?t=week" }],
"maxItems": 100,
"mcpConnector": "<your-notion-connector>",
"deliveryMode": "summary",
"mcpTool": "notion-create-pages",
"mcpArguments": {
"parent": { "page_id": "<your-page-id>" },
"pages": [
{
"properties": { "title": "Reddit digest ({itemCount} items)" },
"content": "{items}"
}
]
}
}

🛠️ How It Works

my_actor/main.py reads the input, then turns your start URLs and search terms into labelled seed requests. For each:

  1. A real headless Chromium browser (Playwright) loads Reddit's public .json endpoint, so requests carry a genuine browser's headers, cookies, and TLS fingerprint — Reddit serves the data instead of returning HTTP 403.
  2. If Reddit's WAF returns a block page instead of JSON, the handler warms up on the Reddit homepage and re-fetches via an in-page fetch(), which carries the real browser session — no login or keys needed.
  3. my_actor/routes.py parses each response into flat, typed records (posts, comments, communities, users), following listing pagination and comment trees up to your limits.
  4. Records are filtered (keywords, dates, NSFW), de-duplicated, and pushed to the dataset — then, if a connector is configured, delivered via MCP.

Built with: Apify SDK for Python · Crawlee (Playwright) · MCP


💲 Cost & Tips

The Actor reads Reddit's compact JSON through a real browser, so cost is driven mainly by pages loaded (roughly one page per ~100 posts, plus one per post for comments) and proxy usage. To keep runs fast and cheap:

  • Use a proxy (residential ideally) for larger runs — Reddit rate-limits by IP.
  • Skip comments (skipComments: true) for post-only runs.
  • Filter after fetch with keywords, postDateFrom / postDateTo, and includeNSFW.
  • Lower maxConcurrency if you see HTTP 429 (rate-limit) warnings.
  • Schedule the Actor to monitor a subreddit and get fresh data automatically.

🆘 Support

For issues, custom scraping requests, or feature suggestions:

Email: bhavin.shah@techforceglobal.com


Need a Custom Pipeline?

Want multi-subreddit batch runs, scheduled refreshes, deeper enrichment, or a full data-warehouse integration?

📅 Book a Free 15-min Consultation


Made with ❤️ by Techforce Specialists in High-Performance Web Scrapers and AI Automation.


Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit. Reddit® is a trademark of Reddit, Inc.; all trademarks are property of their respective owners. The Actor collects only publicly available information and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.