Reddit User Scraper - Profiles, Karma, Posts & Comments
Under maintenancePricing
from $0.99 / 1,000 row saveds
Reddit User Scraper - Profiles, Karma, Posts & Comments
Under maintenanceReddit profiles for 1 to 1,000 usernames per run: post and comment karma, account age, followers, verified badge, premium and bio, plus each account's newest posts and comments if you want them. Suspended, deleted and missing accounts are listed and never charged.
Pricing
from $0.99 / 1,000 row saveds
Rating
0.0
(0)
Developer
Kamil Ertekin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Reddit User Scraper - Profiles, Posts & Comments
Paste as many as 1,000 Reddit usernames or profile links and get one row per account: karma split into post and comment karma, account age, followers, verified badge, premium status, bio and avatar. Add each account's newest posts and comments as extra rows if you need them. Built for audience research, creator and partner vetting, and community moderation. No Reddit account or login needed.
What it is for
- Audience research. You have the usernames from a thread or a community and want to know who they are as a group: how old the accounts are, how much they post, how many are new.
- Creator and partner vetting. Before you sponsor, hire or partner with a Reddit creator, check account age, karma, verified badge and what they have posted lately.
- Moderation. Check the accounts in your mod queue or your mod applicants: account age, karma split, whether the profile is marked 18+, and which subreddits they already moderate.
It reads only what any visitor sees on a public profile. It is built for looking at accounts in bulk for these purposes, not for building a file on one private person.
Measured
Measured on 2026-10-20 on this Actor, with comment authors taken from recent Reddit threads:
| Run | Accounts in | Rows saved | Time | Rows per minute |
|---|---|---|---|---|
| Profile only | 1,000 | 944 | 38.8 min | 24 |
| Profile only | 100 | 95 | 4.0 min | 24 |
| Profile + posts + comments, 25 of each | 20 | 576 (20 profiles, 228 posts, 328 comments) | 4.1 min | 140 |
| Three profile-only runs started together | 3 x 30 | 87 | 3.4 to 3.8 min each | 23 combined |
Of the 1,000 usernames, 55 were suspended and 1 did not exist. Those 56 were listed for free, so the run was charged for 944 rows. Runs in the same account share one pace: three at once finished in about the time one 90-account run takes, so splitting a list into parallel runs does not make it faster.
What you get
One row per account (recordType: profile):
| Field | Example | Notes |
|---|---|---|
username, id, profileUrl | GallowBoob, t2_iqsg6 | Original capitalisation |
karmaTotal, karmaFromPosts, karmaFromComments | 36838255, 35727417, 1110838 | Filled on all 944 measured rows |
createdAt, accountAgeDays | 2014-10-07T09:38:40.859Z, 4396 | Account creation, UTC, ISO 8601 |
postCount, commentCount | 12730, 14642 | What the profile reports in total, not what this run saved |
followers | 33919 | Most accounts have none: 38 of 944 (4%) had more than zero |
verified | false | The verified badge. 2 of 944 measured accounts had it |
premium, isEmployee | true, false | |
displayName, title, bio | Rob, The internet was a mistake | A bio is set on 18% of accounts |
avatarUrl, bannerUrl, socialLinks | ||
isNsfw | false | The profile itself is marked 18+. 209 of 944 measured accounts (22%) |
historyCuratedByUser | false | The account hides part of its history from its public profile. 310 of 944 (33%) |
hasProfilePage | true | 1 of 944 measured accounts had karma but no profile page; such rows have no bio, followers or banner |
trophyCount | 44 | Filled on 942 of 944 measured rows |
trophies | [{"name": "Verified Email", "grantedAt": "2023-01-01T00:00:00.000Z"}] | Only when "Trophy list" is on |
isMod, moderatedSubreddits | true, [{"name": "StoppedWorking", "subscribers": 626052}] | Only when "Moderated subreddits" is on |
trophies, isMod and moderatedSubreddits are empty, not false or [], when you did not ask for them. An empty value that means "not requested" must never read as "moderates nothing".
Posts (recordType: post) have the same columns as our Reddit Search Scraper: title, text, link, subreddit, score, upvote ratio, comment count, flair and flat media columns. profileUsername says which account they came from. Posts on the account's own profile show the subreddit as u_<name>.
Comments (recordType: comment) have the same columns as our Reddit Comments Scraper: text, score, date, link, post ID, post title and subreddit. Comments longer than 300 characters are saved in full, with their parent ID, edit date and flair. Shorter comments come with their complete text, but parent ID, edit date and flair are empty. In the 20-account run, 26 of 328 comments (8%) were long enough to need the full fetch. subreddit was empty on 43 of 328 comments (13%): 23 of those were on posts deleted since.
Suspended, deleted and nonexistent accounts are not rows. They are listed for free in the Skipped accounts record and in the run message, so you can see exactly which names did not resolve and why.
How to use it
- Paste usernames, one per line.
spez,u/spezandhttps://www.reddit.com/user/spez/all work. The same account listed twice is collected once. - Pick what to collect: profile only, or profile plus posts, comments or both.
- Click Start and download CSV, Excel or JSON from the Output tab. Switch between the Profiles, Posts and Comments views.
{"usernames": ["spez", "u/GallowBoob"],"mode": "all","maxPostsPerUser": 25,"maxCommentsPerUser": 25}
Input
| Field | What it does |
|---|---|
| Usernames or profile links | 1,000 per run at most. Lines that are not usernames are skipped and listed in the run summary. |
| What to collect | Profile only (profile), profile_posts, profile_comments or all. |
| Max posts / comments per account | Newest first, 0 to 1,000 each. |
| Full text of long comments | On by default. Off saves one step per long comment, but those comments stop at 300 characters (bodyTruncated: true). |
| Trophy list | Adds the list of trophies. Slower: one extra step per account. |
| Moderated subreddits | Adds isMod and the list. Slower: one extra step per account. |
| Include 18+ posts | Off by default. Accounts are never skipped for being 18+; only 18+ posts are left out. |
Calling it from code or an AI agent? users, profiles, profileUrls, urls and startUrls work for the usernames. maxPosts and maxComments work for the limits, and includePosts and includeComments (true or false) work instead of mode. Fields the scraper doesn't know are ignored and listed in the run message.
Output example
{"recordType": "profile","username": "GallowBoob","profileUrl": "https://www.reddit.com/user/GallowBoob/","displayName": "Rob","createdAt": "2014-10-07T09:38:40.859Z","accountAgeDays": 4396,"karmaTotal": 36838255,"karmaFromPosts": 35727417,"karmaFromComments": 1110838,"postCount": 12730,"commentCount": 14642,"followers": 33919,"verified": false,"premium": true,"isNsfw": false,"trophyCount": 44,"isMod": null}
Pricing
You pay per saved row, whether it is a profile, a post or a comment. There is no start fee.
| Apify plan | Discount tier | Per 1,000 rows | Per row |
|---|---|---|---|
| Free | No discount | $1.29 | $0.00129 |
| Starter | Bronze | $1.19 | $0.00119 |
| Scale | Silver | $1.09 | $0.00109 |
| Business | Gold | $0.99 | $0.00099 |
- 1,000 profiles cost $1.29 on the Free plan. 20 accounts with 25 posts and 25 comments each are at most 1,020 rows, so about $1.32.
- Suspended, deleted and nonexistent accounts are free. The same account or post twice in one run is charged once.
- Set "Maximum cost per run" in Run options for a hard cap. If that cap is too low to save even one row, the run says so and collects nothing.
FAQ
Why did I get fewer posts than postCount? postCount is the total the profile reports, and your per-account limit usually stops first. When it does not, the account may hide part of its history (historyCuratedByUser: true), or the posts were removed. The run summary shows, per account, whether collection ended at your limit or because nothing more was visible.
Why are some accounts missing from the dataset? They are suspended, deleted or do not exist. Each is listed in the Skipped accounts record with its reason, and none is charged.
How long does a run take? Profile only runs at about 24 accounts a minute, so 1,000 accounts took 38.8 minutes. With 25 posts and 25 comments per account, 20 accounts took 4.1 minutes. Set the run timeout in Run options above that. A run that hits its timeout keeps what it saved. To finish the list in the same dataset, open the run and choose Actions > Resurrect with a longer timeout: rows already saved are not charged again.
Can I run it on a schedule? Yes. Save the input as a task and add a schedule. Results can go to Google Sheets, Slack, Make, Zapier or n8n through Apify integrations.
Limits
- At most 1,000 accounts per run, and at most 1,000 posts and 1,000 comments per account, newest first.
- Public data only: no email, location, private messages or voting history.
- Comments carry no 18+ marker, so "Include 18+ posts" cannot filter them.
- Scores, karma and follower counts are a snapshot from the moment of collection.
Changelog
0.1 (2026-10-20). First release. The first 100-account test skipped 23 accounts because their profiles are marked 18+. That rule dropped almost a quarter of the list, so accounts are never skipped for it now: isNsfw reports it and "Include 18+ posts" filters posts only.
Questions or a missing field? Open an issue in the Issues tab with your run ID.