Reddit User Profile & Activity Scraper avatar

Reddit User Profile & Activity Scraper

Pricing

$0.50 / 1,000 results

Go to Apify Store
Reddit User Profile & Activity Scraper

Reddit User Profile & Activity Scraper

Turn any Reddit username into a full profile dossier: karma breakdown, account age, trophies, plus every post and comment with scores, communities, dates and links. Includes ready-made stats — karma per day, top communities, posting cadence — for vetting, outreach, monitoring and research.

Pricing

$0.50 / 1,000 results

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Give this actor a list of Reddit usernames and it returns everything a public Reddit profile can tell you: account age, post and comment karma, trophies, and the account's actual posting history — every submission and every comment, with scores, subreddits, timestamps and links. On top of the raw activity it computes the things you would otherwise work out by hand: how old the account is in days, how much karma it earns per day, and which communities it is genuinely active in. It is built for anyone who needs to understand people on Reddit rather than threads — recruiters, community managers, brand and influencer teams, moderators vetting applicants, and researchers studying online behaviour.

No Reddit account, login or credentials required — paste the usernames and run it.

What you can do with it

  • Vet an account before you engage with it — see when it was created, how its karma accumulated, and whether its activity looks organic or bursty.
  • Find where a person is influential — the profile record ranks the subreddits they post in by volume and by the karma those items earned.
  • Build creator and advocate lists — run a list of usernames you collected elsewhere and get their full public activity in one dataset.
  • Track a competitor's or a partner's presence — schedule the actor and watch karma, posting cadence and community mix change over time.
  • Research community behaviour — export thousands of posts and comments per account for text analysis, sentiment work or academic study.
  • Screen moderator or contributor applicants — check history, tone and activity spread across communities in one pass.

What you get

Every run produces one profile record per username, plus one record per post and per comment collected for that account. Abridged examples of what lands in your dataset:

{
"type": "profile",
"status": "ok",
"username": "spez",
"url": "https://www.reddit.com/user/spez/",
"createdAt": "2005-06-06T19:39:12.000Z",
"accountAgeDays": 7723,
"totalKarma": 878341,
"postKarma": 205310,
"commentKarma": 673031,
"karmaPerDay": 113.73,
"isEmployee": true,
"isMod": true,
"verified": true,
"postsScraped": 42,
"commentsScraped": 100,
"totalCommentScore": 4754,
"medianCommentScore": 28.5,
"topSubreddits": [
{ "subreddit": "RDDT", "posts": 0, "comments": 41, "items": 41, "totalScore": 1123 },
{ "subreddit": "redditstock", "posts": 0, "comments": 28, "items": 28, "totalScore": 2264 }
],
"activeSubredditCount": 8,
"firstActivityAt": "2025-06-03T19:44:45.000Z",
"lastActivityAt": "2026-06-16T16:59:58.000Z",
"activitySpanDays": 377.89,
"commentsPerDay": 0.26,
"trophyCount": 41,
"scrapedAt": "2026-07-28T00:00:00.000Z"
}
{
"type": "comment",
"username": "spez",
"id": "os0o1vi",
"body": "And thank you (mod tools suck) u/shiruken!",
"url": "https://www.reddit.com/user/spez/comments/1u7hraf/21_years_of_reddit/os0o1vi/",
"subreddit": "u_spez",
"score": 93,
"createdAt": "2026-06-16T16:59:58.000Z",
"postId": "1u7hraf",
"postTitle": "21 years of Reddit",
"isSubmitter": true,
"isTopLevel": false
}

Input reference

FieldTypeDefaultWhat it does
usernameslist of strings["spez"]The accounts to scrape. spez, u/spez and full profile links all work. Invalid entries are skipped with a warning.
scrapePostsbooleantrueCollect each account's submissions.
scrapeCommentsbooleantrueCollect each account's comments.
maxPostsPerUserinteger100Posts to collect per account (0–1000).
maxCommentsPerUserinteger100Comments to collect per account (0–1000).
includeTrophiesbooleanfalseAdd the account's trophy case to its profile record.
sortselectnewnew, top, hot or controversial ordering of the history.
timeselectallPeriod used by top and controversial: hour, day, week, month, year, all.
postedAfterstringemptyKeep only activity newer than a date (2026-01-01) or a relative window (7d, 24h, 4w).
maxConcurrencyinteger4How many accounts are processed at the same time (1–10).
proxyCountryselectusCountry to appear to browse from.

Output fields

Profile records (type: "profile")

FieldTypeDescription
username, url, userIdtextThe account and its profile link.
statustextok, or not_found for suspended, deleted or non-existent accounts.
reason, messagetextOn a not_found record only: suspended when Reddit says so, otherwise not_found, plus a plain-English explanation.
displayName, descriptiontextProfile title and public description.
createdAt, accountAgeDaysdate / numberWhen the account was created and how old it is today.
totalKarma, postKarma, commentKarma, awardeeKarma, awarderKarmanumberKarma breakdown.
karmaPerDaynumberTotal karma divided by account age in days.
isEmployee, isMod, isGold, verified, hasVerifiedEmail, acceptsFollowers, over18booleanAccount flags.
avatar, banner, profileSubscriberstext / numberProfile imagery and follower count of the user's own profile community.
postsScraped, commentsScrapednumberHow much activity this run collected.
totalPostScore, totalCommentScore, medianPostScore, medianCommentScorenumberScore roll-ups over the collected activity.
topSubredditsarrayCommunities ranked by items collected, each with posts, comments, items, totalScore.
activeSubredditCountnumberDistinct communities seen in the collected activity.
firstActivityAt, lastActivityAt, activitySpanDaysdate / numberWindow the collected activity covers.
postsPerDay, commentsPerDaynumberCadence measured across that window.
trophyCount, trophiesnumber / arrayTrophy case, when requested.
scrapedAtdateWhen the record was produced.

