Reddit User Profile Scraper
Pricing
from $20.00 / 1,000 profile scrapeds
Reddit User Profile Scraper
Scrape public Reddit profiles and submitted-post history from usernames or profile URLs, with explicit source and outcome fields for AI agents and research. No login. Not for private messages or login-walled data. $0.02/profile + $0.01/post.
Pricing
from $20.00 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Share
Reddit User Profile Scraper — Karma, Account Age & Post History
Reddit User Profile Scraper helps OSINT analysts, community moderators, brand researchers, and AI agents turn Reddit usernames or profile URLs into structured rows: public karma fields when Reddit about data is reachable, account age, bio/flags, and recent submitted posts. Run it on Apify for scheduling, API/MCP access, dataset export (JSON/CSV/Excel), and monitored runs.
Primary entity: one profile dataset row per user, plus optional post rows for that user's submitted history. Public data only — not private messages, follower graphs, or login-walled settings.
Best fit
Use this Actor when you already have Reddit usernames / u/ handles / profile URLs and need a profile + post history table for vetting, enrichment, or agent tools.
Constructive next step: for subreddit feeds or keyword discovery, route to Reddit Posts Scraper (search/subreddit posts). For comment trees on a thread, use Reddit Comments Scraper. For open keyword search across Reddit, use Reddit Search Scraper.
Workflow story
A trust-and-safety analyst pastes spez and sets Max posts per user to 5. The run writes one profile row (karma when about succeeds, otherwise a posts-inferred profile with karmaAvailable: false) and up to five post rows with title, score, subreddit, and permalink. They export CSV into a review sheet, then schedule the same input weekly via Apify to watch posting cadence — without writing a custom Reddit client.
How to use
- Open the Actor in Apify Console (Input tab).
- Prefill already includes
spez— click Start, or paste your usernames. - Keep Include post history on for research; set Max posts per user to
0/ turn posts off for a profile-only snapshot. - Open the dataset Profiles and Posts views, or download JSON/CSV/Excel.
Input
| Field | Required | Description |
|---|---|---|
usernames | yes | Usernames, u/name, or profile URLs |
maxPosts | no | 0–200 posts per user (default 25; prefill 5) |
includePosts | no | Default true |
includeNSFW | no | Default false |
sort | no | Provider search sort (new default) |
maxItems | no | Cap unique users (default 25) |
providerOrder | no | ScrapeCreators / SociaVault order |
proxy | no | Residential recommended for OAuth about |
{"usernames": ["spez"],"maxPosts": 5,"includePosts": true,"includeNSFW": false}
Output
You can download the dataset in JSON, HTML, CSV, or Excel.
| Field | On | Description |
|---|---|---|
recordType | both | profile or post |
username | both | Canonical username |
profileUrl | both | https://www.reddit.com/user/{name}/ |
totalKarma / linkKarma / commentKarma | profile | When about/karma is available |
karmaAvailable | profile | false when profile was inferred from posts |
createdAt / accountAgeDays | profile | Account age when about succeeds |
title / score / subreddit / permalink | post | Submitted post fields |
provider | both | scrapecreators, sociavault, reddit-oauth, scrapfly, or posts-inferred |
outcome | both | Row outcome (OK, …) |
Profile example
{"recordType": "profile","username": "spez","profileUrl": "https://www.reddit.com/user/spez/","karmaAvailable": false,"postsReturned": 5,"outcome": "OK","provider": "posts-inferred"}
Post example
{"recordType": "post","username": "spez","postId": "1u7hraf","title": "21 years of Reddit","subreddit": "u_spez","score": 4200,"permalink": "https://www.reddit.com/r/u_spez/comments/1u7hraf/21_years_of_reddit/","outcome": "OK","provider": "scrapecreators"}
Missing users finish VALID_EMPTY with zero billable profile/post events.
Pricing (Pay per event + usage)
This Actor uses Pay per event + platform usage. Event prices below are the configured PPE map; always confirm the live Pricing tab in Console as the current source of truth.
| Event | Price |
|---|---|
apify-actor-start | $0.00005 / run |
profile-scraped | $0.020 / profile row |
post-scraped | $0.010 / post row |
Example: one profile row plus five post rows costs $0.00005 + $0.020 + 5×$0.010 = about $0.07005 in event charges, plus platform usage.
API example
curl "https://api.apify.com/v2/acts/khadinakbar~reddit-user-profile-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"usernames":["spez"],"maxPosts":5,"includePosts":true}'
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("khadinakbar/reddit-user-profile-scraper").call({usernames: ["spez"],maxPosts: 5,includePosts: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Agent / MCP prompt
Use khadinakbar/reddit-user-profile-scraper with usernames=["spez"], maxPosts=5. Expect one profile row and up to five post rows. Read OUTPUT.outcome, dataset provenance via provider, and karmaAvailable. Paginate the dataset for larger maxPosts. For subreddit feeds, continue with Reddit Posts Scraper.
Check OUTPUT / RUN_SUMMARY for outcome readback, itemsPushed, chargedEventCounts (cost), providersUsed (provenance), and scope. Paginate dataset items when maxPosts is large.
Builder's note
I built this Actor after I found Reddit about.json unavailable on common exits while ScrapeCreators and SociaVault author search still returned real submitted posts. I designed the runtime to cost-rank that provider path for post history, try OAuth and Scrapfly for about/karma when owner secrets succeed, and emit an honest posts-inferred profile (karmaAvailable: false) when about is unavailable — so agents still get usable history with usable history for agents.
Best results
- Start with the prefill username and maxPosts 5 to validate your workflow cheaply.
- Provide specific public usernames; duplicates are removed automatically.
- Keep includeNSFW false unless you need over_18 posts; profile rows still write.
- When karmaAvailable is false, treat karma fields as unavailable rather than zero — confirm about coverage in RUN_SUMMARY warnings.
FAQ and legal
Use public Reddit data you are authorized to collect under Reddit's terms of service and applicable laws. Prefer authorized public sources. Open Issues for support; custom workflows available on request.
Related portfolio Actors with routing context: Reddit Posts Scraper for subreddit/keyword posts, Reddit Comments Scraper for thread comments, Reddit Search Scraper for open search.