Reddit User Profile Posts and Comments Scraper User Comments avatar

Reddit User Profile Posts and Comments Scraper User Comments

Pricing

from $5.99 / 1,000 results

Go to Apify Store
Reddit User Profile Posts and Comments Scraper User Comments

Reddit User Profile Posts and Comments Scraper User Comments

Pull full Reddit user activity—posts and comments—via a fast, reliable scraper. Useful for building datasets, training NLP models, or powering dashboards with real Reddit behavior data. No login or API key required.

Pricing

from $5.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

3 days ago

Last modified

Share

Reddit User Scraper — Posts, Authored Comments and Block Status

Scrape a Reddit user's submitted posts and their own authored comment history in one run, plus a per-user diagnostic row that tells you whether a zero-result run means "no activity" or "blocked." Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a monitoring pipeline. Give it a username, a u/ handle, a profile URL, or a keyword:term search, and get back typed rows for posts, comments, and run status, streamed to the dataset as soon as each is parsed.

What is the Reddit User Scraper?

This is an Apify Actor that queries Reddit's public listing feeds for a given user (or a keyword search) and returns two kinds of activity — the posts they submitted and the comments they personally wrote — as separate, typed dataset rows. It does not require a Reddit account, login, or API key; it reads the same public feeds any visitor's browser can load. What sets it apart from a plain "posts" scraper is the user_summary row it emits per target: an uncharged accounting row carrying a blocked flag and the set of subreddits touched, so a run that returns zero rows is never silently indistinguishable from a user who has posted nothing.

Key capabilities:

  • 📝 Submitted posts — full canonical Reddit post object (title, selftext, subreddit, score, flair, media, timestamps)
  • 💬 Authored comments — the user's own comment history, parsed from old.reddit.com/user/<name>/comments, as separate rows
  • 🗨️ Reply comments per post — optionally attach top-level comments made on each post as a nested array
  • 🔍 Keyword searchkeyword:term targets return matching posts instead of a user's feed
  • 🗂️ Independent sort control — posts and authored comments each have their own sort order (new, hot, top, controversial)
  • 📄 Optional full-text enrichment — per-post JSON lookup for untruncated selftext, preview images, and subreddit subscriber counts

What data can you get with the Reddit User Scraper?

The Actor returns four row types in one dataset, distinguished by a type field: post, comment, user_summary, and (as a nested array on post rows) reply comments.

Result TypeExtracted Fields (highlights)Primary Use Case
Submitted poststitle, selftext, subreddit, author, score, num_comments, permalink, created_utc, preview, media, plus the full canonical Reddit post schemaContent research, engagement analysis, dataset building
Authored commentsbody, subreddit, score, created_utc, link_title, is_submitter, distinguishedSentiment mining, persona/community analysis
Reply comments (nested on a post)id, author, body, score, created_utc, permalink, replies_countThread-level engagement on a user's own posts
Per-user summary (diagnostic)postsCollected, commentsCollected, uniqueSubreddits, uniqueSubredditCount, blocked, scrapedAtRun-health monitoring, distinguishing "no activity" from "blocked"

Block Status: the user_summary diagnostic row

None of the three competing Reddit user scrapers checked for this comparison (louisdeconinck/reddit-user-profile-posts-scraper, simpleapi/reddit-user-profile-posts-and-comments-scraper, signalengine/reddit-user-scraper — Apify Store, checked 2026-07-26) document a row that tells you why a target returned nothing. This Actor pushes one user_summary row per target — uncharged, so it costs nothing extra — with an explicit blocked boolean and a uniqueSubreddits list built from both the post and comment feeds combined:

{
"type": "user_summary",
"isChild": false,
"target": "cyPersimmon9",
"targetKind": "user",
"postsCollected": 8,
"commentsCollected": 50,
"uniqueSubreddits": ["python", "learnprogramming", "AskReddit"],
"uniqueSubredditCount": 3,
"blocked": false,
"scrapedAt": "2026-07-25T09:14:02Z"
}

When every proxy tier returns zero results on the first page, blocked flips to true — so a monitoring pipeline can alert on "this account went dark" instead of misreading it as "this account posted nothing this week."

Authored comments: the headline capability of this variant

