Reddit User Profile Scraper avatar

Reddit User Profile Scraper

Pricing

from $20.00 / 1,000 profile scrapeds

Go to Apify Store
Reddit User Profile Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 days ago

Last modified

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

  1. Open the Actor in Apify Console (Input tab).
  2. Prefill already includes spez — click Start, or paste your usernames.
  3. Keep Include post history on for research; set Max posts per user to 0 / turn posts off for a profile-only snapshot.
  4. Open the dataset Profiles and Posts views, or download JSON/CSV/Excel.

Input

FieldRequiredDescription
usernamesyesUsernames, u/name, or profile URLs
maxPostsno0–200 posts per user (default 25; prefill 5)
includePostsnoDefault true
includeNSFWnoDefault false
sortnoProvider search sort (new default)
maxItemsnoCap unique users (default 25)
providerOrdernoScrapeCreators / SociaVault order
proxynoResidential recommended for OAuth about
{
"usernames": ["spez"],
"maxPosts": 5,
"includePosts": true,
"includeNSFW": false
}

Output

You can download the dataset in JSON, HTML, CSV, or Excel.

FieldOnDescription
recordTypebothprofile or post
usernamebothCanonical username
profileUrlbothhttps://www.reddit.com/user/{name}/
totalKarma / linkKarma / commentKarmaprofileWhen about/karma is available
karmaAvailableprofilefalse when profile was inferred from posts
createdAt / accountAgeDaysprofileAccount age when about succeeds
title / score / subreddit / permalinkpostSubmitted post fields
providerbothscrapecreators, sociavault, reddit-oauth, scrapfly, or posts-inferred
outcomebothRow 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.

EventPrice
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.

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.