Reddit Subreddit Members Scraper By Time Window avatar

Reddit Subreddit Members Scraper By Time Window

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Reddit Subreddit Members Scraper By Time Window

Reddit Subreddit Members Scraper By Time Window

Monitor members in competitor subreddits. This actor helps you extract usernames to study growth, engagement patterns, or overlap between audiences in your industry niche.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

SimpleAPI

SimpleAPI

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Reddit Subreddit Scraper By Time Window sweeps a subreddit's new, hot, rising, top and controversial feeds — plus its comment firehose — and returns one deduplicated row per unique public account that actually posted or commented. Each row carries username, userId, profileUrl, postKarma, commentKarma, createdISO, accountAgeDays, foundInSortsText and discoverySurface. It's built for community managers, growth marketers, and researchers who need a real activity sample from a subreddit rather than a number Reddit no longer publishes. Point it at any subreddit, choose your feeds and time window, and get a typed, run-deduplicated participant list on the Apify platform.


What is Reddit Subreddit Scraper By Time Window?

It's an Apify Actor that reads old.reddit.com's public listing pages — not Reddit's private API — and turns each post or comment author it finds into one output row, deduplicated across the whole run. No Reddit account, login, or API key is required; it runs entirely against logged-out pages behind an Apify residential proxy.

  • Discovery by subreddit, keyword, or username — feed r/python, a full URL, u/spez, or a plain search term into targets; subreddit names and search terms are classified automatically
  • Identity fields on every rowusername, the real Reddit userId (the t2_… fullname read off the page), and a direct profileUrl
  • Karma and account-age signalpostKarma, commentKarma, createdISO and accountAgeDays, read from the profile sidebar when fetchDetails is on
  • Explicit time windowstopTimeWindow (hour to all-time) applied to top and controversial, always sent so Reddit can't silently narrow it to today
  • Cross-feed filtersminSortCount keeps only accounts seen in several swept feeds, excludeAuthors drops bots and moderators, before anything is charged
  • Standard Apify export — results land in the Actor's dataset and download as JSON, CSV, Excel, HTML table, or RSS, like any Apify dataset

What data can I extract with Reddit Subreddit Scraper By Time Window?

Every kept participant is pushed as one dataset row with identity, karma, and discovery-provenance fields — here is every key the Actor writes:

FieldExample ValueUse Case
username"climate_nerd_42"Primary handle for outreach or dedupe
userId"t2_9f3k2a"Stable Reddit account ID, unaffected by username changes
profileUrl"https://reddit.com/user/climate_nerd_42"Direct link to the public profile
totalKarmanullAlways null — the only endpoint that ever summed it, about.json, returns HTTP 403 since 2026
postKarma4821Submission karma from the profile sidebar
commentKarma12890Comment karma from the profile sidebar
createdUTC1451606400Account creation, Unix epoch seconds
isGoldnullAlways null — was only on the now-blocked about.json
iconImgnullAlways null — same reason
foundInSorts["new", "top:month"]Every feed key this account surfaced in
foundInSortsText"new | top:month"Same list, pipe-joined for spreadsheets
sortCount2How many distinct feeds surfaced the account
firstFoundInSort"new"The feed that discovered them first
positionBySort{"new": 4, "top:month": 11}Best (lowest) listing rank seen per feed
bestPositionInFeed4The single best rank across all feeds
timeWindowUsed"month"The topTimeWindow in force when found in a windowed feed
timesSeenInRun3Total feed items attributed to this account
discoverySurface"subreddit_feed"subreddit_feed, comment_firehose, keyword_search, or direct_user_target
sourceSubreddit"python"First subreddit this account was linked to
sourceSubreddits["python"]Every subreddit this account was linked to in the run
createdISO"2016-01-01T00:00:00"Account creation, ISO 8601
accountAgeDays3859Days since account creation, computed at run time
profileFetchedtrueWhether the sidebar request that fills karma/creation fields succeeded
profileFetchStatus"ok"ok, not_found, blocked, no_sidebar, skipped, or unknown
scrapedAt"2026-08-04T12:00:00Z"When this row was written
runId"AbC123XyZ"The Apify run that produced this row

