Reddit Scraper API — Posts, Comments, Media, Leads, Emails
Pricing
from $1.50 / 1,000 results
Reddit Scraper API — Posts, Comments, Media, Leads, Emails
Reddit scraper and unofficial Reddit API: posts, comment threads, subreddits, users, emails — no login, no API key. 80 post fields: score, flair, permalink, subreddit subscribers, video, galleries, previews, crossposts, metrics. Emails & socials from profiles. JSON, CSV, Excel. From $1.50/1k.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Raven
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
0
Monthly active users
15 days ago
Last modified
Categories
Share
🟠 Reddit Scraper All-in-One — Posts, Comments, Users, Subreddits & Email Finder ($2/1k)
Scrape Reddit posts, comments, subreddits, user profiles and search results — from $2.00 per 1,000 results ($1.50 on paid plans), everything included. No login, no Reddit API key, no code, no proxies to configure. Up to 80 fields per post — media (Reddit video URLs, galleries, oEmbed players, preview renditions), crosspost lineage, moderation and edit flags, plus ready-made engagement metrics. Export clean JSON, CSV or Excel in minutes. And it does something other Reddit scrapers don't: it finds emails, phone numbers and social media links from the websites people link in their Reddit profiles — turning Reddit into a lead-generation source. 🚀
One actor replaces five: keyword search, subreddit feeds, full comment threads, user profiles and community data — pick a mode, paste your input, press Start.