Authored comments are parsed from old.reddit.com/user/<name>/comments — a feed the JSON .json endpoint does not reliably serve inside Apify's container, so this path always goes straight to the HTML fallback rather than trying JSON first. Each comment is pushed as its own row (type: "comment", isChild: true) and mirrored, uncharged, to a per-run child dataset named user-comments-<runId>. A profile with 8 posts and maxUserComments=50 yields up to 8 post rows + 50 comment rows + 1 summary row in a single run.

Why not build this yourself?

Reddit's listing and per-thread JSON endpoints are undocumented for this use case, change shape without notice, and are aggressively bot-walled inside datacenter and container environments — flagged IPs get a silent HTTP 200 with an empty children array instead of an error, which looks identical to "this user has no posts" unless you specifically detect it. Building a reliable version yourself means maintaining Chrome-grade TLS/HTTP2 fingerprinting, a residential proxy rotation ladder, retry logic for 403/429/503 responses, an old.reddit.com HTML parser as a fallback when JSON is walled, and ongoing maintenance as Reddit's markup shifts. This Actor packages all of that — impersonated Chrome requests via impit, a residential-first proxy ladder with automatic escalation, silent-block detection, and an HTML fallback parser — so you send a username and get structured JSON back.

What is the difference between a post scraper and a comment history scraper?

A Reddit post scraper returns only what a user submitted — link posts and self-posts, found under /user/<name>/submitted. A Reddit comment history scraper returns what a user personally wrote in reply to other people's threads, found under a separate feed at /user/<name>/comments. The two are not interchangeable: a highly active commenter can have zero submitted posts, and a prolific poster can rarely comment. Community researchers who query only the submitted-posts feed (as several competing "Reddit user" scrapers do) miss the comment half of a user's public footprint entirely. This Actor returns both, as distinct row types in the same dataset — posts arrive with type: "post", authored comments with type: "comment" and isChild: true — so a reader can filter for either signal, or both, from a single run.

How to scrape Reddit user activity with this Actor?

  1. Open the Actor on its Apify Store listing and click Try for free (or Run if you already have it in your account).
  2. Enter one or more targets in startUrls — a bare username, a u/ handle, a full profile URL, or keyword:term for a search.
  3. Set the query controls that matter for your job: sortOrder for post ordering, userCommentSort for comment ordering, maxPosts and maxUserComments for caps.
  4. Click Start to launch the run.
  5. Open the Dataset tab when the run finishes and export as JSON, CSV, or Excel — or pull it programmatically via the Apify API.

How to scrape multiple Reddit users in one job

startUrls accepts an array, so you can mix usernames, profile URLs, and keyword: searches in a single run — each is processed as an independent target with its own summary row. There is no documented concurrency setting for this Actor; targets are processed sequentially within one run, and each is charged per row returned, not per target.

⬇️ Input

Every field below is read directly from the Actor's input schema. startUrls is the only required field.