Karma and engagement signals

postKarma, commentKarma, sortCount, bestPositionInFeed and timesSeenInRun together describe how active and how established a participant is. An account with sortCount: 4 and a low bestPositionInFeed surfaced near the top of several different feeds — a genuine regular, not a one-off commenter. Set minSortCount to 2 or higher and combine it with a commentKarma threshold in your own downstream filter to isolate the accounts worth reaching out to, rather than everyone who appeared once in a 1,000-item sweep.

Discovery and targeting fields

discoverySurface, sourceSubreddit, sourceSubreddits, timeWindowUsed and firstFoundInSort record exactly where and how each account was found. They let you segment a multi-subreddit run back apart per community, tell posters (subreddit_feed) apart from repliers (comment_firehose), and confirm which topTimeWindow produced a given windowed row before you trust it in a report.


How does Reddit Subreddit Scraper differ from the official Reddit API?

Reddit's own API requires an OAuth app registered on Reddit's developer platform, and its subreddit endpoints (/r/<sub>/about) return only an aggregate subscriber count — there is no official endpoint that enumerates individual subreddit members, because Reddit does not publish that list to anyone, official client or not. This Actor does not solve that gap either; instead it builds a different, honest dataset: the accounts that actually posted or commented, discovered by reading the same public listing pages a browser would.

FeatureReddit API (official)Reddit Subreddit Scraper By Time Window
Individual member/subscriber listNot available at any tier — only an aggregate count fieldNot available either — see limitations below
Active participant discoveryRequires the caller to page every feed and dedupe manually✅ Sweeps 5 sort orders plus comments and dedupes automatically
Time-windowed ranking (t=)Available as a raw query parameter✅ Same parameter, always sent explicitly so it can't silently default
Requires developer account / OAuth app✅ Yes❌ No Reddit login or app registration
Cross-feed yield accountingNot provided — caller computes overlap itself✅ Built in; reported per feed and per feed pair
Anti-block handlingCaller's responsibility✅ TLS fingerprint rotation and residential proxy handled internally

Why can't I get a real subreddit member list from either one?

Reddit stopped exposing per-account subreddit membership years ago, and as of 2026 even the aggregate subscriber count (about.json) returns HTTP 403 for this Actor's requests. This is a platform-wide gap, not a gap in one client: no scraper and no official API call can return "who is subscribed to r/python" today. What both can still see is participation — who posted or commented, which is public by definition. This Actor's real contribution is turning that public activity into a deduplicated, filterable account list with provenance, instead of leaving you to write and maintain the pagination and dedupe logic yourself.

Use Reddit's official API when you need OAuth-scoped actions on your own account (posting, voting, moderation) or a single known endpoint's raw JSON. Use this Actor when you want a ready-to-filter participant list across several feeds and a time window, without registering a Reddit app.


How to use data extracted from Reddit

Community managers and growth marketers

Set targets to your subreddit, sweep new + top with a month window plus the comment firehose, and set minSortCount: 2 to keep only the accounts that show up repeatedly. The output — username, commentKarma, foundInSortsText — becomes a warm-outreach or ambassador-recruitment list, ranked by how consistently each account participates rather than by a single lucky post.

Agencies running recurring subreddit audits

Point the same configuration at each client's target subreddit on a schedule, and diff uniqueParticipantsDiscovered and perFeedYield run over run from the SORT_YIELD_REPORT key-value record. A steady newParticipantsContributed count signals a healthy, growing community; a flattening one is a real finding to bring to a client review.

Market research and community intelligence

Run the same sortOrders and topTimeWindow across several competing subreddits and compare sortCount distributions and accountAgeDays medians. Subreddits with younger median accountAgeDays and high commentKarma spread indicate an actively growing audience — useful for deciding where to launch a community or an AMA.