| Raven · Social-media suite • Instagram, TikTok, YouTube, Reddit, Threads, Pinterest | |||
|
➤ You are here |
Posts, profiles, replies |
Videos, comments, transcripts |
Posts, followers, comments |
🔍 What does this Reddit Scraper do?
Reddit's official API requires app registration, OAuth setup and — since 2023 — paid access for anything beyond small volumes. This actor works as an unofficial Reddit API alternative: you get the same public data as structured JSON, with no API key, no rate-limit babysitting and no infrastructure to maintain.
| Source | Data you get |
|---|---|
| 📝 Posts | title, body text & HTML, author (+ flair, premium, cakeday), score, upvote ratio, comment count, flair (text, colours, template id), permalink & old.reddit URL, subreddit id and subscriber count, media (Reddit video MP4/DASH/HLS, galleries with captions, oEmbed players, preview renditions, GIF/MP4 variants), crosspost lineage, duplicate count, NSFW / spoiler / pinned / locked / archived / edited / deleted flags, indexability, timestamps and derived engagement metrics — 80 fields |
| 💬 Comments | nested comment threads up to 10 levels deep with postId, parentId, depth, replyIds and hasMoreReplies for full tree reconstruction, plus author flair/premium, controversiality, stickied / locked / archived / collapsed / edited flags and per-comment metrics — 44 fields |
| 👥 Communities (subreddits) | members, active users, descriptions (text + HTML), creation date, icons, banners & colours, type, language, advertiser & content category, and the full posting-rules set (what media the sub allows, flair, wiki, spoilers, OC tag, archiving, comment-score hiding) — 56 fields |
| 🧑 Users | post / comment / total karma, account age in days, mod / employee / suspended status, avatar & banner, recent posts and comments — plus emails, phones and social links from their linked websites |
| 🔍 Search | posts, communities and users by any keyword, with 6 sort orders and 6 time ranges |
Pick a Scrape type, then drop your inputs into the Items field — one value per line:
| 🎯 Scrape type | What to put in Items |
|---|---|
| 🔍 Search by keyword | search terms (e.g. nike running shoes) |
| 📋 Posts from a community | subreddit names or URLs (Entrepreneur, r/python) |
| 💬 Post / thread + comments | post URLs or IDs |
| 🧑 User profiles | usernames or profile URLs (spez, u/spez) |
| 🔗 Any Reddit URL | a mix of Reddit links — type auto-detected per item |
✨ Why use this Reddit scraper?
- ✅ All 5 data types in one actor — search, subreddits, threads, users, communities. No need to buy a separate scraper per job.
- ✅ Built-in email & contact finder — harvests emails, phone numbers and links to 13 social platforms from users' profile websites, at no extra charge per contact.
- ✅ Comments included free in subreddit mode — top comments are embedded inside each post record, so you pay for the post only.
- ✅ 80 fields per post, 44 per comment, 56 per community — everything the public Reddit API exposes for the item, plus derived engagement metrics. Empty fields are dropped, so every record stays clean and flat.
- ✅ Media fully unpacked —
redditVideo(MP4 fallback, DASH, HLS, duration, bitrate, audio flag),galleryImageswith captions in author order,embedMediafor YouTube-style players,previewImageswith every thumbnail resolution plus animated GIF/MP4 variants. - ✅ Collapsed reply chains on demand — switch on Expand collapsed reply chains and the actor follows Reddit's "load more comments" links so deep threads come back whole.
- ✅ Analytics without post-processing —
ageHours,scorePerHour,commentsPerHour,engagementTotal,commentToScoreRatio,wordCount,titleLength,bodyLengthare computed for you. - ✅ Fully async — scrapes up to 50 sources in parallel, each with its own session so rate limits don't stack.
- ✅ Automatic pagination — walks Reddit's 100-items-per-page listings for you, up to your limit.
- ✅ Cost controls built in — hard
maxItemscap, per-source and per-post limits, and the run stops automatically when your Apify budget limit is reached. - ✅ No hidden charges — proxies, retries and platform usage are all included in the per-result price.
| Official Reddit API | Typical Reddit scrapers | This actor | |
|---|---|---|---|
| Setup | App registration + OAuth | Varies | Paste input, press Start |
| Data types | All, behind rate limits | Usually one per actor (posts or comments) | Posts + comments + users + communities + search |
| Commercial use | Paid contracts since 2023 | Pay per result | From $1.50 / 1,000 results |
| Comments pricing | — | Often charged per comment | Free when embedded in subreddit posts |
| Email / contact extraction | ❌ | ❌ | ✅ Included |
| Proxies | Your problem | Sometimes extra | Built in, automatic |
📊 What data can you extract from Reddit?
Every record carries a dataType discriminator (post, comment, community, user) so you can filter mixed datasets in one click.
📝 Post — 80 fields
| Group | Fields |
|---|---|
| Identity | id, fullId, url, permalink, oldRedditUrl, dataType |
| Content | title, body, bodyHtml, domain, linkUrl, outboundUrlHost, postHint |
| Author | author, authorFullId, authorFlairText, authorPremium, authorCakeday, distinguished |
| Community | community, subreddit, subredditId, subredditSubscribers, subredditType |
| Engagement | score, upvotes, upvoteRatio, numberOfComments, numDuplicates, totalAwards, scoreHidden |
| Flair | flair, flairTemplateId, flairBackgroundColor, flairTextColor |
| Flags | isNsfw, isSpoiler, isPinned, isLocked, isArchived, isEdited, editedAt, isVideo, isSelf, isGallery, isOriginalContent, isRobotIndexable, isRedditMediaDomain, isDeletedOrRemoved, suggestedSort, contentCategories |
| Crossposts | numCrossposts, isCrosspost, crosspostParentId, crosspostParent |
| Media | media, mediaType, hasMedia, redditVideo, embedMedia, galleryImages, galleryCount, previewImages, previewGifUrl, previewMp4Url, thumbnail, thumbnailWidth, thumbnailHeight |
| Time | createdAt, createdTimestamp, scrapedAt |
| Derived metrics | titleLength, bodyLength, wordCount, ageHours, scorePerHour, commentsPerHour, engagementTotal, commentToScoreRatio |
| Subreddit mode extra | topComments |
Nested media objects:
redditVideo→fallbackUrl,dashUrl,hlsUrl,scrubberMediaUrl,duration,hasAudio,isGif,bitrateKbps,width,height,transcodingStatusembedMedia→provider,providerUrl,type,title,authorName,authorUrl,html,width,height,thumbnailUrl,thumbnailWidth,thumbnailHeightgalleryImages[]→mediaId,url,width,height,type,captionpreviewImages[]→url,width,height,resolutions[]crosspostParent→id,fullId,title,author,community,subreddit,url,score,numberOfComments,createdAt,linkUrl,isVideo
💬 Comment — 44 fields: id, fullId, url, permalink, postId, parentId, body, bodyHtml, author, authorFullId, authorFlairText, authorPremium, authorCakeday, community, subreddit, subredditId, score, upvotes, scoreHidden, controversiality, createdAt, createdTimestamp, scrapedAt, depth, isSubmitter, isStickied, isLocked, isArchived, isCollapsed, collapsedReason, isEdited, editedAt, isDeletedOrRemoved, distinguished, totalAwards, numberOfReplies, replyIds, hasMoreReplies — plus derived bodyLength, wordCount, ageHours, scorePerHour.
👥 Community — 56 fields: id, fullId, name, nameWithPrefix, url, title, description, descriptionHtml, descriptionLong, descriptionLongHtml, members, activeUsers, createdAt, createdTimestamp, scrapedAt, isNsfw, isQuarantined, type_, lang, advertiserCategory, contentCategory, icon, banner, mobileBannerImage, header, headerTitle, primaryColor, keyColor, bannerBackgroundColor, submissionType, submitText, submitLinkLabel, submitTextLabel, allowImages, allowVideos, allowVideoGifs, allowPolls, allowGalleries, allowedMediaInComments, restrictPosting, restrictCommenting, linkFlairEnabled, userFlairEnabled, spoilersEnabled, emojisEnabled, wikiEnabled, allOriginalContent, originalContentTagEnabled, shouldArchivePosts, commentScoreHideMins, suggestedCommentSort, showMedia, showMediaPreview, acceptsFollowers.
🧑 User — 36 fields: username, displayName, bio, linkKarma, commentKarma, totalKarma, awardeeKarma, awarderKarma, createdAt, createdTimestamp, scrapedAt, accountAgeDays, isGold, isMod, isEmployee, isSuspended, verified, hasVerifiedEmail, hideFromRobots, isNsfw, avatar, snoovatar, banner, acceptsFollowers — plus contact enrichment: websites, emails, phones, socialLinks, websiteContacts, and activity: recentPosts, recentComments.
Derived fields.
titleLength,bodyLength,wordCount,ageHours,scorePerHour,commentsPerHour,engagementTotal,commentToScoreRatio,accountAgeDays,mediaType,hasMedia,galleryCount,isCrosspost,isDeletedOrRemoved,outboundUrlHostandoldRedditUrlare computed by this actor from the values Reddit returns — they are not separate Reddit fields.
🚀 How to scrape Reddit step by step
- Create a free Apify account — it comes with $5 of free usage credits every month (≈ 2,500 results with this actor).
- Open Reddit Scraper All-in-One in Apify Console.
- Pick a Scrape type — keyword search, subreddit, post/thread, user profiles, or mixed URLs.
- Paste your items — keywords, subreddit names, post URLs or usernames, one per line.
- Set your limits — max items, posts per source, comments per post.
- Click Start and watch records stream into the dataset.
- Export — JSON, CSV, Excel, HTML or XML from the Storage tab, or pull via API.
No coding, no browser extensions, no Reddit login at any step.
📧 How to find emails and contacts on Reddit (lead generation)
The feature other Reddit scrapers don't have. For every user profile, the actor automatically:
- Reads the bio and finds linked websites and social handles.
- Visits each linked website (up to 5 per profile): the home page plus up to 4 likely contact pages (
/contact,/about,/impressum,/team, …). - Harvests email addresses (including
mailto:links and obfuscatedname [at] domain [dot] comformats), phone numbers (includingtel:links, normalized to digits) and social profiles across 13 platforms — Twitter/X, Instagram, Telegram, LinkedIn, Facebook, YouTube, TikTok, GitHub, Discord, Twitch, Patreon, OnlyFans and Medium.
The contacts land directly on the user record — no extra events, no extra cost. Combine with Search users by keyword to go from "people talking about my niche" to a contact list in one run.
💬 How to scrape Reddit comments
Two ways, depending on what you need:
- Post / thread mode — paste post URLs and get the post plus its comment thread as separate records: up to 500 comments per post, nested 10 levels deep, sorted by top.
parentId,depthandreplyIdslet you rebuild the exact tree, andhasMoreRepliesshows where Reddit truncated it. - Expand collapsed reply chains — set
expandMoreCommentstotrueand the actor follows Reddit's "load more comments" links, pulling the hidden branches untilmaxCommentsPerPostis reached. Off by default because it costs extra requests per post. - Subreddit mode with comments on — each post record ships with its top comments embedded in the
topCommentsfield. Embedded comments are not billed as separate results: 100 posts × 20 comments each still costs just 100 results (~$0.20).
🎛️ How to control your scraping costs
maxItems— a hard cap on total records saved; the run stops the moment it's hit.maxPostsPerSource/maxCommentsPerPost/maxUserPosts— per-source throttles.- Apify budget limits — set a maximum charge on the run; the actor detects the limit and stops cleanly instead of overshooting.
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
scrapeType | select | search | How to interpret items: search, subreddit, post, user, or url (auto-detect) |
items | array | — | Keywords, subreddit names, post URLs/IDs, usernames or mixed URLs — one per line |
sort | select | new | relevance, hot, top, new, rising, comments |
time | select | all | Time window: all, hour, day, week, month, year |
searchWithinCommunity | string | — | Limit keyword search to one subreddit (name without r/) |
searchPosts | boolean | true | Return posts for search terms |
searchCommunities | boolean | false | Return subreddits for search terms |
searchUsers | boolean | false | Return user profiles for search terms |
scrapeComments | boolean | true | Fetch comments for posts |
maxCommentsPerPost | integer | 50 | Max comments per post |
expandMoreComments | boolean | false | Follow "load more comments" links to capture deeply nested reply chains |
includeCommunityDetails | boolean | true | Output a community record before each subreddit's posts |
includeNSFW | boolean | true | Include adult content |
includeUserPosts | boolean | true | Include each user's recent posts |
includeUserComments | boolean | true | Include each user's recent comments |
maxUserPosts | integer | 25 | Max recent posts and comments per user |
extractContacts | boolean | true | Harvest emails, phones & socials from profile websites |
maxItems | integer | 50 | Hard cap on total results (cost control) |
maxPostsPerSource | integer | 50 | Max posts per subreddit / search |
maxConcurrency | integer | 10 | Parallel sources (1–50) |
maxRetries | integer | 5 | Retries per request (1–15) |
📋 Ready-to-paste input recipes
1. Brand monitoring — fresh mentions of your product
{"scrapeType": "search","items": ["notion app", "notion alternative"],"sort": "new","time": "week","searchPosts": true,"maxPostsPerSource": 100,"maxItems": 200}
2. Subreddit feed with embedded comments (cheapest way to get discussions)
{"scrapeType": "subreddit","items": ["r/Entrepreneur", "r/smallbusiness"],"sort": "top","time": "month","scrapeComments": true,"maxCommentsPerPost": 20,"includeCommunityDetails": true,"maxPostsPerSource": 100,"maxItems": 250}
3. Full thread export — every comment as its own record
{"scrapeType": "post","items": ["https://www.reddit.com/r/AskReddit/comments/abc123/example_thread/"],"scrapeComments": true,"maxCommentsPerPost": 500,"maxItems": 501}
4. Lead generation — user profiles with emails & socials
{"scrapeType": "user","items": ["username1", "username2", "u/username3"],"extractContacts": true,"includeUserPosts": false,"includeUserComments": false,"maxItems": 50}
5. Niche research — find communities and their audiences by keyword
{"scrapeType": "search","items": ["crossfit"],"searchPosts": false,"searchCommunities": true,"searchUsers": true,"maxItems": 100}
6. Search inside one subreddit only
{"scrapeType": "search","items": ["hiring"],"searchWithinCommunity": "forhire","sort": "new","time": "month","maxItems": 100}
7. Mixed URL list — let the actor figure out each type
{"scrapeType": "url","items": ["https://www.reddit.com/r/python/","https://www.reddit.com/r/python/comments/abc123/some_post/","https://www.reddit.com/user/spez/"],"maxItems": 150}
📤 Output examples
Post record (trimmed — long preview/embed objects abbreviated):
{"type": "post","id": "1kx9q2z","fullId": "t3_1kx9q2z","url": "https://www.reddit.com/r/Entrepreneur/comments/1kx9q2z/how_i_got_my_first_100_customers/","permalink": "/r/Entrepreneur/comments/1kx9q2z/how_i_got_my_first_100_customers/","oldRedditUrl": "https://old.reddit.com/r/Entrepreneur/comments/1kx9q2z/how_i_got_my_first_100_customers/","title": "How I got my first 100 customers","body": "Long story short: I stopped building and started talking to people...","author": "startup_founder","authorFullId": "t2_tjb4f0et","authorFlairText": "Case study","authorPremium": false,"community": "r/Entrepreneur","subreddit": "Entrepreneur","subredditId": "t5_2rgpr","subredditSubscribers": 4823511,"subredditType": "public","score": 1543,"upvotes": 1543,"upvoteRatio": 0.97,"numberOfComments": 218,"createdAt": "2026-05-20T14:08:11+00:00","createdTimestamp": 1779631691,"scrapedAt": "2026-05-21T09:12:44.512334+00:00","flair": "Case Study","flairTemplateId": "7d6b56b2-2cf2-11e8-ae12-0eed2971b8e4","flairBackgroundColor": "#ffd635","flairTextColor": "dark","isNsfw": false,"isSelf": true,"isArchived": false,"isEdited": true,"editedAt": "2026-05-20T15:02:57+00:00","isRobotIndexable": true,"isDeletedOrRemoved": false,"scoreHidden": false,"totalAwards": 0,"numCrossposts": 2,"isCrosspost": false,"domain": "self.Entrepreneur","postHint": "self","mediaType": "text","hasMedia": false,"galleryCount": 0,"titleLength": 31,"bodyLength": 1648,"wordCount": 268,"ageHours": 19.07,"scorePerHour": 80.9124,"commentsPerHour": 11.4315,"engagementTotal": 1761,"commentToScoreRatio": 0.1413,"dataType": "post"}
Video post — media block (same record, media fields only):
{"mediaType": "video","hasMedia": true,"isVideo": true,"postHint": "hosted:video","linkUrl": "https://v.redd.it/bmwscrxcv5lh1","outboundUrlHost": "v.redd.it","redditVideo": {"fallbackUrl": "https://v.redd.it/bmwscrxcv5lh1/CMAF_720.mp4?source=fallback","dashUrl": "https://v.redd.it/bmwscrxcv5lh1/DASHPlaylist.mpd","hlsUrl": "https://v.redd.it/bmwscrxcv5lh1/HLSPlaylist.m3u8","scrubberMediaUrl": "https://v.redd.it/bmwscrxcv5lh1/CMAF_96.mp4","duration": 68,"hasAudio": true,"isGif": false,"bitrateKbps": 2400,"width": 720,"height": 810,"transcodingStatus": "completed"}}
Gallery post — slides in author order:
{"mediaType": "gallery","isGallery": true,"galleryCount": 20,"galleryImages": [{"mediaId": "j2i7gq10o4lh1","url": "https://preview.redd.it/j2i7gq10o4lh1.jpg?width=4080&format=pjpg&auto=webp","width": 4080,"height": 3072,"type": "image/jpg","caption": null}],"previewImages": [{"url": "https://preview.redd.it/j2i7gq10o4lh1.jpg?auto=webp","width": 4080,"height": 3072,"resolutions": [{ "url": "https://preview.redd.it/j2i7gq10o4lh1.jpg?width=108&crop=smart", "width": 108, "height": 81 }]}]}
Link post with a third-party player (oEmbed):
{"mediaType": "embed","domain": "youtu.be","linkUrl": "https://youtu.be/bo-jhgy7EaA","outboundUrlHost": "youtu.be","embedMedia": {"provider": "YouTube","providerUrl": "https://www.youtube.com/","type": "video","title": "How I got my first 100 customers","authorName": "Founder Diaries","authorUrl": "https://www.youtube.com/@founderdiaries","width": 356,"height": 200,"thumbnailUrl": "https://i.ytimg.com/vi/bo-jhgy7EaA/hqdefault.jpg","thumbnailWidth": 480,"thumbnailHeight": 360}}
Crosspost — parent lineage:
{"isCrosspost": true,"numCrossposts": 1,"crosspostParentId": "t3_1vwi0ki","crosspostParent": {"id": "1vwi0ki","fullId": "t3_1vwi0ki","title": "ANTI-FACISM taken by Chris Juhn","author": "imadork42587","community": "r/AccidentalRenaissance","subreddit": "AccidentalRenaissance","url": "https://www.reddit.com/r/AccidentalRenaissance/comments/1vwi0ki/antifacism_taken_by_chris_juhn/","score": 192,"numberOfComments": 9,"createdAt": "2026-08-22T00:27:15+00:00","linkUrl": "https://i.redd.it/ucm6sm5sn6lh1.jpeg","isVideo": false}}
Comment record (thread mode):
{"type": "comment","id": "mq8xk2p","fullId": "t1_mq8xk2p","url": "https://www.reddit.com/r/Entrepreneur/comments/1kx9q2z/comment/mq8xk2p/","permalink": "/r/Entrepreneur/comments/1kx9q2z/comment/mq8xk2p/","postId": "1kx9q2z","parentId": "t3_1kx9q2z","body": "This matches my experience exactly. Cold outreach beat ads 10:1.","author": "sales_veteran","authorFullId": "t2_egqtl","authorFlairText": "Partassipant [1]","authorPremium": false,"community": "r/Entrepreneur","subreddit": "Entrepreneur","subredditId": "t5_2rgpr","score": 312,"upvotes": 312,"scoreHidden": false,"controversiality": 0,"createdAt": "2026-05-20T15:42:03+00:00","scrapedAt": "2026-05-21T09:12:45.108921+00:00","depth": 0,"isSubmitter": false,"isStickied": false,"isLocked": false,"isArchived": false,"isCollapsed": false,"isEdited": false,"isDeletedOrRemoved": false,"numberOfReplies": 4,"replyIds": ["mq9a1zz", "mq9b7kk", "mq9c0pd", "mq9d4xa"],"hasMoreReplies": true,"bodyLength": 64,"wordCount": 11,"ageHours": 17.5,"scorePerHour": 17.8286,"dataType": "comment"}
User record with extracted contacts:
{"type": "user","username": "startup_founder","url": "https://www.reddit.com/user/startup_founder","bio": "Building SaaS in public. More at myproduct.io","totalKarma": 48210,"linkKarma": 21876,"commentKarma": 26334,"createdAt": "2019-03-11T08:22:45+00:00","scrapedAt": "2026-05-21T09:12:46.004112+00:00","accountAgeDays": 2628.03,"isMod": false,"isEmployee": false,"verified": true,"hasVerifiedEmail": true,"hideFromRobots": false,"websites": ["https://myproduct.io"],"emails": ["hello@myproduct.io"],"phones": ["+14155550123"],"socialLinks": {"twitter": ["https://x.com/startupfounder"],"linkedin": ["https://linkedin.com/in/startupfounder"]},"dataType": "user"}
Community record (trimmed — posting-rules block abbreviated):
{"type": "community","id": "2qh0u","fullId": "t5_2qh0u","name": "pics","nameWithPrefix": "r/pics","url": "https://www.reddit.com/r/pics/","title": "Reddit Pics","description": "A place for photographs, pictures, and other images.","descriptionHtml": "<div class=\"md\"><p>A place for photographs, pictures, and other images.</p></div>","members": 33511629,"createdAt": "2008-01-25T00:31:09+00:00","scrapedAt": "2026-05-21T09:12:46.771351+00:00","isNsfw": false,"isQuarantined": false,"type_": "public","lang": "en","advertiserCategory": "Lifestyles","contentCategory": "photography","icon": "https://b.thumbs.redditmedia.com/VZX_KQLnI1DPhlEZ07bIcLzwR1W.png","banner": "https://styles.redditmedia.com/t5_2qh0u/styles/bannerBackgroundImage.jpg","mobileBannerImage": "https://styles.redditmedia.com/t5_2qh0u/styles/mobileBannerImage.jpg","headerTitle": "Something Clever","primaryColor": "#553200","keyColor": "#24a0ed","bannerBackgroundColor": "#5a74cc","submissionType": "link","submitLinkLabel": "Post Picture","allowImages": true,"allowVideos": false,"allowVideoGifs": true,"allowPolls": false,"allowGalleries": true,"allowedMediaInComments": ["giphy", "static", "expression", "video"],"restrictPosting": true,"restrictCommenting": false,"linkFlairEnabled": true,"userFlairEnabled": true,"spoilersEnabled": false,"wikiEnabled": true,"originalContentTagEnabled": true,"shouldArchivePosts": true,"commentScoreHideMins": 720,"acceptsFollowers": true,"dataType": "community"}
💰 How much does it cost to scrape Reddit?
Simple pay-per-result pricing — proxies, retries and platform usage included:
| Event | Free plan | Paid plans |
|---|---|---|
| Result (any record type) | $0.002 | from $0.0015 |
| Actor start | $0.00005 | $0.00005 |
Worked examples (free-plan prices):
| Scenario | Records | Cost |
|---|---|---|
| 1,000 search results | 1,000 | $2.00 |
| 100 subreddit posts with 20 embedded comments each | 101 (comments ride along free) | ~$0.20 |
| 1 thread with 500 comments as separate records | 501 | ~$1.00 |
| 100 user profiles with emails & socials | 100 | $0.20 |
💡 The Apify free plan includes $5 of usage credits every month — that's about 2,500 Reddit results per month for free, no credit card needed. On paid plans the per-result price drops to $0.0015 ($1.50 per 1,000).
There are no separate charges for comments embedded in posts, contact extraction, proxies or compute.
🔌 Integrations
Everything on the Apify platform works out of the box:
- Make, Zapier, n8n — trigger runs and route results into 5,000+ apps.
- Google Sheets — send datasets straight to a spreadsheet.
- Slack / email — get notified when a run finishes.
- Webhooks — ping your backend on run events.
- API clients — JavaScript and Python clients, REST API, Apify CLI.
- Schedules — run it hourly/daily/weekly for continuous monitoring.
🤖 Use with AI agents (MCP)
This actor works with the Apify MCP server, so AI agents and assistants (Claude, ChatGPT, Cursor and other MCP clients) can call it as a tool. Ask your agent things like:
"Scrape the top 50 posts from r/SaaS this month with their comments and summarize the biggest pain points people mention."
The agent runs the scraper, reads the dataset and answers — no manual export needed.
🎯 Popular use cases
- Lead generation — collect emails, phones and social profiles of active users in your niche.
- Market & audience research — track what target communities talk about, complain about and recommend.
- Brand & reputation monitoring — catch every mention of your product or competitors, on a schedule.
- Content & trend discovery — pull top/hot/rising posts to find ideas that already resonate.
- Sentiment analysis & AI training data — export large, clean post/comment datasets for NLP and LLM work.
- Influencer & community discovery — find the most active users and relevant subreddits in any topic.
- Academic research — structured public discourse data with timestamps and full metadata.
⚖️ Is it legal to scrape Reddit?
This actor extracts only publicly available data — the same posts, comments and profiles anyone can open in a browser without logging in. Web scraping of public data is generally legal, but you are responsible for how you use it: respect Reddit's terms of service, and if you collect personal data (emails, usernames), make sure you have a lawful basis under GDPR/CCPA and honor deletion requests. For a deeper overview, see Apify's guide: Is web scraping legal?
❓ FAQ
Does Reddit have a public API?
Yes, but since 2023 it requires app registration and paid access tiers for meaningful volumes. This actor gives you the same public data as structured JSON with no API key, no OAuth app and no rate-limit management on your side — a practical Reddit API alternative.
Do I need a Reddit account or API key?
No. The actor works anonymously out of the box — just paste keywords, URLs or usernames.
Do I need proxies to scrape Reddit?
No. You don't need to configure or supply anything — reliable access is fully automatic and already included in the per-result price.
Can I export Reddit data to CSV or Excel?
Yes. Download the dataset as JSON, CSV, Excel, HTML or XML from the Console, or fetch it via the API in any of those formats.
How many posts can I scrape from a subreddit?
The actor paginates automatically until it hits your maxPostsPerSource limit. Note that Reddit itself caps any single listing (hot/new/top) at roughly 1,000 items — that's a platform limit, not an actor limit. For older content, use keyword search with time-range filters.
Can I scrape all comments from a Reddit post?
You get up to 500 comments per post, nested up to 10 levels deep, sorted by top. By default the collapsed "load more comments" branches are left alone, and every comment tells you whether it has any (hasMoreReplies). Switch on Expand collapsed reply chains (expandMoreComments) and the actor follows those links too, pulling hidden branches until maxCommentsPerPost is reached.
Can I get the video and image URLs of a Reddit post?
Yes. Reddit-hosted videos come back in redditVideo with a directly playable MP4 (fallbackUrl), the DASH and HLS manifests, duration, bitrate, resolution and whether the clip has audio. Galleries come back in galleryImages — full-size URL, dimensions, MIME type and caption per slide, in the author's order. Third-party players (YouTube, Streamable, …) come back in embedMedia. Every post also carries previewImages with Reddit's own renditions at every thumbnail size, plus previewGifUrl / previewMp4Url for animated posts.
Which engagement metrics are calculated for me?
ageHours, scorePerHour, commentsPerHour, engagementTotal (score + comments), commentToScoreRatio, wordCount, titleLength and bodyLength on posts; ageHours, scorePerHour, wordCount and bodyLength on comments; accountAgeDays on users. These are derived by the actor from the values Reddit returns — handy for ranking or filtering without writing any post-processing.
Can I tell whether a post was edited, removed or crossposted?
Yes. isEdited / editedAt flag edits, isArchived and isLocked flag frozen threads, isDeletedOrRemoved flags tombstoned content ([deleted] / [removed]), and isCrosspost / crosspostParentId / crosspostParent give you the original post the content was crossposted from, including its own score and comment count.
How does the email finder work?
For each user profile, the actor finds websites linked in the bio, visits the home page and up to 4 contact-style pages per site, and extracts emails (including obfuscated name [at] domain formats), phone numbers and social links. Everything comes from publicly published pages.
Why do some users have no emails?
An email is only found if the user links a website in their profile and that site publishes contact details. Expect contact data on a subset of profiles — those are exactly the self-promoting founders, creators and freelancers most valuable for outreach.
Can I search within one subreddit only?
Yes — put the subreddit name in searchWithinCommunity and your keywords in items.
Can I scrape NSFW content?
Yes — NSFW content is included by default and can be excluded with the includeNSFW toggle.
Will I be charged for runs that return nothing?
Only the actor start fee of $0.00005 — essentially nothing. You pay per result actually saved, and maxItems plus Apify budget limits keep spending capped.
Can I schedule recurring Reddit scrapes?
Yes. Use Apify Schedules to run the actor hourly, daily or weekly — ideal for brand monitoring with sort: "new" and a time filter.
How fast is it?
The actor is fully asynchronous and processes up to 50 sources in parallel, each with its own session. A typical subreddit run streams results within seconds of starting.
What happens when Reddit rate-limits a request?
Each source runs in its own session with an independent rate-limit budget so limits don't stack, and failed requests are retried automatically (configurable up to 15 attempts). Transient 429/403 responses are handled without failing the run.
Why did I get fewer results than expected?
Common reasons: the subreddit has fewer matching posts than your limit, Reddit's ~1,000-item listing cap, NSFW filtering enabled, or a maxItems cap lower than the sum of your per-source limits. Records with empty fields are also compacted — fields that are null are omitted rather than padded.
🛟 Feedback & support
Found a bug or missing a feature? Open an issue on the Issues tab of this actor — issues are monitored and typically answered within a day. If a run behaves unexpectedly, share the run URL in the issue so it can be reproduced quickly.
🧰 More scrapers by this developer
| Actor | What it does |
|---|---|
| Website Contact Scraper | Bulk emails, phones & socials from any list of domains — $1/1k |
| Threads Scraper | Threads.net posts, profiles & replies with contact extraction |
| Instagram Scraper All-in-One | Profiles, posts, reels, followers, hashtags & bio contacts |
| Ultimate YouTube Scraper | Videos, transcripts, comments & channel emails — no API key |
| TikTok Profile Scraper | Profiles, full video catalogs, bio contacts & engagement analytics |
| Google Maps Scraper | Places with phones, websites, reviews & verified business emails |
Tags: reddit scraper, scrape reddit, reddit api alternative, reddit posts scraper, reddit comments scraper, subreddit scraper, reddit user scraper, reddit search scraper, reddit email scraper, reddit lead generation, reddit email finder, reddit data extractor, reddit crawler, reddit export csv, reddit sentiment analysis, reddit brand monitoring, reddit scraper no api key, reddit scraper without login, social media scraper, reddit MCP