Reddit User Profile Scraper
Pricing
from $1.00 / 1,000 results
Reddit User Profile Scraper
Get a Reddit user's public profile — karma, account age, premium status, trophies.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
18 days ago
Last modified
Categories
Share
Extract public profile data from any Reddit user in bulk — post karma, comment karma, account creation date, trophies (verified email, premium, employee), profile picture, and Reddit's internal user ID — in a clean structured JSON output.
Why use this actor
- No account / no login required — just give it a Reddit username or profile URL.
- No API key needed — works out of the box; you can optionally plug in a Reddit Client ID for higher throughput.
- Rich detail — post karma and comment karma broken out separately, account creation timestamp, verified-email flag, premium / employee / mod badges, avatar URL, and the stable
id(t2_xxx) you can use to cross-reference with other Reddit records. - Bulk input — pass a list of usernames or URLs in one run; one clean dataset row per profile.
- Automatic retries — transient failures retry with exponential backoff; profiles that genuinely don't exist surface as
_error: "not_found"so you can triage failures. - Stable JSON output suitable for pipelines, spreadsheets, and databases — every row carries
_input,_source,_scrapedAtenvelope fields so you can join results back to your input list.
How it works
- You provide a list of Reddit usernames (e.g.
spez) or full profile URLs (e.g.https://www.reddit.com/user/spez/). - The actor fetches each profile and reads the same
aboutrecord Reddit's web app shows, then assembles a flat JSON row. - If the primary path is rate-limited, the actor automatically falls back to a public path so the run keeps moving.
- Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.
Input
{"usernames": ["spez","GoldenSights"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["DATACENTER"]}}
| Field | Type | Description |
|---|---|---|
usernames | array | List of Reddit usernames or profile URLs to scrape. Both spez and https://www.reddit.com/user/spez/ are accepted. |
redditClientId | string | (Optional.) Token that unlocks a higher-throughput path (~60 rpm vs ~10 rpm). Leave blank to use the public path. Get one for free at reddit.com/prefs/apps. |
proxyConfiguration | object | Apify Proxy settings. Datacenter proxy works for most cases; Residential recommended for runs above 5,000 profiles. |
Output
Input: spez
{"_input": "spez","_source": "S3-fallback","_scrapedAt": "2026-05-18T11:09:11.628957+00:00","id": "1w72","name": "spez","created_utc": 1118030400.0,"link_karma": 182650,"comment_karma": 755338,"awardee_karma": 0,"awarder_karma": 0,"total_karma": 937988,"is_gold": true,"is_mod": true,"is_employee": true,"is_friend": false,"is_blocked": false,"verified": true,"has_verified_email": true,"hide_from_robots": false,"accept_followers": true,"has_subscribed": true,"pref_show_snoovatar": false,"snoovatar_img": "","snoovatar_size": null,"icon_img": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png?width=256&height=256&crop=256:256,smart&s=aa819b0964f6e3019e769d1cc8ede7318c3869a3","subreddit": {"display_name": "u_spez","display_name_prefixed": "u/spez","title": "spez","public_description": "Reddit CEO","subscribers": 0,"subreddit_type": "user","url": "/user/spez/","over_18": false,"name": "t5_3k30p"}}
| Field | Type | Description |
|---|---|---|
_input | string | The username or URL exactly as you supplied it. Use this to join results back to your input list. |
_source | string | Internal tag for the path used to fetch the record. S1-primary = fastest authenticated path; S2-fallback / S3-fallback = public fallback paths. |
_scrapedAt | string | ISO-8601 UTC timestamp when the record was scraped. |
id | string | Reddit's internal user ID (without the t2_ prefix). Stable across username changes. |
name | string | Current username. |
created_utc | number | Account creation time as a UNIX timestamp (seconds since epoch). |
link_karma | integer | Karma earned from posts (submissions). |
comment_karma | integer | Karma earned from comments. |
awardee_karma | integer | Karma earned from awards received. |
awarder_karma | integer | Karma earned from giving awards. |
total_karma | integer | Sum of all karma types. |
is_gold | boolean | true if the user has Reddit Premium. |
is_mod | boolean | true if the user moderates at least one subreddit. |
is_employee | boolean | true if the user is a Reddit employee (admin). |
verified | boolean | true if Reddit has verified the account (e.g. AMA-verified, official). |
has_verified_email | boolean | true if the user has confirmed their email address. |
is_friend | boolean | Always false for unauthenticated scrapes — kept for parity with Reddit's payload. |
is_blocked | boolean | Always false for unauthenticated scrapes — kept for parity. |
hide_from_robots | boolean | true if the user opted out of search-engine indexing. |
accept_followers | boolean | true if other users can follow this profile. |
icon_img | string | URL of the profile avatar. |
snoovatar_img | string | URL of the user's custom Snoovatar, if set. |
subreddit | object | The user's own u_<name> profile subreddit — display name, public description ("bio"), banner, subscriber count, and NSFW flag. |
Error envelope
Profiles that don't exist or fail to fetch return a structured error instead of crashing the run:
{"_input": "this-user-does-not-exist-xyz","_error": "not_found","_errorDetail": "NotFound https://old.reddit.com/user/this-user-does-not-exist-xyz/about.json","_source": "S3-fallback","_scrapedAt": "2026-05-18T11:09:11.628957+00:00"}
Filter on _error to triage failed rows. Possible values: not_found (404 — deleted, never existed, or suspended), fetch_failed (transient errors after all retries exhausted).
Pricing
This actor is billed per result: $3.50 per 1,000 profiles (Tier 3). Each successful profile = 1 result. Errors (not-found, fetch-failed) are not billed.
Other Sosmed Actors
| Platform | Actor | Best for |
|---|---|---|
| Reddit Subreddit Posts Scraper | Hot/new/top posts from any subreddit | |
| Reddit Search Scraper | Keyword search across Reddit | |
| Reddit Post Detail Scraper | Full post + nested comment tree | |
| Quora | Quora User Profile Scraper | Display name, credential, followers |
| Twitter / X | X Account Scraper | Profile + tweet counts for any handle |
| Instagram Account Scraper | Bio, followers, post count | |
| Bluesky | Bluesky Account Scraper | atproto profile + counters |
Browse the full catalog at apify.com/xtracto.
Notes
- Deleted, never-existed, or fully-suspended accounts return
{"_error": "not_found", "_input": "..."}. - Shadowbanned users still resolve normally — Reddit's
aboutendpoint returns their public record even when their posts are hidden from feeds. Use the karma fields andcreated_utcto spot suspicious accounts. - Counters (
link_karma,comment_karma,total_karma) are eventually-consistent and may lag the live count by a few minutes. - The internal
id(e.g.1w72, full formt2_1w72) is the most reliable identifier — usernames can change butiddoes not. - For large jobs (>5,000 profiles), switch the proxy group to
RESIDENTIALto avoid per-IP rate limits.