AI agents and automated pipelines

Feed the deduplicated username/profileUrl/discoverySurface rows into an enrichment or CRM pipeline, or wrap a scheduled run behind an agent tool that answers "who is currently active in r/<subreddit>" on demand, using the Actor's dataset as the retrieval source instead of scraping Reddit directly inside the agent loop.


🔼 Input sample

Configure the run entirely through .actor/input_schema.json fields — no required parameters, every one has a working default.

ParameterRequiredTypeDescriptionExample Value
targetsNoarraySubreddits, profiles or search terms, one per line. Accepts r/python, a full URL, u/spez, /user/spez/, or a plain keyword. Do not decorate entries with emoji.["r/python", "r/MachineLearning"]
subredditsNoarrayExtra plain subreddit names (no r/ prefix), merged with targets.["learnpython"]
startUrlsNoarrayLegacy alias for targets, used only when targets is empty.[]
sortOrdersNoarray (select)Feed sort orders to sweep: new, hot, rising, top, controversial. Prefilled ["new", "top"].["new", "top"]
topTimeWindowNostring (enum)Time window for top/controversial: hour, day, week, month, year, all. Default "year"."month"
includeCommentFirehoseNobooleanAlso sweep /r/<sub>/comments/ for repliers. Default true.true
sort_orderNostring (enum)Legacy single-feed field: "", new, hot, rising, top, controversial. If set, swept first, in addition to sortOrders.""
maxPostsNointegerMax listing items per feed per subreddit. Default 10, min 1, max 1000.50
maxCommentsNointegerMax comments read per subreddit. Default 10, min 0, max 1000. Set 0 to skip the firehose.50
maxParticipantsNointegerHard ceiling on charged rows, applied in discovery order. Default 0 (no ceiling), max 100000.0
minSortCountNointegerMinimum number of swept feeds an account must appear in. Default 1, min 1, max 10.1
excludeAuthorsNoarrayUsernames to exclude, case-insensitive. Prefilled ["AutoModerator"].["AutoModerator", "reddit"]
restrictKeywordsToSubredditNobooleanScope keyword targets to the first subreddit with restrict_sr. Default false.false
fetchDetailsNobooleanRead each participant's profile sidebar for karma and account age. Default true.true
maxConcurrentUsersNointegerConcurrent profile sidebar requests. Default 3, min 1, max 10.3
requestDelayNointegerMinimum delay between requests, in seconds. Default 1, min 0, max 30.1
proxyConfigurationNoobjectProxy configuration. Default {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
forceResidentialProxyNobooleanForce any selected proxy group to RESIDENTIAL, and log the override. Default true.true
{
"targets": ["r/python", "r/MachineLearning"],
"sortOrders": ["new", "top"],
"topTimeWindow": "month",
"includeCommentFirehose": true,
"maxPosts": 50,
"maxComments": 50,
"minSortCount": 1,
"excludeAuthors": ["AutoModerator"],
"fetchDetails": true,
"maxConcurrentUsers": 3,
"requestDelay": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Common pitfall: don't decorate targets entries with emoji or other prefixes — the parser looks for r/, u/, or a full URL pattern, and an unexpected leading character can push an entry into the free-text keyword bucket, turning an intended subreddit sweep into a site-wide search instead.


🔽 Output sample

Results write to the Actor's default dataset, one row per unique participant, exportable as JSON, CSV, Excel, HTML table, or RSS from the Apify Console or API.

{
"username": "climate_nerd_42",
"userId": "t2_9f3k2a",
"profileUrl": "https://reddit.com/user/climate_nerd_42",
"totalKarma": null,
"postKarma": 4821,
"commentKarma": 12890,
"createdUTC": 1451606400,
"isGold": null,
"iconImg": null,
"foundInSorts": ["new", "top:month"],
"foundInSortsText": "new | top:month",
"sortCount": 2,
"firstFoundInSort": "new",
"positionBySort": { "new": 4, "top:month": 11 },
"bestPositionInFeed": 4,
"timeWindowUsed": "month",
"timesSeenInRun": 3,
"discoverySurface": "subreddit_feed",
"sourceSubreddit": "python",
"sourceSubreddits": ["python"],
"createdISO": "2016-01-01T00:00:00",
"accountAgeDays": 3859,
"profileFetched": true,
"profileFetchStatus": "ok",
"scrapedAt": "2026-08-04T12:00:00Z",
"runId": "AbC123XyZ"
}

The run also writes an uncharged accounting dataset (sort-yield-<runId>) with per-feed yield and feed-overlap rows, and a SORT_YIELD_REPORT object in the key-value store summarizing the whole run — neither is billed, and neither mixes into the participant dataset above.


How do you filter and target specific participants?

Four real controls decide who ends up in your output, and in this order:

  1. Subreddit sweep vs. keyword search. Entries recognized as r/<name> or a full subreddit URL sweep that subreddit's own feeds directly — the more complete and accurate path. A plain-text entry instead triggers a Reddit search, either site-wide or scoped to your first subreddit with restrictKeywordsToSubreddit, which is faster to set up but returns whatever Reddit's search ranks, not a full feed sweep.
  2. Feed and window selection. sortOrders picks which rankings to sweep (new, hot, rising, top, controversial), and topTimeWindow narrows top/controversial to an hour through all-time. Different feeds surface largely different people, so combining new with top and the comment firehose covers more ground than sweeping near-identical feeds like new and hot.
  3. Quality threshold. minSortCount keeps only accounts that surfaced in multiple swept feeds — a cheap way to separate regulars from one-off commenters, applied before any profile request or charge.
  4. Volume controls. maxPosts and maxComments (up to 1000 each) bound how deep each feed is paginated in old.reddit's own 100-item pages; maxParticipants caps total charged rows across the whole run, applied in discovery order, with 0 meaning no cap.
{ "targets": ["r/technology"], "sortOrders": ["new", "hot", "top"], "topTimeWindow": "week", "maxPosts": 100 }
{ "targets": ["r/python"], "sortOrders": ["new", "top"], "minSortCount": 2, "excludeAuthors": ["AutoModerator", "reddit"] }
{ "targets": ["r/startups", "market research"], "restrictKeywordsToSubreddit": true }

▶️ Want to try other SimpleAPI scrapers?

Scraper NameWhat it extracts
Facebook Group Posts And Details & Contact Leads ScraperFacebook group posts, group profile data, and a member-leads child dataset
LinkedIn Profile Posts Scraper By Media & HashtagLinkedIn profile posts classified by format, with hashtags extracted
Pinterest Profile Scraper With Email & Website ContactsPublic Pinterest profiles and the contact details each account publishes
Posts From A Place — X (Twitter) profiles, posts & place tagsX profile timelines and geo-tagged post search
Twitter X Tweets Scraper Scraper By Keyword & HashtagX posts by keyword or hashtag with typed filters
Threads Search Post ScraperThreads posts by search

How to extract Reddit data programmatically

Every run is a standard Apify Actor call: one API call to start the run, structured JSON rows back from the dataset.

Python example

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("YOUR_USERNAME/reddit-subreddit-members-scraper-by-time-window").call(
run_input={
"targets": ["r/python"],
"sortOrders": ["new", "top"],
"topTimeWindow": "month",
"minSortCount": 2,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["username"], item["commentKarma"], item["foundInSortsText"])

Export to spreadsheets or CRM

Download the dataset as CSV directly from the Apify Console or via the API's dataset export endpoint, and map username, profileUrl, postKarma, commentKarma, foundInSortsText and sourceSubreddit straight into spreadsheet columns or CRM contact fields — the field names in the CSV header match the JSON keys exactly.


Yes — scraping publicly accessible Reddit posts and comments is generally lawful; this data is public by design, since Reddit publishes it for anyone to read without logging in. That does not remove other obligations. The rows this Actor returns are tied to identifiable Reddit accounts — usernames, karma history, and account-creation dates — which can constitute personal data under GDPR and CCPA when linked to a natural person. You are responsible for establishing a lawful basis before storing, enriching, or acting on it at scale, honoring deletion requests, and complying with Reddit's own terms of service for automated access. Consult legal counsel for commercial applications involving bulk storage of personal data.


❓ FAQ

What happens to accounts that get suspended, banned, or deleted after being discovered?

The Actor never invents a stale flag — it reports what actually happened on request. If a participant's profile page later 404s, profileFetchStatus is set to "not_found"; if the sidebar loads but carries no karma data, it's "no_sidebar". Authors already shown as [deleted] or [removed] on the feed itself are skipped before they're ever recorded as a participant.

Does it return the text of the posts and comments, or just the participants?

Just the participants and their provenance — no post title, comment body, or permalink is captured for the specific item that surfaced an account. Each row tells you who posted or commented, in which feed, and how often, plus their karma and account age from their profile sidebar; it does not carry the content of what they wrote.

Can I get comment authors along with post authors in the same run?

Yes. includeCommentFirehose (default true) sweeps /r/<sub>/comments/ for repliers and merges them into the same deduplicated participant list, tagged discoverySurface: "comment_firehose". This surface consistently adds accounts the post feeds miss, since it captures people replying rather than submitting.

How accurate is the karma and account-age data?

It's read exactly as it appears on the account's public old.reddit.com profile sidebar at request time, so it's as current as Reddit's own page. totalKarma, isGold and iconImg are always null because the only endpoint that ever exposed them, about.json, returns HTTP 403 on every request as of 2026 — they are kept as columns for compatibility but never populated with a guess.

How many participants can I get per run?

There's no fixed ceiling beyond what you configure: maxParticipants caps total charged rows (default 0, meaning uncapped, up to 100000), while maxPosts (up to 1000) and maxComments (up to 1000) bound how deep each feed is paginated, in chunks of up to 100 items per request the way old.reddit itself paginates. A run also stops pushing rows early if the Actor's remaining charge allowance for the row_result event runs out, so it never produces a row it can't bill for.

What's the most useful filter for narrowing down to real regulars?

minSortCount. Set it to 2 or higher to keep only accounts that surfaced in at least that many swept feeds — a much smaller, more consistently active set than everyone who appeared once across a large sweep, and it's applied before any profile request or charge.

Can I sweep a private, quarantined, or banned subreddit?

Not meaningfully. The Actor only reads logged-out public pages; a private, quarantined, or banned subreddit either serves no listing content or a block-style page, which the Actor classifies as blocked or not found rather than as an empty result — you'll see it in the run log and the per-feed stopReason, not a silent zero.

Does Reddit Subreddit Scraper By Time Window work with Claude, ChatGPT, and AI agent frameworks?

Yes, as a standard HTTP endpoint. Any agent framework that can call the Apify API or the apify-client SDK can start a run, poll for completion, and read the dataset back as structured JSON — no Reddit-specific integration required.

Can I use it without a Reddit account, API key, or developer app?

Yes. The Actor reads only logged-out public pages and needs no Reddit credentials at all. You need an Apify account to run it; a residential proxy is required and is supplied by default through Apify Proxy.


Conclusion

Reddit Subreddit Scraper By Time Window turns a subreddit's scattered feeds into one deduplicated, typed list of the accounts actually posting and commenting there, with per-feed yield reporting so you know which sort orders were worth sweeping. It's built for community managers, agencies running recurring audits, and researchers who need a defensible activity sample rather than a subscriber number Reddit no longer publishes. Configure your subreddits, sort orders and time window, and run it directly on the Apify platform to get structured JSON back in minutes.