ParameterRequiredTypeConstraintsDescription
startUrlsYesarray (stringList)One or more Reddit targets. Each entry can be a bare username (cyPersimmon9), a u/ handle (u/cyPersimmon9), a full profile URL (https://www.reddit.com/user/cyPersimmon9), or a keyword search (keyword:python). Authored-comment collection applies to user targets only; keyword targets return posts.
includeUserCommentsNobooleandefault trueWhen on, fetch the user's own written comments in addition to their posts. Example: a profile with 8 posts and maxUserComments=50 yields up to 8 post rows + 50 comment rows + 1 summary row. Keyword targets are unaffected.
maxUserCommentsNointegerdefault 50, min 0, max 1000Cap on authored comments collected per user (0 = skip). A user's comment feed serves at most ~1000 most-recent comments.
userCommentSortNostring enumdefault "new"; one of "new", "top", "controversial", "hot"Ordering applied to the user's authored-comment feed.
sortOrderNostring enumdefault "new"; one of "new", "hot", "top", "controversial"How submitted posts are ordered: new (recent), hot (trending), top (highest scored), controversial (most debated).
maxPostsNointegerdefault 50, min 1, max 1000Maximum submitted posts collected per profile or keyword. A user's post feed serves at most ~1000 most-recent posts.
fetchSelftextNobooleandefault trueAttempt per-post enrichment via Reddit's per-thread JSON (full untruncated selftext, preview, subreddit_subscribers, video media). This endpoint is frequently bot-walled in-container, so listing-level fidelity is what is reliably returned.
maxCommentsNointegerdefault 0, min 0, max 100Attach up to this many top-level comments made on each post as a comments array on the post row. Distinct from the user's own authored comments. Sourced from per-thread JSON — may be empty when Reddit walls it.
proxyConfigurationNoobject (proxy editor)default: Apify residentialProxy settings. Default routes through Apify residential proxy with retries. If you supply a custom proxy (proxyUrls or a non-residential Apify proxy group), it is tried first, then residential is used as a fallback.

Example input

{
"startUrls": ["spez", "u/kn0thing", "keyword:python"],
"includeUserComments": true,
"maxUserComments": 50,
"userCommentSort": "new",
"sortOrder": "new",
"maxPosts": 25,
"fetchSelftext": true,
"maxComments": 0,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Common pitfall: keyword: targets never return authored comments, regardless of includeUserComments — comment history collection requires a resolvable username. If a keyword target isn't returning comment rows, that's expected behavior, not a bug.

⬆️ Output

Every row is typed, normalized JSON pushed to the Actor's default dataset the moment it is parsed, so partial runs are preserved if a run stops early. Export as JSON, CSV, or Excel from the Dataset tab, or pull it via the Apify API. Authored-comment rows are additionally mirrored, uncharged, to a per-run dataset named user-comments-<runId>.

⚠️ fetchSelftext enrichment and the maxComments reply array both depend on Reddit's per-thread JSON endpoint, which is frequently bot-walled inside Apify's container. When that happens, posts fall back to listing-level fields (still a complete row — every one of the 109 canonical keys is present) and the comments array may come back empty rather than populated.

The default dataset view surfaces 19 columns: type, isChild, author, subreddit, title, body, score, num_comments, permalink, link_title, created_utc, publishedAt, is_self, selftext, url, link_permalink, preview, media, comments. This is a display subset — every row carries substantially more keys than the table shows, documented in full below.

Post row fields (109 keys, type: "post")

Canonical Reddit post schema, in push order. Two fields are added by this Actor on top of Reddit's own schema: isChild (always false on a post row) and publishedAt (ISO-8601 UTC, derived from created_utc). upvote_ratio is deliberately returned as null rather than a fabricated value — Reddit's HTML listing does not expose it, so this Actor reports the gap honestly instead of shipping a fake 0.0.

FieldDescriptionFieldDescription
typeAlways "post" on this row typeapproved_at_utcTimestamp a moderator approved the post, if any
subredditSubreddit name, no prefixselftextFull self-post text
author_fullnameAuthor's Reddit fullname (t2_...)savedWhether the post is saved (always false for a fresh scrape)
mod_reason_titleModeration reason title, if anygildedNumber of times the post received Reddit gold
clickedWhether the post has been clickedtitlePost title
link_flair_richtextRich-text formatting for the post's flairsubreddit_name_prefixedSubreddit with r/ prefix, as Reddit renders it
hiddenWhether the post is hiddenpwlsWhitelist status code
link_flair_css_classCSS class for the post's flairdownsDownvote count (Reddit no longer exposes this separately; typically 0)
thumbnail_heightThumbnail image height in pxtop_awarded_typeType of the top award received
hide_scoreWhether the score is hiddennameFullname (t3_<id>)
quarantineWhether the post is from a quarantined subredditlink_flair_text_colorFlair text color
upvote_ratioAlways null — not fabricated; the HTML source has no equivalent fieldauthor_flair_background_colorAuthor flair background color
subreddit_typee.g. public, restrictedupsUpvote count
total_awards_receivedTotal awards on the postmedia_embedEmbedded media details, when present
thumbnail_widthThumbnail image width in pxauthor_flair_template_idAuthor's flair template ID
is_original_contentWhether marked as OCuser_reportsUser-submitted reports (visible only to mods; empty for a public scrape)
secure_mediaSecure media details, when presentis_reddit_media_domainWhether media is hosted on Reddit
is_metaWhether the post is flagged metacategoryPost category, when set
secure_media_embedSecure embedded media detailslink_flair_textPost flair text
can_mod_postWhether the viewer can moderate the postscoreOverall score (upvotes minus downvotes)
approved_byApproving moderator's username, if anyis_created_from_ads_uiWhether created via the ads UI
author_premiumWhether the author has Reddit PremiumthumbnailThumbnail image URL, or "self" for text posts
editedEdit timestamp, or false if never editedauthor_flair_css_classCSS class for the author's flair
author_flair_richtextRich-text formatting for the author's flairgildingsGilding counts by award type
post_hinte.g. "self", "link", "image"content_categoriesContent categories, when set
is_selfWhether it's a text (self) postmod_noteModerator note, if any
createdUnix timestamp of creation (local)link_flair_typeFlair rendering type, e.g. "text"
wlsWhitelist statusremoved_by_categoryCategory the post was removed under, if applicable
banned_byBanning moderator's username, if anyauthor_flair_typeAuthor flair rendering type
domainDomain of the linked contentallow_live_commentsWhether live comments are allowed
selftext_htmlHTML-rendered self-post textlikesViewer's own vote on the post (always null for an unauthenticated scrape)
suggested_sortSuggested comment sort for the threadbanned_at_utcBan timestamp, if applicable
view_countView count, when exposedarchivedWhether the post is archived
no_followWhether outbound links are nofollowis_crosspostableWhether the post can be crossposted
pinnedWhether the post is pinnedover_18NSFW flag
previewPreview image object (images, enabled)all_awardingsAll awards received
awardersUsers who gave awardsmedia_onlyWhether the post is media-only
can_gildWhether the post can receive goldspoilerSpoiler flag
lockedWhether comments are lockedauthor_flair_textAuthor flair text
treatment_tagsInternal Reddit treatment tagsvisitedWhether the viewer has visited the post
removed_byRemoving moderator's username, if anynum_reportsReport count (mod-only; empty for a public scrape)
distinguished"admin" / "moderator", when applicablesubreddit_idSubreddit fullname
author_is_blockedWhether the author is blocked by the viewermod_reason_byModerator who added a mod reason
removal_reasonRemoval reason text, if removedlink_flair_background_colorFlair background color
idPost IDis_robot_indexableWhether search engines may index the post
report_reasonsReport reason list (mod-only)authorAuthor's username
discussion_typeDiscussion type, when setnum_commentsTotal comment count on the post
send_repliesWhether the author receives reply notificationscontest_modeWhether contest mode is enabled
mod_reportsModerator reports (mod-only)author_patreon_flairWhether the author has a Patreon flair
author_flair_text_colorAuthor flair text colorpermalinkRelative URL to the post
stickiedWhether the post is stickiedurlFull URL of the post (or linked content)
subreddit_subscribersSubreddit subscriber countcreated_utcUnix epoch (UTC) of creation
num_crosspostsNumber of crosspostsmediaMedia object, when present
is_videoWhether the post contains videoisChildAdded by this Actor — always false on a post row
publishedAtAdded by this Actor — ISO-8601 UTC, derived from created_utccommentsPresent only when maxComments > 0 — nested reply array, see below

When maxComments > 0, each post row also carries a comments array. Each entry has: id, author, body, score, created_utc, permalink, replies_count (count of direct replies to that comment).

Comment row fields (21 keys, type: "comment", isChild: true)

FieldDescription
typeAlways "comment"
isChildAlways true
idComment ID
nameFullname (t1_<id>)
authorComment author (the target user)
author_fullnameAuthor's Reddit fullname, when present in the HTML
parentAuthorThe username this comment feed belongs to
subredditSubreddit the comment was posted in
subreddit_name_prefixedSubreddit with r/ prefix, as Reddit renders it
subreddit_idSubreddit fullname
bodyComment text
scoreComment score; null when Reddit hides it on very new comments
created_utcUnix epoch timestamp
publishedAtISO-8601 UTC timestamp
permalinkRelative URL to the comment
link_titleTitle of the parent post the comment replied to
link_permalinkURL of the parent post
is_submitterWhether the commenter was the original poster of that thread
distinguished"admin" / "moderator" when applicable, else null
controversialityAlways null — this is a .json-only field with no HTML equivalent
commentSourceProvenance marker, always "old_reddit_html"

Per-user summary row fields (10 keys, type: "user_summary", uncharged)

FieldDescription
typeAlways "user_summary"
isChildAlways false
targetThe username or keyword scraped
targetKind"user" or "keyword"
postsCollectedPost rows pushed for this target
commentsCollectedComment rows pushed for this target
uniqueSubredditsSorted list of distinct subreddits seen across posts and comments
uniqueSubredditCountLength of uniqueSubreddits
blockedtrue when both post and comment counts are zero (silent-block or genuinely no activity)
scrapedAtISO-8601 UTC timestamp of when this target finished

Scraped results

[
{
"type": "post",
"id": "145bram",
"name": "t3_145bram",
"author": "spez",
"title": "Addressing the community about changes to our API",
"selftext": "Dear redditors, ...",
"subreddit": "reddit",
"subreddit_name_prefixed": "r/reddit",
"score": 0,
"ups": 0,
"upvote_ratio": null,
"num_comments": 33886,
"permalink": "/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/",
"url": "https://www.reddit.com/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/",
"created_utc": 1686332653,
"publishedAt": "2023-06-09T21:24:13Z",
"is_self": true,
"over_18": false,
"spoiler": false,
"distinguished": "admin",
"preview": { "images": [], "enabled": false },
"media": null,
"isChild": false
},
{
"type": "comment",
"isChild": true,
"id": "jnkd694",
"name": "t1_jnkd694",
"author": "spez",
"parentAuthor": "spez",
"subreddit": "reddit",
"subreddit_name_prefixed": "r/reddit",
"body": "Apologies for the delay. We are responding now.",
"score": -1756,
"created_utc": 1686337071,
"publishedAt": "2023-06-09T22:44:31Z",
"permalink": "/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/jnkd694/",
"link_title": "Addressing the community about changes to our API",
"link_permalink": "/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/",
"is_submitter": true,
"distinguished": "admin",
"controversiality": null,
"commentSource": "old_reddit_html"
},
{
"type": "user_summary",
"isChild": false,
"target": "spez",
"targetKind": "user",
"postsCollected": 1,
"commentsCollected": 1,
"uniqueSubreddits": ["reddit"],
"uniqueSubredditCount": 1,
"blocked": false,
"scrapedAt": "2026-07-25T09:14:02Z"
}
]

How can I use the data extracted with this Actor?

  • 🔬 Community & audience researchers: build a full picture of a Redditor's public footprint — what they post and what they say in replies — using title/selftext alongside body, cross-referenced by uniqueSubreddits from the summary row.
  • 🤖 AI engineers and LLM developers: issue a query with a username, receive structured JSON back, and pass the title, selftext, and body fields directly to a model as grounding context for a Reddit-aware agent.
  • 📊 Market researchers: track which subreddits a set of users are active in over repeated runs, using uniqueSubreddits and uniqueSubredditCount to measure community coverage and shifts.
  • 🛡️ Moderation & trust teams: spot distinguished admin/moderator activity and is_submitter self-replies, and use the blocked flag to tell a deactivated or banned account apart from one that's simply quiet.

📈 How do you monitor a Reddit user's activity over time?

Monitoring a Redditor's public footprint means running the same target repeatedly and diffing what changed between runs, rather than relying on a single snapshot. Each run's user_summary row gives you a compact baseline: postsCollected, commentsCollected, uniqueSubredditCount, and blocked for that target. Comparing consecutive runs tells you whether activity increased, whether the user started posting in a new subreddit (a change in uniqueSubreddits), or whether they went from active to blocked: true — which, combined with a zero row count, is a stronger signal than a simple "0 results" would be on its own.

A practical workflow: run the Actor across a watchlist of usernames on an Apify Schedule, store each run's user_summary rows, and diff uniqueSubreddits and blocked against the previous run. Alert when blocked flips from false to true (possible ban or shadowban), or when a new subreddit appears in uniqueSubreddits (a shift in community focus). Schedule recurring runs from the Schedules tab in the Apify Console — this Actor has no built-in webhook delivery, so scheduled runs plus dataset export (or the Apify API) is the supported delivery path.

Integrate this Actor and automate your workflow

This Actor works with any language or tool that can send an HTTP request to the Apify API.

REST API with Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("<YOUR_USERNAME>/reddit-user-profile-posts-and-comments-scraper-user-comments").call(
run_input={
"startUrls": ["spez"],
"includeUserComments": True,
"maxUserComments": 50,
"maxPosts": 25,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["type"], item.get("title") or item.get("body"))

Scheduled monitoring and delivery

Recurring runs are set up from the Schedules tab in the Apify Console — pick a cron interval and this Actor's saved input, and it runs unattended. There is no built-in webhook delivery; retrieve results after each scheduled run via the Dataset export (JSON/CSV/Excel) or by polling the Apify API with apify_client.

Scraping public Reddit profiles and comment feeds for information any visitor can already see is generally lawful; this Actor returns only what is publicly viewable on reddit.com and old.reddit.com, without logging in or bypassing any access control. Because usernames, comments, and post content can constitute personal data about identifiable individuals, GDPR and CCPA considerations apply if you collect, store, or process data about EU or California residents — you are responsible for having a lawful basis and for honoring deletion or access requests where applicable. Scraping for passive research or monitoring carries a different risk profile than scraping to power AI training datasets or bulk resale, and Reddit's own Terms of Service impose separate contractual restrictions on automated access regardless of data-protection law. Consult your legal team for commercial use cases involving bulk data storage.

❓ Frequently asked questions

What formats does startUrls accept?

A bare username, a u/ handle, a full profile URL (reddit.com/user/<name> or reddit.com/u/<name>), or keyword:term for a search. All are normalized internally to either a user or keyword target before scraping starts.

What's the difference between sortOrder and userCommentSort?

sortOrder controls the ordering of the user's submitted posts; userCommentSort controls the ordering of their authored comments. They're independent — you can pull posts sorted by top while pulling comments sorted by new in the same run, since each maps to a separate Reddit feed.

How does this Actor handle Reddit's anti-bot measures?

It impersonates real Chrome TLS/HTTP2 fingerprints via impit rather than a plain HTTP client, routes through a residential-first Apify proxy ladder (falling back from any user-supplied proxy to residential), retries 403/429/503 responses with a fresh proxy session each time, detects the "HTTP 200 with an empty payload" silent-block pattern Reddit uses against flagged IPs and force-escalates the proxy tier when it happens, and falls back to parsing old.reddit.com HTML when the JSON endpoint is unreachable on every tier.

Does this Actor detect blocked or inactive users?

Yes — every target gets one uncharged user_summary row with a blocked boolean, set to true when both the post scrape and the comment scrape return zero rows after all proxy tiers and retries are exhausted. This distinguishes "this user has posted nothing" from "we couldn't reach this user's feed."

How many posts and comments does this Actor return per user?

Up to maxPosts (default 50, max 1000) submitted posts and up to maxUserComments (default 50, max 1000) authored comments per target. Reddit's own user feeds serve at most roughly 1000 most-recent items of each type — older history isn't reachable through these feeds regardless of the limit you set.

How do I monitor a Reddit user's activity over time?

Run the same username(s) on a recurring Apify Schedule, store each run's user_summary and post/comment rows, and diff uniqueSubreddits, postsCollected, commentsCollected, and blocked against the previous run to catch new communities, activity spikes, or a sudden block.

Does this Actor work with Claude, ChatGPT, and AI agent frameworks?

It has no dedicated MCP server, but it is callable as a standard HTTP endpoint via the Apify API — any agent framework that can call apify_client or make an HTTP request can trigger a run, poll for completion, and pull the resulting JSON as grounding context before answering a question about a Reddit user.

How does this Actor compare to other Reddit user scrapers?

As observed on the Apify Store on 2026-07-26: louisdeconinck/reddit-user-profile-posts-scraper returns posts and comments from a user's profile with a rich native Reddit field set, but its README does not document any block-detection or run-diagnostic row. simpleapi/reddit-user-profile-posts-and-comments-scraper collects posts and optional comments-on-posts with a documented proxy fallback chain, but does not document authored-comment collection as a distinct feed. signalengine/reddit-user-scraper returns a lightweight per-user profile (recent activity plus an inferred company website) from public RSS feeds, capped at roughly 25 items per user, with no proxy required but also no configurable post/comment limits beyond that cap. This Actor is the only one of the four whose documented output includes an explicit blocked diagnostic and a separate, uncharged authored-comment mirror dataset.

Can I use this Actor without managing proxies or Reddit credentials?

Yes. No Reddit login, account, or API key is required — the Actor reads public feeds only. Proxy handling is automatic: leave proxyConfiguration at its default and Apify residential proxy is used with built-in retries and rotation; you only need an Apify account to run the Actor and access its proxy pool.

💬 Your feedback

Found a bug, or a field that doesn't match what Reddit's own feeds return? Let us know through the Actor's Issues tab on Apify or via Apify Console support — reports like these keep this scraper accurate as Reddit's markup changes.