Post records (type: "post") — id, title, url, permalink, subreddit, author, body, linkUrl, domain, score, upvoteRatio, numComments, numCrossposts, totalAwards, flair, createdAt, editedAt, isSelfPost, isVideo, isGallery, isCrosspost, over18, spoiler, locked, stickied, archived, thumbnail, and media[] (image, gallery, video with dashUrl and hlsUrl, or embed).

Comment records (type: "comment") — id, body, url, permalink, subreddit, author, score, controversiality, createdAt, editedAt, postId, postTitle, postUrl, parentId, isTopLevel, isSubmitter, depth, distinguished, stickied, collapsed.

Every record — profile, post and comment — carries the username you asked for, so a multi-account run is trivial to group and filter.

Pricing

Pay per result: $0.0005 per dataset item — $0.50 per 1,000.

You are charged only for the rows you receive, whether a row is a profile, a post or a comment. There is no monthly fee and nothing to pay for accounts that turn out to be suspended or deleted beyond the single placeholder row they produce.

  • A standard account pull — profile plus 100 posts and 100 comments, 201 rows — costs about $0.10.
  • A 50-account vetting batch at that depth is roughly $5.00.
  • A deep history dump on one power user (1,000 posts + 1,000 comments) is about $1.00.

Set a maximum charge on the run and the actor stops cleanly once it is reached, rather than overshooting your budget.

Limits and what this actor cannot do

  • About 1,000 items per history feed. Reddit itself stops any single feed at roughly 1,000 records. Posts and comments are separate feeds, so the practical maximum is about 1,000 posts and 1,000 comments per account. Older activity beyond that point is simply not reachable from a public profile — by anyone.
  • Public communities only. Activity that lives in a private, banned or otherwise closed community never appears on a public profile, so it cannot be collected. Ordinary and adult (NSFW) communities come back normally; content from quarantined communities has not been verified.
  • Accounts Reddit will not serve still appear, flagged. Any such username comes back as a record with status: "not_found", so the name never silently disappears from your dataset. Reddit does say outright when an account is suspended (reason: "suspended"), and a suspended account exposes nothing else — no karma, no creation date, no history. A deleted account and a name that never existed are indistinguishable from each other; both arrive as reason: "not_found".
  • Public data only. No private messages, no saved, hidden or upvoted items, no email addresses, no device or location data, no moderator-only information, and no voting history. If it is not on the public profile, it is not in the output.
  • No live presence. There is no "online now" signal and no way to tell whether an account is active at this moment — only what it has already done.
  • Deleted and removed content stays deleted. Items the user or a moderator removed come back with [deleted]/[removed] where the text used to be.
  • Trophy dates are mostly missing. Reddit publishes a grant date for only a handful of trophies — in a real 41-trophy case, three had one. The rest arrive with grantedAt: null.
  • time only applies to two orders. The top and controversial orders honour the time range; new and hot ignore it, exactly as Reddit does.
  • Date filtering behaves differently per order. With the new order the actor stops as soon as the history passes your cut-off, which makes recent-window runs fast; with the score-based orders it has to collect first and filter after.
  • Cadence figures describe the sample, not the lifetime. postsPerDay, commentsPerDay and activitySpanDays are measured across the activity this run collected. Raise maxPostsPerUser/maxCommentsPerUser for a longer window. karmaPerDay, by contrast, uses lifetime karma and full account age.
  • Very large jobs take longer. Reddit paces how quickly anyone can read it, so a huge username list is limited by Reddit itself rather than by the actor. The run keeps going, it just needs more time.

FAQ

Do I need a Reddit account? No. You do not need a Reddit account, a login, or any credentials — just enter what you want and run it.

How fast is it? A standard account — profile plus 100 posts and 100 comments — is done in a few seconds. Results come back in large batches, so longer histories scale smoothly, and several accounts are handled at once: a list of hundreds of usernames finishes in minutes.

Can I get a user's complete history? Up to about 1,000 posts and 1,000 comments. Reddit does not serve public profile history beyond that, for anyone.

What happens if a username is wrong or the account was banned? The run continues. That username gets a record with status: "not_found" — and reason: "suspended" when Reddit identifies it as a suspension — while everything else in your list is still scraped.

Can I run it on a schedule? Yes. Scheduling it daily or weekly and appending to the same dataset is a normal way to track karma growth, posting cadence and community shifts over time.

Can I feed it profile URLs from a spreadsheet? Yes. Full profile links, u/name handles and bare usernames can be mixed freely in the same list.

Is any of this private data? No. Everything the actor returns is what any visitor can already see on a public Reddit profile — it is simply collected, cleaned and summarised for you.