Reddit Scraper API — Posts, Comments, Media, Leads, Emails avatar

Reddit Scraper API — Posts, Comments, Media, Leads, Emails

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Reddit Scraper API — Posts, Comments, Media, Leads, Emails

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

Raven

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

0

Monthly active users

15 days ago

Last modified

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.


Reddit Scraper on Apify — every post every comment as structured JSON

Raven · Social-media suite   •  Instagram, TikTok, YouTube, Reddit, Threads, Pinterest
 Reddit Scraper
➤ You are here
 Threads Scraper
Posts, profiles, replies
 YouTube Scraper
Videos, comments, transcripts
 Instagram Scraper
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.

SourceData you get
📝 Poststitle, 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
💬 Commentsnested 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
🧑 Userspost / 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
🔍 Searchposts, 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 typeWhat to put in Items
🔍 Search by keywordsearch terms (e.g. nike running shoes)
📋 Posts from a communitysubreddit names or URLs (Entrepreneur, r/python)
💬 Post / thread + commentspost URLs or IDs
🧑 User profilesusernames or profile URLs (spez, u/spez)
🔗 Any Reddit URLa 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 unpackedredditVideo (MP4 fallback, DASH, HLS, duration, bitrate, audio flag), galleryImages with captions in author order, embedMedia for YouTube-style players, previewImages with 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-processingageHours, scorePerHour, commentsPerHour, engagementTotal, commentToScoreRatio, wordCount, titleLength, bodyLength are 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 maxItems cap, 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 APITypical Reddit scrapersThis actor
SetupApp registration + OAuthVariesPaste input, press Start
Data typesAll, behind rate limitsUsually one per actor (posts or comments)Posts + comments + users + communities + search
Commercial usePaid contracts since 2023Pay per resultFrom $1.50 / 1,000 results
Comments pricingOften charged per commentFree when embedded in subreddit posts
Email / contact extraction✅ Included
ProxiesYour problemSometimes extraBuilt 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

GroupFields
Identityid, fullId, url, permalink, oldRedditUrl, dataType
Contenttitle, body, bodyHtml, domain, linkUrl, outboundUrlHost, postHint
Authorauthor, authorFullId, authorFlairText, authorPremium, authorCakeday, distinguished
Communitycommunity, subreddit, subredditId, subredditSubscribers, subredditType
Engagementscore, upvotes, upvoteRatio, numberOfComments, numDuplicates, totalAwards, scoreHidden
Flairflair, flairTemplateId, flairBackgroundColor, flairTextColor
FlagsisNsfw, isSpoiler, isPinned, isLocked, isArchived, isEdited, editedAt, isVideo, isSelf, isGallery, isOriginalContent, isRobotIndexable, isRedditMediaDomain, isDeletedOrRemoved, suggestedSort, contentCategories
CrosspostsnumCrossposts, isCrosspost, crosspostParentId, crosspostParent
Mediamedia, mediaType, hasMedia, redditVideo, embedMedia, galleryImages, galleryCount, previewImages, previewGifUrl, previewMp4Url, thumbnail, thumbnailWidth, thumbnailHeight
TimecreatedAt, createdTimestamp, scrapedAt
Derived metricstitleLength, bodyLength, wordCount, ageHours, scorePerHour, commentsPerHour, engagementTotal, commentToScoreRatio
Subreddit mode extratopComments

Nested media objects:

  • redditVideofallbackUrl, dashUrl, hlsUrl, scrubberMediaUrl, duration, hasAudio, isGif, bitrateKbps, width, height, transcodingStatus
  • embedMediaprovider, providerUrl, type, title, authorName, authorUrl, html, width, height, thumbnailUrl, thumbnailWidth, thumbnailHeight
  • galleryImages[]mediaId, url, width, height, type, caption
  • previewImages[]url, width, height, resolutions[]
  • crosspostParentid, 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, outboundUrlHost and oldRedditUrl are computed by this actor from the values Reddit returns — they are not separate Reddit fields.


🚀 How to scrape Reddit step by step

  1. Create a free Apify account — it comes with $5 of free usage credits every month (≈ 2,500 results with this actor).
  2. Open Reddit Scraper All-in-One in Apify Console.
  3. Pick a Scrape type — keyword search, subreddit, post/thread, user profiles, or mixed URLs.
  4. Paste your items — keywords, subreddit names, post URLs or usernames, one per line.
  5. Set your limits — max items, posts per source, comments per post.
  6. Click Start and watch records stream into the dataset.
  7. 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:

  1. Reads the bio and finds linked websites and social handles.
  2. Visits each linked website (up to 5 per profile): the home page plus up to 4 likely contact pages (/contact, /about, /impressum, /team, …).
  3. Harvests email addresses (including mailto: links and obfuscated name [at] domain [dot] com formats), phone numbers (including tel: 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, depth and replyIds let you rebuild the exact tree, and hasMoreReplies shows where Reddit truncated it.
  • Expand collapsed reply chains — set expandMoreComments to true and the actor follows Reddit's "load more comments" links, pulling the hidden branches until maxCommentsPerPost is 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 topComments field. 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

ParameterTypeDefaultDescription
scrapeTypeselectsearchHow to interpret items: search, subreddit, post, user, or url (auto-detect)
itemsarrayKeywords, subreddit names, post URLs/IDs, usernames or mixed URLs — one per line
sortselectnewrelevance, hot, top, new, rising, comments
timeselectallTime window: all, hour, day, week, month, year
searchWithinCommunitystringLimit keyword search to one subreddit (name without r/)
searchPostsbooleantrueReturn posts for search terms
searchCommunitiesbooleanfalseReturn subreddits for search terms
searchUsersbooleanfalseReturn user profiles for search terms
scrapeCommentsbooleantrueFetch comments for posts
maxCommentsPerPostinteger50Max comments per post
expandMoreCommentsbooleanfalseFollow "load more comments" links to capture deeply nested reply chains
includeCommunityDetailsbooleantrueOutput a community record before each subreddit's posts
includeNSFWbooleantrueInclude adult content
includeUserPostsbooleantrueInclude each user's recent posts
includeUserCommentsbooleantrueInclude each user's recent comments
maxUserPostsinteger25Max recent posts and comments per user
extractContactsbooleantrueHarvest emails, phones & socials from profile websites
maxItemsinteger50Hard cap on total results (cost control)
maxPostsPerSourceinteger50Max posts per subreddit / search
maxConcurrencyinteger10Parallel sources (1–50)
maxRetriesinteger5Retries 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:

EventFree planPaid plans
Result (any record type)$0.002from $0.0015
Actor start$0.00005$0.00005

Worked examples (free-plan prices):

ScenarioRecordsCost
1,000 search results1,000$2.00
100 subreddit posts with 20 embedded comments each101 (comments ride along free)~$0.20
1 thread with 500 comments as separate records501~$1.00
100 user profiles with emails & socials100$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 clientsJavaScript 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.


  • 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.

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

ActorWhat it does
Website Contact ScraperBulk emails, phones & socials from any list of domains — $1/1k
Threads ScraperThreads.net posts, profiles & replies with contact extraction
Instagram Scraper All-in-OneProfiles, posts, reels, followers, hashtags & bio contacts
Ultimate YouTube ScraperVideos, transcripts, comments & channel emails — no API key
TikTok Profile ScraperProfiles, full video catalogs, bio contacts & engagement analytics
Google Maps ScraperPlaces 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