Reddit Scraper - Posts, Comments, Subreddits & Users
Pricing
from $2.45 / 1,000 results
Reddit Scraper - Posts, Comments, Subreddits & Users
Scrape Reddit posts by keyword, the hot, new or top posts of any subreddit, the comments under any post, and any user's posts and comments. Get score, upvote ratio, comment count, flair and author user ID. No login, cookies or API keys needed. Export to JSON, CSV or Excel.
Pricing
from $2.45 / 1,000 results
Rating
0.0
(0)
Developer
Silkline
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Security
Limited permissionsShare
Reddit Scraper works as a Reddit API for public data and returns clean, flat JSON from Reddit. As a subreddit scraper it covers posts by keyword, the posts of any subreddit (hot, new, top or most comments), the Reddit comments under any post (optionally with the replies hidden behind "load more"), the post and comment history of any user, Reddit's popular, home, news and games feeds, subreddit details and user profiles. It is built for researchers, marketers, analysts and AI or data teams who need Reddit text with clean metadata. No Reddit account, API keys, proxies or cookies are needed.
Pricing is pay-per-event: $0.003 per post or comment returned, plus a small start fee per run ($0.00005 on paid Apify plans); comments, subredditInfo and userProfile modes charge one more start fee for each input after the first. The full price list is in the "How much does it cost?" section below.
What data can you get?
Modes
| Mode | Give it | You get |
|---|---|---|
search | a keyword (optional: sort, time range) | posts matching the keyword across Reddit |
subreddit | subreddit names or links (optional: keyword, sort, time range) | the hot, newest, top or most-commented posts of each subreddit, optionally only those matching a keyword |
comments | post links, redd.it links or post IDs (optional: comment sort) | the comments under each post, with depth and parent comment |
userPosts | usernames or profile links (optional: sort) | the posts each user has written, newest first by default |
userComments | usernames or profile links (optional: sort) | the comments each user has written, with the title of the post they were written under |
feed | a feed: popular, home, news or games (optional: sort, time range) | the posts currently in that feed |
subredditInfo | subreddit names or links | one record per subreddit: description, members, weekly activity, creation date |
userProfile | usernames or profile links | one record per user: bio, karma, post and comment counts, account age |
Fields
Every item has "type": post, comment, subreddit or user. Posts and comments share some fields; others are only on one item type.
| Field | Item type | What it contains |
|---|---|---|
type | all | Record type: post, comment, subreddit or user |
title | post | Post title |
text | post, comment | Post body or comment text in Markdown |
score | post, comment | Net votes; null when Reddit hides the score |
upvoteRatio | post | Share of upvotes, for example 0.89 |
commentCount | post | Number of comments on the post |
subreddit | post | Subreddit name; a post on a user's own profile has u_<name> |
flair | post | Post flair text |
createdAt | post, comment | Creation time, ISO 8601 UTC |
url | post, comment | Link to the post or comment on reddit.com |
author | post, comment | Public username; null when the account is deleted |
authorId | post, comment | Author's Reddit user ID (the part after t2_); null when the account is deleted |
authorAvatar | post, comment | Author's avatar image URL; null when the account is deleted |
authorAccountType | post, comment | Author's account type, for example USER; null when the account is deleted |
postId | post, comment | Post ID (the part after t3_); on comments, the post they belong to |
commentId | comment | Comment ID |
parentCommentId | comment | ID of the comment this one replies to; null for top-level comments |
depth | comment | Nesting level of a comment, 0 = top level |
postTitle | comment (userComments mode) | Title of the post the comment was written under |
linkUrl | post | Target of a link post; null for text posts |
imageUrl | post | Preview image of a link or image post |
isSelfPost | post | true for text (self) posts |
isNsfw | post | NSFW flag |
isLocked | post | Whether the post is locked |
isStickied | post, comment | Whether the item is stickied |
name, subredditId, description, sidebar, subscribers, weeklyActiveUsers, weeklyContributions, subredditType, isQuarantined, language, iconUrl, topics | subreddit | Name, ID, short description, sidebar text (Markdown), members, visitors and contributions in the past week, type, quarantine flag, language, icon and the topics Reddit files it under |
username, userId, displayName, bio, avatar, totalKarma, postKarma, commentKarma, postCount, trophyCount, accountType, isVerified, isEmployee, isGilded | user | Public profile: names, bio, avatar, karma, number of posts and trophies, account type and badges |
commentCount | user | Number of comments the user has written (on posts it is the number of comments on the post) |
bannerUrl, createdAt, url, title, isNsfw | subreddit, user | Banner image, creation time, link to reddit.com, title (subreddit) and NSFW flag |
Public author profiles come with posts and comments: username, user ID, avatar and account type, for post authors and commenters alike (see "Tips and limits" for the userComments exception).
How to use Reddit Scraper
- Open Reddit Scraper on Apify and click Try for free (or Start if you already use it).
- Choose a Mode: search posts by keyword, subreddit posts, comments of posts, posts of users, comments of users, a feed, subreddit info or user profiles.
- Fill in the inputs for that mode: a keyword, subreddit names, post links or usernames. Pick a sort order and time range if you need them.
- Set Max results to the total number of items you want for the run.
- Click Start. The run stops as soon as it reaches
maxResults. - Open the dataset and export it as JSON, CSV, Excel or another format, or read it through the Apify API.
An empty input {} works too: it searches posts for "python".
Input
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
mode | string | required | search, subreddit, comments, userPosts, userComments, feed, subredditInfo or userProfile | search |
keyword | string | optional | Search keyword. In search mode it falls back to "python" when empty. In subreddit mode it narrows the subreddit's posts to those matching it. | none |
sort | string | optional | Sort for search: relevance, hot, top, new, comments | relevance |
subredditSort | string | optional | Sort for subreddit: hot, new, top, comments. Top works with the time range. | hot |
timeRange | string | optional | For search, subreddit and the popular and games feeds of feed: all, year, month, week, day, hour. Most useful with Top. | all |
subreddits | array of strings | for subreddit, subredditInfo | Subreddit names (python), r/python, or subreddit links | none (prefill: python) |
posts | array of strings | for comments | Post links (https://www.reddit.com/r/<subreddit>/comments/<id>/...), redd.it links, or post IDs | none |
commentSort | string | optional | Order of top-level comments: best, top, new, controversial, old | best |
users | array of strings | for userPosts, userComments, userProfile | Usernames (spez), u/spez, or reddit.com/user/<name> links | none (prefill: spez) |
userSort | string | optional | Order of each user's posts or comments: new, top, hot, controversial | new |
expandReplies | boolean | optional | For comments: also fetch the replies hidden behind "load more" links. Every reply delivered is charged as a result. | false |
feedType | string | optional | For feed: popular, home, news or games | popular |
feedSort | string | optional | Order of the popular and games feeds: hot, best, new, top, rising. The home and news feeds have a fixed order. | hot |
maxResults | integer | optional | Maximum number of items in total for the run (1 to 5,000). You are charged per item returned. | 20 |
maxResults is the total across all subreddits, posts or users in the run; a run stops as soon as it is reached.
Search Reddit posts by keyword
{"mode": "search","keyword": "web scraping","sort": "new","timeRange": "week","maxResults": 50}
Top Reddit posts of subreddits
{"mode": "subreddit","subreddits": ["python", "r/learnpython"],"subredditSort": "top","timeRange": "month","maxResults": 100}
Reddit comments of a post
{"mode": "comments","posts": ["https://www.reddit.com/r/Python/comments/1wwv97o/my_python_magic_is_gone/"],"commentSort": "top","maxResults": 100}
Reddit replies of a post
{"mode": "comments","posts": ["1wwv97o"],"expandReplies": true,"maxResults": 200}
Reddit popular feed
{"mode": "feed","feedType": "popular","feedSort": "top","timeRange": "day","maxResults": 50}
Subreddit details and Reddit user profiles
{"mode": "subredditInfo","subreddits": ["python", "r/learnpython"]}
{"mode": "userProfile","users": ["spez", "u/kn0thing"]}
Reddit posts of users
{"mode": "userPosts","users": ["spez", "u/kn0thing"],"userSort": "top","maxResults": 50}
Reddit comments of users
{"mode": "userComments","users": ["spez"],"userSort": "new","maxResults": 50}
Output example
The values below are illustrative samples.
Reddit post (modes search, subreddit, userPosts)
{"type": "post","postId": "1abc23d","url": "https://www.reddit.com/r/Python/comments/1abc23d/example_post_title/","title": "Example post title","text": "I've been coding for a long time ...","subreddit": "Python","author": "example_user","authorId": "1a2b3c4d5e","authorAvatar": "https://www.redditstatic.com/avatars/defaults/v2/avatar_default_0.png","authorAccountType": "USER","score": 820,"upvoteRatio": 0.89,"commentCount": 286,"createdAt": "2026-10-03T19:08:43Z","flair": "Discussion","linkUrl": null,"imageUrl": null,"isSelfPost": true,"isNsfw": false,"isLocked": false,"isStickied": false}
Subreddit details (mode subredditInfo)
{"type": "subreddit","subredditId": "2qh0y","name": "Python","url": "https://www.reddit.com/r/Python/","title": "Python","description": "The largest Python community for Reddit!","sidebar": "####[The Python Discord](https://discord.gg/python)","subscribers": 1519702,"weeklyActiveUsers": 111449,"weeklyContributions": 876,"createdAt": "2008-01-25T03:14:39Z","subredditType": "PUBLIC","isNsfw": false,"isQuarantined": false,"language": "en","iconUrl": "https://styles.redditmedia.com/t5_2qh0y/styles/communityIcon_example.png","bannerUrl": null,"topics": ["Programming"]}
Reddit user profile (mode userProfile)
{"type": "user","userId": "1w72","username": "spez","url": "https://www.reddit.com/user/spez/","displayName": "spez","bio": "Reddit CEO","createdAt": "2005-06-06T04:00:00Z","avatar": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_example.png","bannerUrl": null,"totalKarma": 941124,"postKarma": 184586,"commentKarma": 756538,"postCount": 849,"commentCount": 3219,"trophyCount": 54,"accountType": "USER","isVerified": true,"isEmployee": true,"isGilded": true,"isNsfw": false}
Reddit comment (mode comments)
{"type": "comment","commentId": "k9x8y7z","postId": "1abc23d","parentCommentId": "k9x1a2b","text": "Same here. Try building something small just for fun.","author": "sample_commenter","authorId": "9z8y7x6w5v","authorAvatar": "https://www.redditstatic.com/avatars/defaults/v2/avatar_default_3.png","authorAccountType": "USER","score": 41,"depth": 1,"createdAt": "2026-10-03T21:15:02Z","isStickied": false,"url": "https://www.reddit.com/r/Python/comments/1abc23d/example_post_title/k9x8y7z/"}
Reddit user comment (mode userComments)
userComments items are comments with the same fields plus postTitle. depth, parentCommentId, isStickied, authorId, authorAvatar and authorAccountType are always empty here.
{"type": "comment","commentId": "m1n2o3p","postId": "1def45g","postTitle": "Example discussion thread","parentCommentId": null,"text": "Thanks for the feedback, we are looking into it.","author": "example_user","authorId": null,"authorAvatar": null,"authorAccountType": null,"score": 15,"depth": null,"createdAt": "2026-10-05T08:30:00Z","isStickied": null,"url": "https://www.reddit.com/comments/1def45g/_/m1n2o3p/"}
How much does it cost?
Reddit Scraper uses pay-per-event pricing. You pay a start fee for each run and a fee for each post, comment, subreddit record or user profile returned. In comments, subredditInfo and userProfile modes every input after the first (post, subreddit or user) also pays one more start fee, charged before its first request.
| Charge event | Bronze | Silver | Gold, Platinum, Diamond |
|---|---|---|---|
| Run start (once per run) | $0.00005 | $0.00005 | $0.00005 |
| Result (each post, comment, subreddit record or user profile returned) | $0.003 | $0.002707 | $0.002446 |
Worked examples:
- 100 results on Bronze: $0.00005 + 100 × $0.003 = $0.30005.
- 1,000 results on Bronze: $0.00005 + 1,000 × $0.003 = $3.00005.
- Comments of 3 posts, 100 comments in total: 3 × $0.00005 start fees (one per post) + 100 × $0.003 = $0.30015.
On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.
The run-start fee is charged when the first request succeeds, even if that request returns nothing. It is not charged when the run fails from the start or rejects the IDs, or when the spending limit cannot cover it. You never pay for more than maxResults items, and items that were not delivered are never charged. The run stops by itself if your spending limit is reached.
Use cases
- Market and product research: collect what people say about a product, a competitor or a problem, in their own words, with score and comment count to see what gets attention.
- Brand and trend monitoring: pull new posts about a topic every day with
sort: new, or the top posts of a subreddit this week withsubredditSort: topandtimeRange: week. - Lead and idea discovery: find the questions people ask in niche communities by searching a keyword inside specific subreddits.
- Discussion analysis: export full comment threads with
depthandparentCommentIdto rebuild who replied to whom. - User activity research: list the posts or comments a public user has written, with the subreddit or post title for each.
- AI and data projects: Reddit text in Markdown with clean metadata for LLM training sets, sentiment analysis and summaries.
Why use this Reddit scraper
- No account, no cookies, no proxies. You give keywords, links or IDs; the Actor does the rest.
- You pay for data you get. Per-result fees are charged only for records delivered to your dataset. A failed or empty run tells you why in its status message and whether anything was charged.
- It runs. In the 30 days to 2 November 2026, 30 of 30 public runs succeeded (100%, Apify run statistics).
- Try before paying. On a free Apify plan you get 2 free trial runs with your own input, up to 10 results each, nothing charged.
- Flat JSON records ready for spreadsheets, databases and AI pipelines; export as JSON, CSV or Excel.
Integrations and API
You can start runs from your own code through the Apify API, schedule runs (for example daily monitoring of a keyword or subreddit), and send results to other tools with Apify integrations and webhooks. Results are stored in an Apify dataset that you can download as JSON, CSV, Excel and other formats.
Python example with apify-client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("clover_folktale/reddit-scraper").call(run_input={"mode": "subreddit","subreddits": ["python", "r/learnpython"],"subredditSort": "top","timeRange": "month","maxResults": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Use it from AI agents (MCP, n8n, Make)
This Actor works as a tool for AI agents through the Apify MCP server. Add it to Claude, Cursor or any MCP client with https://mcp.apify.com?tools=clover_folktale/reddit-scraper, and the agent can search Reddit and read the results itself. It also has ready-made integrations for n8n, Make and Zapier on the Apify platform.
Tips and limits
- Stability: the Actor retries transient errors on its own (and empty pages in
searchandsubredditmodes) and stops cleanly instead of failing half-way. - Page sizes and speed: pages hold up to 7 posts (
searchandsubredditmodes) or up to about 8 comments (commentsmode, often fewer), so large runs make many requests; expect roughly 2-5 seconds per page.userPostsanduserCommentspages hold about 23-25 items. - Comments mode: comments come in the order Reddit gives them for your sort: one top-level comment per page together with its visible replies. Replies hidden behind "load more" are not expanded unless you turn on
expandReplies; with it, replies are fetched only while the comments already delivered cover the extra requests, so a very deep thread may come back with some replies still folded. Removed and deleted comments are skipped and not charged. The post is looked up first, so an unknown post is skipped. - Subreddit mode: sorts are hot, newest, top (combine with a time range) and most comments. Unknown subreddits are skipped.
- User modes: comment text in
userCommentsis cut by Reddit at 300 characters. Theurlof these comments opens the comment through its post. Comments of users carry no NSFW flag, so unlike posts they are not filtered. An unknown or empty user is skipped and not charged. InuserPosts, a post on the user's own profile hasu_<name>as its subreddit. - Feeds:
popularandgamestake a sort (and a time range with Top);homeandnewshave a fixed order. Pages hold about 7-9 posts, and the next page of a feed is requested only when the previous page had at least 3 safe posts (repeats included) and at least 1 new one. Thenewsandgamesfeeds come as the app's layout cells, so their posts have notext,flair,isLockedorisSelfPost, andauthorAvataris empty. Feeds change all the time: two runs rarely give the same posts. - Subreddit and user records: an unknown name returns nothing and has no result fee (inputs after the first still pay their start fee). NSFW subreddits and NSFW profiles are left out like NSFW posts.
- NSFW: NSFW posts are left out, and the comments of an NSFW post are not fetched; none of this is charged.
- Freshness: scores and counts are what Reddit shows at the time of the run.
- Fields that are often empty:
- In
search,imageUrlis empty for text-only posts andlinkUrlisnullfor self-posts. - In
subredditanduserPostsmodes,textis empty for link posts, which have no body. - In
userComments,depth,parentCommentId,isStickied,authorId,authorAvatarandauthorAccountTypeare always empty. author,authorId,authorAvatarandauthorAccountTypearenullwhen the account is deleted.scoreisnullwhen Reddit hides the score.
- In
- Unreadable entries. If one entry of an ID or link list cannot be read (a typo, a stray cell, a link to the wrong kind of page), it is skipped and named in the log, and the status message says how many were skipped; the other entries still run and nothing is charged for a skipped one. Only a list with no readable entry stops the run with an input error.
- Free plan. On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.
FAQ
Do I need a Reddit account, login or API key?
No. You do not need a Reddit account, API keys, proxies or cookies. Enter a keyword, subreddit, post link or username and run.
Can I use it as a Reddit API alternative?
It returns public Reddit posts and comments as structured JSON without a Reddit API key, which covers many common API use cases such as search, subreddit listings, comment threads and user history. It is an independent tool and is not affiliated with Reddit.
Is it legal to scrape Reddit?
The Actor returns only public data: public posts, public comments and public profile data (username, user ID, avatar and account type). It does not return private data such as private messages or email addresses. You are responsible for how you use the data and for following the laws and rules that apply to you.
How fresh is the data?
Data is collected live when you run the Actor. Scores and counts are what Reddit shows at the time of the run.
Why are some fields empty?
Some fields do not exist for some items. Text posts have no linkUrl, link posts have no text, deleted accounts have no author data, and userComments items have no depth, parent comment or author ID/avatar. See "Tips and limits" for the full list.
How many results can I get?
Up to 5,000 items per run, set with maxResults. The limit is the total across all subreddits, posts or users in the run.
Can I schedule runs and export the data?
Yes. You can schedule runs in Apify, start them through the API, and export each dataset as JSON, CSV, Excel and other formats.
A field or mode is missing. What can I do?
Open an issue from the Actor page and it will be looked at.
Support
Found a bug, a missing field or a mode you need? Open an issue on the Issues tab. We reply within 24 hours, and a mode that stops working is fixed within 24 hours. What changed and when is listed on the Changelog tab.
Other tools by Silkline
Every tool below charges per result and needs no login or cookies.
Global platforms
- TikTok Scraper - Video Search, Hashtags, Profiles & Sounds
- TikTok Live Scraper - Search, Status, Rankings & Gifters
- YouTube Shorts Scraper - Search, Channel Shorts & Videos
- Instagram Scraper - Posts, Reels, Profiles & Followers
- Threads Scraper (Meta) - Posts, Replies, Profiles & Search
- Telegram Channel Scraper - Messages, Search & Subscribers
- IMDb Scraper - Top 250 Movies & TV Shows Chart, Ratings
More from Silkline
- Xiaohongshu 小红书 RedNote Scraper - Notes, Comments & Replies (Chinese social media and content)
- Taobao Tmall 淘宝 Product Scraper - Prices, Sales & Shops (E-commerce)
- Douyin Xingtu 巨量星图 KOL Scraper - Rates, CPM & Rankings (Marketing and creator data)