Reddit Users V2 — Profiles + My Account & Followers (19) avatar

Reddit Users V2 — Profiles + My Account & Followers (19)

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Reddit Users V2 — Profiles + My Account & Followers (19)

Reddit Users V2 — Profiles + My Account & Followers (19)

Look up any Reddit user (profile, trophies, posts, comments, pinned) and read your own account (active subs, real username, email & phone, prefs, location, followers, account, feeds). Follow/unfollow, validate usernames, flair policy. 19 endpoints — 8 anonymous, 11 saved-account.

Pricing

from $1.99 / 1,000 results

Rating

5.0

(1)

Developer

Red Crawler

Red Crawler

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

2

Monthly active users

2 days ago

Last modified

Share

Reddit Users V2

Endpoints Auth Proxy Pricing

Nineteen self-contained user-account endpoints — full profile, summary, trophies, post / comment history, pinned posts, username validation, plus the 10 "My account" endpoints that require a signed-in Reddit account (full identity payload, real username, email & phone, preferences, location, active subreddits, followers, private feeds, flair policy, follow / unfollow).

The first 9 endpoints are anonymous — no Reddit account, no proxy required. The 10 bearer endpoints reuse a Reddit account you've already saved in the Reddit Vault actor (or you can paste a Token V2 + matching proxy directly).

Pick an endpoint, fill the matching section, hit Start.


What you can fetch

Every "by name" / target-username field accepts a username in any of these formats — paste whichever you have:

  • raw username — spez
  • prefixed — u/spez
  • profile URL — https://www.reddit.com/user/spez
  • old-Reddit URL — https://old.reddit.com/u/spez

Public endpoints (no Reddit account needed)

1. Profile by Name — full Redditor identity

The richest user record. Pulls everything Reddit exposes for an account on the profile page header.

Returns: Reddit ID, username, prefixed name (u/...), account creation date, total karma split into post / comment / award / awardee karma, contribution counts, snoovatar, profile icon, banner, public description, social links, employment / location info, accepted-DMs flag, accepted-chats flag, accepted-followers flag, isFollowed, NSFW flag, isModerator flag, isEmployee flag, premium status (Reddit Gold), trophy-case totals, verification flags.

Use it when: you need a complete profile picture in a single call — bios, audience-research dashboards, account-quality scoring, KYC-style background checks.

Example

Input

{
"endpoint": "profile",
"profile_username": "spez"
}

Output (one dataset record)

