Social media · Lead generation
Reddit User Scraper — Profile Export
Scrape any Reddit user's full submission and comment history by username — title, body, subreddit, score, timestamp and permalink per row. No auth, no OAuth, no API key.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
This Actor pages through every public Reddit user profile and collects the full submission and comment history for each username you provide. One row per post or comment: kind, ID, subreddit, title, body, URL, permalink, score, comment count, NSFW flag, and ISO-8601 timestamps. Ideal for OSINT timelines, recruiter due-diligence briefs, fraud-pattern detection, and academic user-activity research.
It reads Reddit's user-profile listing endpoints, paginates through all available pages, and writes clean typed rows into your Apify dataset — ready for JSON, CSV, or Excel export straight from the Console.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Firefox and Safari TLS handshakes so the target sees a browser, not Python. We rotate profiles per session to stay off the block list. - 🌐 Residential proxy rotation via Apify Proxy — every time we hit a rate-limit wall, we rotate the session and exit IP so the scrape keeps moving.
- 🔁 Retries with exponential backoff — up to 5 attempts per page on
408 / 429 / 5xx, withRetry-Afterheaders honoured to the second. - 🧱 Rate-limit-aware pacing — when Reddit pushes back, we back off and resume rather than get banned. Partial progress surfaces as a clear status message; we never silently return an empty dataset.
- 🧊 Clean, typed dataset rows — Pydantic-validated fields, ISO-8601 timestamps, stable Reddit fullname IDs, and direct JSON / CSV / Excel export.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge beyond the small warm-up fee.
Use cases
- OSINT investigations — reconstruct a user's complete public Reddit timeline for due-diligence, fraud detection, or digital-methods research.
- Recruiter screening — pull a developer's Reddit history to understand their expertise, community engagement, and communication style before outreach.
- Brand monitoring — track what specific accounts say about your product or space across subreddits.
- Fraud-pattern detection — analyse posting cadence, subreddit distribution, and score trajectories to identify promotional or coordinated accounts.
- Academic research — build labelled user-activity datasets for computational social science studies.
- Content discovery — extract a user's highest-scoring posts for a portfolio or competitive-intelligence brief.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
usernames | array | yes | List of Reddit usernames (without u/). URLs to user profiles are also accepted. |
what | string | no | Submitted posts, comments, or both. |
sortBy | string | no | Reddit listing sort order. |
timeFilter | string | no | Applies only when sortBy=top or controversial. |
maxResultsPerUser | integer | no | Reddit caps any listing at 1000 items. Set 0 for the cap. |
{
"usernames": [
"spez"
],
"what": "submitted",
"sortBy": "new",
"maxResultsPerUser": 3,
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
kindidsubreddittitlebodypermalinkscorenum_commentsover_18created_at
{
"kind": "submission",
"id": "t3_abc123",
"username": "spez",
"subreddit": "AskReddit",
"title": "What's your favourite movie?",
"body": null,
"url": "https://www.reddit.com/r/AskReddit/comments/abc123/",
"permalink": "https://www.reddit.com/r/AskReddit/comments/abc123/whats_your_favourite_movie",
"score": 142,
"num_comments": 1283,
"over_18": false,
"created_utc": 1747339200,
"posted_at": "2026-05-15T20:00:00+00:00",
"scraped_at": "2026-05-16T08:31:00+00:00"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0010 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- 1 000-item cap per user per listing — Reddit hides items beyond position ~1 000 in any single listing. If a user has posted thousands of times, you'll receive the most recent 1 000 matching the chosen
sortByandtimeFilter. For deeper historical pulls, combine multipletimeFilterpasses or use a Pushshift-based Actor (separate product). - Deleted and suspended accounts — if a username no longer exists or has been suspended, the Actor logs a 404 or 403 and skips that user; remaining usernames in the batch still run.
- Private subreddits — posts made in private subreddits are not visible on public user profiles and will not appear in output.
- NSFW content on restricted proxies — some residential proxy exit IPs are geo-blocked by Reddit's NSFW gates. The Actor captures the NSFW flag but may skip body text if the proxy cannot access adult content.
FAQ
Is this legal?
Is this a RedditMetis alternative?
What is the `reddit user activity api` and why not just use it directly?
How do I scrape both posts and comments?
what to "overview". You'll get a combined timeline of submissions and comments in a single run, each row tagged with kind: "submission" or kind: "comment".Can I get comments _on_ a user's posts (not by the user)?
What happens if a user has been deleted or banned?
set_status_message reports how many users completed vs. how many were skipped.Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors