Skip to content

Reddit Posts Scraper

Try for free

Scrape public Reddit posts, comments, communities, and user profiles from listings, search, and direct links.

🟠 Reddit Posts & Comments Scraper

Scrape public Reddit posts, full comment threads, communities and user profiles by keyword, subreddit or URL. Every post comes with 75 fields, including media, galleries, videos, flair, removal status and ready-made engagement metrics. No Reddit account, API key or cookies needed, and you pay only per saved result.

✨ Why use Reddit Posts & Comments Scraper?

  • 🔎 Four ways in: keyword search (posts, comments or communities), direct URLs (subreddits, posts, comments, profiles, search pages), a deep full-subreddit scrape, or any mix in one run.
  • 📊 Rich, flat data: 75 fields per post, 41 per comment, 38 per community and 29 per user profile. One flat JSON row per item, split by dataType.
  • 💬 Complete comment threads: nested replies in thread order, including "load more" branches, with depth, parent and OP flags.
  • 🖼️ Media and galleries: preview images, full-resolution gallery images with sizes, Reddit-hosted video URLs and the raw media objects.
  • ⚡ Fast: a subreddit page or a keyword search returns in seconds, not minutes.
  • 💰 Cheap: $1.40 per 1,000 results, no start fee.

🎯 Use cases

  • 📣 Brand monitoring: track mentions of your brand, product or competitors across all of Reddit or inside one community, every day on a schedule.
  • 🧪 Market research: collect what real users say about a category, their pain points and the tools they recommend.
  • 🤖 AI and NLP datasets: build comment corpora for sentiment analysis, classification or LLM fine-tuning.
  • 📈 Trend discovery: find rising topics with scorePerHour, commentsPerHour and isHighEngagement.
  • 🏘️ Community analysis: pull subreddit settings, member counts and full rule lists, or a large slice of a subreddit's history.
  • 🎓 Academic research: export structured threads for discourse and network studies.

🚀 How to use

  1. Enter search keywords, paste Reddit URLs, or list subreddits for a full scrape.
  2. Set Max posts per keyword / URL (and the comment limits if you want comments).
  3. Optional: add date filters, NSFW, flair only, sort and time range.
  4. Click Start and watch the results arrive.
  5. Download the dataset as JSON, CSV, Excel or HTML, or read it over the API.

📥 Input

FieldWhat it does
searchTermsKeywords. Each runs its own search for posts, comments and/or communities (searchPosts, searchComments, searchCommunities).
startUrlsSubreddit pages (any sort and time, e.g. /r/technology/top/?t=week), post and comment links, user profiles, search pages, r/popular, the front page.
subredditUrlsNames or links of subreddits for a deep scrape that combines several listings to reach many more posts.
maxPostsCountPosts per keyword or URL (for subredditUrls: the total). 0 saves no posts.
crawlCommentsPerPost, maxCommentsPerPostAlso save each post's comment thread, up to this many comments per post.
maxCommentsCount, maxCommunitiesCountLimits for comment search and profile comments, and for community search.
withinCommunity, searchSort, searchTimeSearch inside one subreddit, sort order and time range.
postedAfter, postedBefore, commentedAfter, commentedBeforeDate filters: YYYY-MM-DD or relative values such as 7 days.
onlyWithFlair, includeNSFWPost flair filter and 18+ content.
{
  "searchTerms": ["notion"],
  "searchPosts": true,
  "searchComments": true,
  "searchSort": "new",
  "searchTime": "week",
  "startUrls": [
    { "url": "https://www.reddit.com/r/technology/top/?t=week" },
    { "url": "https://www.reddit.com/r/AskReddit/comments/1x3uinu/what_previously_glorified_careers_are_struggling/" }
  ],
  "maxPostsCount": 20,
  "crawlCommentsPerPost": true,
  "maxCommentsPerPost": 20
}

Tips

  • A subreddit URL with maxPostsCount: 0 returns the community profile with its rules instead of posts.
  • A user profile URL returns the profile, recent posts (maxPostsCount) and recent comments (maxCommentsCount). Use /user/name/submitted or /user/name/comments for only one of them.
  • Invalid entries are skipped with a warning and the rest of the run continues.

📤 Output

Every item is a flat JSON object. dataType tells you the shape: post, comment, community or user_profile. All timestamps are ISO 8601 UTC strings. Fields prefixed parsed hold the same Reddit id without its t3_/t1_/t5_/t2_ prefix.