{
"endpoint": "profile",
"__typename": "Redditor",
"id": "t2_1w72",
"name": "spez",
"prefixedName": "u/spez",
"accountType": "USER",
"isEmployee": true,
"isFriend": false,
"isBlocked": false,
"isAcceptingChats": false,
"isAcceptingFollowers": true,
"isAcceptingPMs": false,
"profile": {
"createdAt": "2005-06-06T04:00:00.000000+0000",
"title": "spez",
"publicDescriptionText": "Reddit CEO",
"path": "/user/spez/",
"isNsfw": false,
"isContributor": false,
"isSubscribed": false
},
"rate_limit_used": 3,
"rate_limit_remaining": 1797,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

2. Profile Info by Name — karma + profile-page info

A focused subset oriented around the public profile page rather than the full identity. Slightly different field set from "Profile by Name".

Returns: banner image, public description, NSFW flag, social links, total karma, contribution stats (post + comment count), trophy-case total, account type (regular / brand / employee).

Use it when: you only need the public-facing profile-page payload (banner, bio, link list, totals) and don't need the deeper identity fields.

Example

Input

{
"endpoint": "profile_about",
"profile_about_username": "spez"
}

Output (one dataset record)

{
"endpoint": "profile_about",
"__typename": "Redditor",
"id": "t2_1w72",
"name": "spez",
"prefixedName": "u/spez",
"accountType": "USER",
"isEmployee": true,
"isAcceptingChats": false,
"isAcceptingFollowers": true,
"karma": { "total": 937988 },
"contributionStats": { "postCount": 831, "commentCount": 363 },
"trophyCase": { "totalUnlocked": 50 },
"icon": {
"url": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png?frame=1&auto=webp&crop=256%3A256%2Csmart&s=…"
},
"profileInfo": {
"__typename": "Profile",
"id": "t5_3k30p",
"createdAt": "2005-06-06T04:00:00.000000+0000",
"title": "spez",
"publicDescriptionText": "Reddit CEO",
"isNsfw": false,
"socialLinks": []
},
"isGilded": true,
"rate_limit_used": 4,
"rate_limit_remaining": 1796,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

3. Profile Details by Name — profile-as-subreddit settings

Every Reddit profile is technically also a subreddit (u_spez). This endpoint returns those subreddit-style settings.

Returns: post permissions (who can post on the user's profile), flair settings, mod permissions, contributor / subscriber status, whitelist status, NSFW flag, the user's authorFlair (their flair on their own profile).

Use it when: you need to know whether a profile accepts posts from others, how it's flaired, or its contributor / whitelist state — typical for moderation, anti-spam, or community-mapping work.

Example

Input

{
"endpoint": "profile_details",
"profile_details_username": "spez"
}

Output (one dataset record)

{
"endpoint": "profile_details",
"__typename": "Profile",
"id": "t5_3k30p",
"name": "u_spez",
"title": "spez",
"publicDescriptionText": "Reddit CEO",
"subscribersCount": 0,
"createdAt": "2005-06-06T04:00:00.000000+0000",
"path": "/user/spez/",
"isNsfw": false,
"isQuarantined": false,
"whitelistStatus": "NO_ADS",
"allowedPostTypes": [],
"isSpoilerAvailable": true,
"isCrosspostingAllowed": true,
"redditorInfo": {
"__typename": "Redditor",
"prefixedName": "u/spez",
"attributes": {
"redditHandleInfo": { "displayName": "spez", "username": "spez" },
"redditorType": "USER",
"verificationStatus": "PROFILE_VERIFIED"
}
},
"rate_limit_used": 5,
"rate_limit_remaining": 1795,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

4. User Trophies by Name — categorized trophy case (public)

Returns the user's trophy case grouped by category (e.g., "Cake Day", "Gilding", "Verified Email", "Years of Service").

Returns: category groupings with each trophy's name, description, icon URL (size configurable, 16–1024 px), granted-at timestamp, trophy ID.

Note: Only returns data if the user opted into a public trophy case. Many users have it private — the response will be empty for those. If you need trophies regardless of the public flag, use Profile Trophies below.

Use it when: you want the user's trophy case the way Reddit displays it on the profile sidebar, organized by section.

Example

Input

{
"endpoint": "trophies_public",
"trophies_public_username": "spez",
"trophies_public_image_max_width": 128
}

Output (one dataset record per trophy — sample of the first row)

{
"endpoint": "trophies_public",
"__typename": "AchievementRepeatableImageTrophy",
"id": "frequent-contributor",
"name": "Repeat Contributor",
"category": "AchievementTrophyCategory",
"image": {
"url": "https://preview.redd.it/6w4yuzzgfavc1.png?width=128&height=128&auto=webp&s=…"
},
"numUnlocked": 1,
"rate_limit_used": 6,
"rate_limit_remaining": 1794,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

5. Profile Trophies by Name — flat trophy list

Same trophy data as above, but flat (no category grouping) and works on most accounts.

Returns: array of trophies with description, icon URL, grantedAt, name, trophyId, awardId.

Use it when: you want a clean list of trophies for analytics, or you need data even if the user's trophy case isn't public.

Example

Input

{
"endpoint": "profile_trophies",
"profile_trophies_username": "spez"
}

Output (one dataset record per trophy — sample of the first row)

{
"endpoint": "profile_trophies",
"trophyId": null,
"name": "20-Year Club",
"description": null,
"grantedAt": "2025-06-06T00:00:00.000000+0000",
"icon70Url": "https://i.redd.it/cms/871b9df322b7cddd_trophy_image_for_20_year_club.png",
"url": null,
"awardId": null,
"rate_limit_used": 7,
"rate_limit_remaining": 1793,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

6. Profile Posts by Name — submitted-post feed

Paginates the user's submitted posts.

Inputs:

  • Sortnew, hot, top, controversial
  • Time filterhour, day, week, month, year, all (only applies when sort is top or controversial — ignored otherwise)
  • Limit — 1 to 1250

Returns: post records with title, body / selftext, score, comment count, created timestamp, subreddit, post URL, thumbnail, vote state, NSFW / spoiler / locked / stickied / archived flags, flair, media, author info — one dataset row per post.

Use it when: building user-content dashboards, scraping a creator's posting history, training models on author-tagged Reddit content, influence / engagement analysis.

Example

Input

{
"endpoint": "user_posts",
"user_posts_username": "spez",
"user_posts_sort": "new",
"user_posts_time_filter": "all",
"user_posts_limit": 3
}

Output (one dataset record per post — sample of the first row, flattened)

{
"endpoint": "user_posts",
"__typename": "CellGroup",
"id": "t3_1t4nr7v",
"name": "t3_1t4nr7v",
"title": "Reddit looked old the day it was born. I joined my friend D. Scott Phoenix on the Progress podcast to discuss communities, AI, and what makes the internet feel human.",
"authorName": "u/spez",
"score": 47,
"commentCount": 35,
"createdAt": "2026-05-05T18:19:02.142000+0000",
"voteState": "NONE",
"shareCount": 50,
"isScoreHidden": false,
"isModeratable": false,
"isVisited": false,
"detailsString": "u/spez",
"detailsLink": "spez",
"iconPath": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png?width=64&height=64&…",
"rate_limit_used": 8,
"rate_limit_remaining": 1792,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

7. Profile Comments by Name — comment history

Paginates the user's comments.

Inputs: same controls as Profile Posts — sort, time filter, limit (1–1250).

Returns: comment records with body, score, created timestamp, parent post info, parent comment ID, subreddit, OP flag, score-hidden flag, author info — one row per comment.

Use it when: sentiment analysis, conversation mining, comment-history audit, finding what subreddits a user is active in.

Example

Input

{
"endpoint": "user_comments",
"user_comments_username": "spez",
"user_comments_sort": "new",
"user_comments_time_filter": "all",
"user_comments_limit": 3
}

Output (one dataset record per comment — sample of the first row)

{
"endpoint": "user_comments",
"__typename": "Comment",
"id": "t1_okpklb6",
"createdAt": "2026-05-08T20:48:30.912000+0000",
"score": 24,
"voteState": "NONE",
"content": {
"preview": "Ding ding ding"
},
"postInfo": {
"__typename": "SubredditPost",
"id": "t3_1t7d1gy",
"title": "Please Fire Vollero for Buyback Mismanagement",
"subreddit": { "prefixedName": "r/redditstock" }
},
"rate_limit_used": 3,
"rate_limit_remaining": 1797,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

8. Profile Pinned Posts — IDs pinned to profile

Returns the post IDs the user has pinned to the top of their profile (the "sticky" section on the profile page).

Returns: list of post IDs (Reddit t3_ fullnames).

Note: Most users have zero pinned posts. An empty list is the normal result unless the user explicitly pinned something.

Use it when: featured-content discovery — pinned posts are usually the user's best work or active campaigns.

Example

Input

{
"endpoint": "pinned_posts",
"pinned_posts_username": "spez"
}

Output (one dataset record — spez has zero pinned posts, so the actor pushes a "no pinned posts" marker)

{
"endpoint": "pinned_posts",
"username": "spez",
"pinned_post_count": 0,
"note": "User has no pinned/sticky posts on their profile."
}

When the target user does have pinned posts, the actor pushes one row per pin:

{
"endpoint": "pinned_posts",
"id": "1abcdef",
"name": "t3_1abcdef"
}

9. Validate Username — availability + rule compliance

Checks whether a username is available to register and whether it complies with Reddit's naming rules (length, allowed characters, reserved names).

Returns: valid (overall pass / fail), available (free to register), reasons (list of rule violations if any).

Use it when: building an "is this name free?" UX, batch-validating proposed usernames before account creation, auditing username pools.

Example

Input

{
"endpoint": "validate_username",
"validate_username_username": "spez"
}

Output (one dataset record — spez is taken, so the lookup resolves to the existing Redditor)

{
"endpoint": "validate_username",
"validation": {
"redditorInfoByName": {
"__typename": "Redditor",
"id": "t2_1w72",
"prefixedName": "u/spez",
"profile": { "isNsfw": false },
"icon": {
"url": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png"
}
}
},
"rate_limit_used": 8,
"rate_limit_remaining": 1792,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

Bearer-required endpoints (need a Reddit account)

These ten endpoints require authentication. Fill the Reddit credentials section at the bottom of the input form (see Credentials below).

10. My Account — full identity payload

Returns the full identity + account-state payload Reddit serves the signed-in user. The richest single call in the bearer set.

Returns: account id (t2_...), name (current display username), kind, createdAt, isEmployee, isMod, isPremium, premium block (subscription status, expiration), redditor block (karma split, contribution counts, snoovatar, banner, public description, social links, accepted-DMs / chats / followers flags), identity block (verification flags, accepted privacy / TOS state), preferences block (top-level prefs subset).

Use it when: dashboards that surface "what does my account look like right now"; verifying a saved Token V2 still works; pulling the account's t2_ ID for use in other calls.

Example

Input

{
"endpoint": "me_account",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record, trimmed; PII redacted)

{
"endpoint": "me_account",
"account": {
"id": "t2_abc123def",
"createdAt": "2024-01-15T07:27:33.029000+0000",
"email": "redacted@example.com",
"isEmailVerified": true,
"isModerator": true,
"isSuspended": false,
"isPasswordSet": false,
"isSubredditCreationAllowed": true,
"phoneNumber": { "code": null, "number": null },
"inbox": { "unreadCount": 0 },
"modMail": { "isUnread": false },
"linkedIdentities": [],
"redditor": {
"__typename": "Redditor",
"id": "t2_abc123def",
"name": "<your_username>",
"prefixedName": "u/<your_username>",
"accountType": "USER",
"isEmployee": false,
"isAcceptingChats": true,
"isAcceptingFollowers": true,
"cakeDayOn": "2024-01-15"
}
},
"rate_limit_used": 12,
"rate_limit_remaining": 1788,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

11. My Real Username — immutable canonical name

Returns the canonical (immutable) username on the account. Reddit lets users change their display name, but the underlying canonical username is fixed at signup — this endpoint surfaces it.

Returns: realUsername (the immutable name), displayUsername (what the user currently shows publicly).

Use it when: you need a stable identifier across rename events; bot / mod tooling that has to track an account through display-name changes.

Example

Input

{
"endpoint": "me_real_username",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record)

{
"endpoint": "me_real_username",
"real_username": {
"identity": {
"redditor": { "name": "<your_username>" }
}
},
"rate_limit_used": 14,
"rate_limit_remaining": 1786,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

12. My Email & Phone

Returns the email and phone number Reddit has on file for the signed-in account.

Returns: email, emailVerified, phone, phoneVerified.

Use it when: account-recovery audits, GDPR / data-export tooling, verifying contact info before sensitive actions.

Example

Input

{
"endpoint": "me_email_phone",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record; PII redacted)

{
"endpoint": "me_email_phone",
"contact": {
"identity": {
"email": "redacted@example.com",
"phoneNumber": {
"code": null,
"number": null
}
}
},
"rate_limit_used": 13,
"rate_limit_remaining": 1787,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

13. My Preferences — full account preferences

Returns the full account preferences payload — every toggle from Reddit's preferences page (notifications, mature content, language, premium-related toggles, search filters, etc.).

Returns: ~50 preference fields including acceptPms, enableFollowers, over18, noProfanity, searchIncludeOver18, defaultCommentSort, media (autoplay), topKarmaSubreddits, language, country, subscriberCount, enabledFeatures, enableNotifications, liveOrangereds, mediaPreviews, monitorMentions, numComments, numsites, showFlair, showLinkFlair, showLocationBasedRecommendations, showPromote, showStylesheets, showTrending, videoAutoplay, etc.

Use it when: mirroring a user's settings, configuration-as-code, account-clone tooling, audit-logging preference changes.

Example

Input

{
"endpoint": "me_preferences",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record, trimmed — ~50 fields total)

{
"endpoint": "me_preferences",
"preferences": {
"identity": {
"preferences": {
"defaultCommentSort": "CONFIDENCE",
"acceptPrivateMessagesFrom": "EVERYONE",
"isNsfwContentShown": true,
"isNsfwMediaBlocked": true,
"isNsfwSearchEnabled": false,
"isFollowersEnabled": true,
"isShowFollowersCountEnabled": false,
"isEmailDigestEnabled": false,
"isSmsNotificationsEnabled": false,
"isAdPersonalizationAllowed": true,
"isLocationBasedRecommendationEnabled": true,
"isFeedRecommendationsEnabled": true,
"isCommunityStylingEnabled": true,
"countryCode": "ZZ",
"minCommentScore": -4
}
}
},
"rate_limit_used": 15,
"rate_limit_remaining": 1785,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

14. My Location

Returns Reddit's country / region inference for the signed-in account.

Returns: country, region, inferredFromIp (whether the value came from IP geolocation).

Use it when: geo-targeted content workflows, regional A/B testing, audit-logging which country Reddit thinks the account is in.

Example

Input

{
"endpoint": "me_location",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record)

{
"endpoint": "me_location",
"location": {
"countryCode": "US",
"regionCode": "CA",
"cityCode": "SAN FRANCISCO",
"cityUtf8": "SAN FRANCISCO"
},
"rate_limit_used": 16,
"rate_limit_remaining": 1784,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

15. My Active Subreddits

Returns the subreddits the signed-in account has been most active in recently — the "active communities" feed Reddit shows on the home page sidebar.

Returns: array of subreddits with id (t5_...), name, prefixedName (r/...), iconUrl, subscribersCount, plus the activity score Reddit uses to rank them.

Use it when: surfacing personal community lists, building "where am I active?" dashboards, recommendation system seeds.

Example

Input

{
"endpoint": "me_active_subreddits",
"credentialSource": "vault",
"accountName": "main"
}

Output (one dataset record containing the activeSubreddits list — sample trimmed to two communities)

{
"endpoint": "me_active_subreddits",
"active_subreddits": {
"redditorInfoByName": {
"__typename": "Redditor",
"activeSubreddits": [
{
"id": "t5_2qh23",
"name": "test",
"prefixedName": "r/test",
"type": "PUBLIC",
"isNsfw": false,
"subscribersCount": 42321,
"communityStats": { "weeklyActiveUsersCount": 29583 },
"isSubscribed": false
},
{
"id": "t5_2qh33",
"name": "wordpress",
"prefixedName": "r/wordpress",
"type": "PUBLIC",
"isNsfw": false,
"publicDescriptionText": "WordPress community",
"subscribersCount": 187432,
"isSubscribed": true
}
]
}
},
"rate_limit_used": 10,
"rate_limit_remaining": 1790,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

16. My Followers

Lists the accounts following the signed-in profile.

Inputs (optional):

  • Limit1 to 100 (default 25).

Returns: array of follower accounts with id (t2_...), name, prefixedName, iconUrl, karma (total), isFollowed (whether you follow them back), acceptsFollowers.

Use it when: audience growth tracking, follow-back automation, spotting brand-new followers, audience-research dashboards.

Example

Input

{
"endpoint": "me_followers",
"credentialSource": "vault",
"accountName": "main",
"me_followers_limit": 10
}

Output (one dataset record per follower — sample shown; on a brand-new account with zero followers the payload contains "count": 0 and the run finishes SUCCEEDED with no rows)

{
"endpoint": "me_followers",
"id": "t2_1w72",
"name": "spez",
"prefixedName": "u/spez",
"karma": { "total": 937988 },
"icon": {
"url": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png"
},
"isFollowed": false,
"isAcceptingFollowers": true,
"rate_limit_used": 11,
"rate_limit_remaining": 1789,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

17. Profile Feeds — saved / hidden / upvoted / downvoted

Paginates one of the signed-in account's private profile feeds — these are the lists Reddit only shows to you.

Inputs:

  • Feed typesaved_posts, saved_comments, hidden, upvoted, downvoted.
  • Limit1 to 500 (default 100). Auto-paginates server-side.

Returns: post or comment records (depending on feed type), one dataset row per item.

Use it when: exporting your saved-content library, archive / backup tooling, building "things I upvoted" personal dashboards, recovering hidden posts before unhiding.

Example

Input

{
"endpoint": "me_profile_feed",
"credentialSource": "vault",
"accountName": "main",
"me_profile_feed_type": "saved_posts",
"me_profile_feed_limit": 3
}

Output (one dataset record per saved item — payload preserves the SDUI CellGroup structure)

{
"endpoint": "me_profile_feed",
"items": [
{
"__typename": "FeedElementEdge",
"node": {
"__typename": "CellGroup",
"id": "dDNfMXN6NHF1OA==",
"groupId": "t3_1sz4qu8",
"cells": [
{
"__typename": "MetadataCell",
"createdAt": "2026-04-29T17:01:18.577000+0000",
"authorName": "u/<your_username>",
"detailsString": "r/wordpress",
"detailsLink": "wordpress"
},
{ "__typename": "TitleCell", "title": "Video Post" },
{ "__typename": "LegacyVideoCell" }
]
}
}
],
"rate_limit_used": 18,
"rate_limit_remaining": 1782,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

18. Subreddit Flair Policy — per-subreddit user-flair policy

Returns two booleans describing the user-flair policy for a given subreddit (whether user flairs are enabled there, and whether you can self-assign one).

Inputs:

  • Subreddit — name with or without r/, or subreddit URL.

Returns: isEnabled, isSelfAssignable.

Use it when: flair-management tooling, pre-checking before calling subreddit-flair set / clear actions, building "communities where I can pick my own flair" lists.

Example

Input

{
"endpoint": "me_flair_policy",
"credentialSource": "vault",
"accountName": "main",
"me_flair_policy_subreddit": "wordpress"
}

Output (one dataset record)

{
"endpoint": "me_flair_policy",
"flair_settings": {
"subredditInfoByName": {
"__typename": "Subreddit",
"authorFlairSettings": {
"isEnabled": true,
"isSelfAssignable": true
}
}
},
"rate_limit_used": 17,
"rate_limit_remaining": 1783,
"rate_limit_reset_at": "2026-05-14T09:50:00Z"
}

19. Follow / Unfollow Profile

Action endpoint (writes state to your account). Follows or unfollows another Reddit profile.

Inputs:

  • Actionfollow or unfollow.
  • Target username — username, u/name, or profile URL of the account to follow / unfollow. Resolved to a t2_ ID server-side.
  • Target account ID (optional) — Reddit t2_ account ID. If provided, skips the username lookup.

Returns: targetId (t2_...), action (echoed), success flag.

Use it when: automated follow / unfollow workflows, bulk-following from a list, audit-logging follow-state changes.

Example

Input

{
"endpoint": "follow_action",
"credentialSource": "vault",
"accountName": "main",
"follow_action_action": "follow",
"follow_action_username": "spez"
}

Output (one dataset record)

{
"endpoint": "follow_action",
"success": true,
"data": {
"targetId": "t2_1w72",
"username": "spez",
"action": "follow"
}
}

Credentials

The 10 bearer-required endpoints (My Account, My Real Username, My Email & Phone, My Preferences, My Location, My Active Subreddits, My Followers, Profile Feeds, Subreddit Flair Policy, Follow / Unfollow Profile) need a Reddit Token V2 cookie + the proxy that minted it. The first 9 endpoints ignore credentials entirely — leave the section blank for those.

Credential lifetime

CredentialLifetimeWhen to refresh
Token V2 (token_v2 cookie)~24 hoursDaily — or save a Reddit Session in the Reddit Vault and let the vault auto-refresh the Token V2 from it (recommended).
Reddit Session (reddit_session cookie)~180 daysOnly needed if you save an account in the Reddit Vault — the vault uses it to auto-mint fresh Token V2 cookies every ~23 hours. Refresh roughly twice a year.

How to extract these from your browser: open Reddit in Chrome / Brave / Edge / Firefox, then DevTools → Application → Cookies → https://www.reddit.com. Filter by token_v2 (the Token V2) or reddit_session (the Reddit Session) and copy the Value column.

Token V2 cookie in DevTools

Reddit Session cookie in DevTools

You have two options:

  1. Run the Reddit Vault actor once to store a Reddit account under a name you choose (e.g. main, alt-account, burner1). The vault encrypts the Token V2 + matching proxy and stores them keyed by name.
  2. In this actor, set Credential source = Use saved account (vault) and put the same name in Saved account name.
  3. Done — Token V2 + proxy load automatically. Refresh the vault entry whenever the Token V2 expires (~24 h lifetime).

Option B — Paste Token V2 + proxy directly

For one-off runs without setting up the vault:

  1. Set Credential source = Paste Token V2 + proxy.
  2. Paste your Reddit token_v2 cookie value (eyJ...) into Token V2.
  3. Paste the matching proxy in ip:port:user:pass format into Proxy.

Critical: Reddit IP-binds Token V2 cookies. The proxy MUST be the exact same IP that originally minted the Token V2 — otherwise Reddit returns 401 on every bearer call. Both fields are stored encrypted by Apify.


How to run

  1. Pick an endpoint in the "What to fetch" dropdown at the top. Anonymous endpoints (1–9) are at the top of the list; bearer-required endpoints (10–19) are grouped at the bottom.
  2. Open the matching section below it and fill its fields (most "by name" endpoints just need a username).
  3. If your endpoint is bearer-required (10–19), fill the Reddit credentials section at the bottom.
  4. Click Start.

Each endpoint section is independent — fields outside your chosen section are ignored, so you can leave them as-is between runs. Default username is spez (Reddit co-founder, public profile) and the default endpoint is Profile by Name, so the actor runs out of the box.


Output

Results are pushed to the actor's default dataset. View them as a table or download as JSON / CSV / Excel / XML.

  • Profile by Name / Profile Info by Name / Profile Details by Name / User Trophies by Name / Profile Trophies by Name / Profile Pinned Posts / Validate Username / My Account / My Real Username / My Email & Phone / My Preferences / My Location / My Active Subreddits / My Followers / Subreddit Flair Policy / Follow / Unfollow Profile push one record per run.
  • Profile Posts by Name / Profile Comments by Name / Profile Feeds push one record per item (up to your limit).

The most useful columns are placed first (endpoint, id, name, kind, createdAt, etc.) so the dataset Table view is readable without horizontal scrolling.


Common edge cases

  • Suspended accounts — Reddit returns minimal data; expect most fields to be null.
  • Deleted accounts — username [deleted] cannot be looked up; the call returns an empty / error record.
  • Brand-new accounts — trophy and karma fields may be 0; this is normal.
  • Private trophy case — User Trophies by Name returns empty. Use Profile Trophies by Name instead.
  • NSFW profiles — fully supported; the isNsfw flag in the response tells you if the profile is marked NSFW.
  • Bearer expired — Reddit Token V2 cookies live ~24 h. If you get an error_kind: bearer_expired response, refresh the Token V2 in your vault entry (or paste a fresh one in manual mode) and re-run.
  • Follow / Unfollow on a profile that doesn't accept followers — the call still returns success but no follow relationship is created. Check the target profile's acceptsFollowers field (via Profile by Name) before bulk runs.
  • My Followers cap — Reddit serves at most 100 followers per call. For very large follower lists, run multiple paginated calls (or use the bulk feed actors).
  • Validate Username with reserved names — Reddit reserves a small set of names (e.g. admin, system handles); these return valid: false with reasons listing the violation.
  • Empty private feeds — if you've never saved / hidden / voted, the corresponding Profile Feed is empty. Normal.

Why this actor is fast

  • Speed — 1–3 seconds per call, end-to-end. Pure HTTP to Reddit's API. No browser to boot, no Playwright / Selenium / Puppeteer overhead. Competing browser-based scrapers typically take 15–60 seconds per call.
  • Reliability — zero browser flakiness. No headless-Chromium crashes. No JS-render timeouts. No captcha pages. No surprise mid-run failures from a browser quirk.
  • Footprint — under 100 MB RAM per run. Most browser-based scrapers need 1–4 GB. Built for reliability behind the scenes — just paste your inputs and run.

Status & error reference

Run status (Apify-side, shown on the run page)

StatusApify messageMeaningWhat to do
Succeeded"Actor succeeded with N results in the dataset"Run finished. Some or zero records pushed.Open the dataset to view results.
Failed"The Actor process failed…"Validation error or upstream Reddit fault.Check the run log. You are NOT charged for failed runs.
Timed out"The Actor timed out. You can resurrect it with a longer timeout to continue where you left off."Run exceeded its timeout.Re-run with a smaller limit or fewer inputs.
Aborted"The Actor process was aborted. You can resurrect it to continue where you left off."You stopped the run manually.No charge for unpushed results.

Common in-run conditions (visible in run log)

ConditionCauseResult
Empty result setUser has no public posts / comments / saved items matching the endpoint.Run SUCCEEDED, 0 records, no charge.
Suspended accountReddit suspended the target account.Run SUCCEEDED, mostly-null record.
Deleted accountAccount was self-deleted.Run SUCCEEDED, 0 records for that input.
Validation error: missing usernameRequired input not provided.Run FAILED immediately, no charge.

Pricing

Pay-per-result. You're only charged for records actually pushed to the dataset — failed runs and validation errors cost nothing.

EventTriggerPrice (per 1,000)
resultEach user / trophy / post / comment / action row pushed to the dataset$1.99

A Profile by Name lookup = 1 row. A 100-post Profile Posts run = 100 rows. A My Followers run on a small account = 5–25 rows. A Follow / Unfollow action = 1 row.


Need a different shape of data?

  • For bulk user lookups (many usernames in one run, up to 1500 users), see Reddit Bulk Scrape V2 (user_info_by_ids mode).
  • For subreddit lookups (rules, type, leaderboards, settings), see Reddit Subreddits V2.
  • For post / comment scraping (single post + thread), see Reddit Scraper V2.
  • For search (finding posts / comments / users / subreddits by keyword), see Reddit Search V2.
  • For subreddit / home / profile feeds (the actual posts in a feed), see Reddit Feeds V2.
  • For storing a Reddit account once and reusing it across actors, see Reddit Vault.
  • For posting / commenting / voting / moderation actions, see the V1 action actors.

Support and feedback

Found a bug, want a feature, or hit a Reddit error code we don't translate clearly? Open an issue via the actor's Apify Console feedback link, or reach out at the RedCrawler support channel.


Reddit Users V2 is part of the RedCrawler family of Reddit actors. RedCrawler is independent — not affiliated with, endorsed by, or sponsored by Reddit, Inc. Use it within Reddit's API terms.