Reddit User Scraper avatar

Reddit User Scraper

Pricing

Pay per event

Go to Apify Store
Reddit User Scraper

Reddit User Scraper

Scrape any Reddit user's submissions or comments by username — no login — and export to JSON or CSV. A Reddit user downloader returning title, body, subreddit, score, upvotes, timestamp, and permalink per post. We rotate fingerprints and retry on Reddit's 429s.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

29 minutes ago

Last modified

Share


🎯 What this 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.

🔥 Features

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates 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, with Retry-After headers 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.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Paste one or more Reddit usernames (without the u/ prefix) into the usernames field.
  3. Choose what (submissions, comments, or both), sortBy, and timeFilter.
  4. Set maxResultsPerUser — Reddit caps any listing at 1 000 items; set 0 to collect all available.
  5. Click Start. Results stream into the run's dataset in real time.
  6. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch programmatically via the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
usernamesarrayyes["spez"]Reddit usernames without u/. Profile URLs are also accepted.
whatstringno"submitted""submitted", "comments", or "overview" (both).
sortBystringno"new""new", "hot", "top", or "controversial".
timeFilterstringno"all""all", "year", "month", "week", or "day".
maxResultsPerUserintegerno100Max items to collect per user. Set 0 for Reddit's 1 000-item cap.
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy with sticky sessions. Residential proxies recommended for high-volume runs.

Example input

{
"usernames": [
"spez"
],
"what": "submitted",
"sortBy": "new",
"maxResultsPerUser": 3,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every run produces one dataset row per submission or comment scraped.

FieldTypeNotes
kindstring"submission" or "comment".
idstringReddit fullname (t1_ / t3_ + base-36 ID).
usernamestringAuthor username (the account we scraped).
subredditstringSubreddit the item belongs to.
titlestring | nullSubmission title; null for comments.
bodystring | nullComment body or selftext. Markdown.
urlstring | nullOutbound URL or self-link (submissions only).
permalinkstringCanonical Reddit permalink.
scoreintegerScore (upvotes minus downvotes).
num_commentsinteger | nullComment count (submissions only).
over_18boolean | nullNSFW flag (submissions only).
created_utcintegerUnix timestamp in seconds.
posted_atstringISO-8601 datetime derived from created_utc.
scraped_atstringISO-8601 datetime when this row was recorded.

Example output

{
"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

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.005One-off warm-up charge per run
result$0.001Per dataset item written

Example: 1 000 results ≈ $1.00 total. No subscription, no minimum spend, no card to start — Apify gives every new account $5 of free credit.

🚧 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 sortBy and timeFilter. For deeper historical pulls, combine multiple timeFilter passes 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?

The Actor reads the same public profile pages any logged-out browser visitor sees. Stick to public-record use cases — due diligence, fraud analytics, academic research, brand monitoring. Don't profile minors; don't use output to harass.

Is this a RedditMetis alternative?

RedditMetis is a great UI tool for exploring a single account interactively. This Actor is the headless, bulk, dataset-export complement: feed it 50 usernames, get back a structured dataset in 90 seconds. They cover different workflows; many researchers use both.

What is the reddit user activity api and why not just use it directly?

Reddit's public listing endpoints are rate-limited and block most datacenter IPs without a properly fingerprinted client. We handle the TLS impersonation, proxy rotation, session management, and pagination so you get a clean dataset — not a 429 loop.

How do I scrape both posts and comments?

Set 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)?

Out of scope for this Actor — we surface only the items the target user authored. To collect thread replies, use a Reddit thread scraper.

What happens if a user has been deleted or banned?

The Actor logs the failure, skips that username, and continues with the rest of the batch. The final set_status_message reports how many users completed vs. how many were skipped.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new output field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and we read every report.