ShapeKey fields
postid, title, body, bodyHtml, postUrl, contentUrl, authorName, communityName, flair, score, upvoteRatio, commentsCount, createdAt, postType, mediaType, images, galleryImages, mediaAssets, videoUrl, over18, spoiler, locked, stickied, removedByCategory, scorePerHour, commentsPerHour, isHighEngagement, wordCount, searchTerm (search items only) and more
commentid, url, body, bodyHtml, authorName, authorFullname, postId, parentId, parentKind, depth, score, commentCreatedAt, isSubmitter, controversiality, stickied, postTitle / postCommentsCount (search and profile comments), searchTerm
communityname, title, publicDescription, description, membersCount, createdAt, nsfw, subredditType, submissionType, communityIcon, bannerImage, allowImages/allowVideos/allowPolls, rules (short name, description, kind, priority)
user_profileusername, totalKarma, linkKarma, commentKarma, isMod, isEmployee, verified, hasVerifiedEmail, iconImg, bio, createdAt, profileUrl

Example post (trimmed):

{
  "id": "t3_1x5thwn",
  "parsedId": "1x5thwn",
  "dataType": "post",
  "title": "City council approves new open data portal for transit",
  "body": "",
  "contentUrl": "https://example-news.com/2026/10/14/open-data-transit/",
  "postUrl": "https://www.reddit.com/r/technology/comments/1x5thwn/city_council_approves_new_open_data_portal/",
  "authorName": "maple_byte_77",
  "communityName": "r/technology",
  "flair": "Society",
  "postType": "link",
  "score": 4697,
  "upvoteRatio": 0.98,
  "commentsCount": 406,
  "createdAt": "2026-10-14T15:00:14.000Z",
  "domain": "example-news.com",
  "images": ["https://external-preview.redd.it/9xIpLmYF....jpeg?auto=webp&s=6541..."],
  "over18": false,
  "subredditSubscribers": 20581873,
  "mediaType": "link",
  "hasMedia": false,
  "ageHours": 2.8056,
  "scorePerHour": 1674.1517,
  "commentsPerHour": 144.7106,
  "engagementTotal": 5103,
  "isHighEngagement": true,
  "wordCount": 12,
  "outboundUrlHost": "example-news.com",
  "crawledAt": "2026-10-14T17:48:32.791Z"
}

Example comment (trimmed):

{
  "id": "pfg8t6s",
  "dataType": "comment",
  "url": "https://www.reddit.com/r/AskReddit/comments/1x3uinu/comment/pfg8t6s/",
  "postId": "t3_1x3uinu",
  "parentId": "t1_pffkim4",
  "parentKind": "comment",
  "depth": 1,
  "authorName": "quiet_harbor_42",
  "subredditName": "AskReddit",
  "body": "Work in digital marketing and I can confirm this.",
  "bodyHtml": "<div class=\"md\"><p>Work in digital marketing and I can confirm this.</p>\n</div>",
  "score": 1023,
  "commentCreatedAt": "2026-10-12T14:14:01.000Z",
  "isSubmitter": false,
  "controversiality": 0,
  "wordCount": 9,
  "crawledAt": "2026-10-14T17:48:54.053Z"
}

Each run also stores a run summary (RUN-SUMMARY in the key-value store, linked from the Output tab) with item counts per shape, skipped targets and their reason (not_found, private, banned, suspended, blocked), request counts and any input it repaired.

💰 Pricing

You pay $1.40 per 1,000 results ($0.0014 per saved post, comment, community or profile). There is no start fee. Platform usage (compute and proxy traffic) is billed separately at the platform's rates and is small: a typical 1,000-result run uses well under one cent of it.

Example: 1,000 posts from a keyword search cost about $1.40 plus a fraction of a cent of usage.

Set Max total charge on a run to cap your spend; the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Reddit? This actor only reads public pages that anyone can open without logging in. You are responsible for how you use the data, including privacy laws such as GDPR and Reddit's terms. Avoid collecting personal data you do not need.

Do I need a Reddit account, API key or cookies? No. Everything works logged out.

Do I need a proxy? Reddit limits requests per IP address. The default datacenter proxy spreads requests over fresh IPs and is the cheapest option. If Reddit refuses an exit, the scraper rotates to a new one, and after repeated refusals it moves new sessions to residential proxies automatically. Traffic is small either way.

How many results can I get? Reddit serves about 1,000 items per listing or search. The full subreddit scrape combines several listings (new, top by period, hot, controversial, rising) to go beyond that. Filters and NSFW settings reduce the count.

Why is a field empty or null? Reddit leaves some fields empty for some items (for example bodyHtml on link posts), and moderator-only fields such as removedBy are always null for public scrapes. removedByCategory is the public removal reason.

Can I schedule it or use the API? Yes. Schedule a run (for example daily with postedAfter set to 1 day) or start it from the API, and fetch the dataset as JSON, CSV or Excel.

⚠️ Limits

  • Only public content. Private, quarantined or banned communities and suspended accounts are skipped and listed in the run summary.
  • Reddit's own ceilings apply: about 1,000 items per listing or search query, 10 comments per comment-search page.
  • Search for users and media tabs is not supported.
  • Vote counts are rounded and fuzzed by Reddit, as on the website.
  • Comment search relies on Reddit's public search page; if Reddit challenges every attempt, those keywords are skipped and reported in the run summary while posts and communities still come through.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.