Reddit Scraper: Posts, Comments, Users, Search & Explore
Scrape Reddit posts, full comment threads, user
profiles and histories, communities and their rules, and search comments
by keyword, plus the communities Reddit's Explore tab recommends.
Clean JSON straight from Reddit's API, with no login, no API key and no
browser.
Still works after Reddit's 2026 shutdown. In May 2026 Reddit closed
its public .json endpoints to anonymous requests (they now answer 403
whatever the IP). This actor doesn't use them: it reads Reddit's
authenticated API the way Reddit's own app does, and comment threads from
Reddit's own web pages. You get the same structured data, with exact
scores, upvote ratios, flairs, media and comment trees.
What it scrapes
| Source | Rows |
|---|
Subreddits (hot, new, top, rising, controversial; any time range), r/popular, r/all, the front page | posts, optionally with their comments and the subreddit's info and rules |
| Posts (any post URL) | the post and its comment thread: text, score, depth and parent of every comment |
| Users | profile (karma, account age, verified, moderator), posts and comments |
| Search by keyword, site-wide or inside one subreddit | posts, comments (full text, with the post and subreddit), communities or users |
| Explore | the communities Reddit recommends (popular near you, hidden gems, topic picks) with subscribers and rules |
Paste any Reddit URL (subreddit, post, user, search, /explore/) or use
the name and keyword fields. Mix as many sources as you like in one run.
Why this one
- Comment search with full text. Find every comment that mentions your
brand, product or competitor. Each row has the comment's full text, author,
score and date, plus the post's title, score and comment count.
- Deep comment threads. The actor follows Reddit's "more comments"
links, so a big thread isn't cut off at the first page: up to 2,500
comments a post (2,000 of a 5,450-comment thread in about 2 minutes),
top comments first, then the replies under them.
- Real monitoring. Turn on Only new rows and schedule the run: each run
delivers only the posts and comments the earlier runs didn't, and you
never get the same row twice. Monitors are remembered for 60 days,
and you can keep one per brand.
- No duplicates in a run. A post found by two searches is delivered
once.
- Built for Reddit's rate limit. Reddit allows each IP 100 requests per
10 minutes. The actor switches to a fresh IP before that runs out, so it
doesn't stall or fail on 429 errors.
- Light and cheap. Pure HTTP at 256 MB, on datacenter proxies by
default. If Reddit refuses them, the run moves to residential by itself.
- Explore, the recommended communities, which no other Reddit actor
offers.
Input examples
A subreddit's top posts of the week, with comments:
{
"startUrls": [{ "url": "https://www.reddit.com/r/technology/top/?t=week" }],
"includeComments": true,
"maxCommentsPerPost": 50,
"maxItemsPerSource": 25
}
Monitor a brand: new comments and posts every day:
{
"searches": ["your brand", "yourbrand.com"],
"searchFor": ["comments", "posts"],
"searchSort": "new",
"postedAfter": "1 day",
"commentedAfter": "1 day",
"onlyNew": true,
"monitorName": "your-brand"
}
Every comment of a big thread (up to 2,000):
{
"startUrls": [{ "url": "https://www.reddit.com/r/AskReddit/comments/1x7uu01/" }],
"maxCommentsPerPost": 2000
}
Users' recent comments:
{
"users": ["spez", "kn0thing"],
"userContent": "comments",
"sort": "new",
"maxItemsPerSource": 200
}
Communities about a topic, with their rules:
{
"searches": ["espresso"],
"searchFor": ["communities"],
"includeRules": true
}
Output
One row per post, comment, community or user. The dataType field says
which. Every row also carries source (what found it), sourceUrl,
created_at (ISO date) and scrapedAt.
Post (dataType: "post", 45 fields):
| Field | Example |
|---|
title, selftext | the post's title and body |
subreddit, author | espresso, KiloBrewer |
score, upvote_ratio, num_comments | 1202, 0.78, 386 |
permalink, url | the Reddit link and the linked page / image / video |
flair, flair_background_color | "[SUNDAY ONLY] Self-Promotion", #014980 |
post_hint, is_video, is_gallery, media, preview, gallery | media details and image URLs |
over_18, spoiler, stickied, locked, archived, edited | flags |
created_utc, created_at | 1792368908, 2026-10-17T22:15:08+00:00 |
Comment (dataType: "comment", 34 fields): body, author, score,
depth, parent_id, post_id, post_title, post_permalink,
subreddit, is_submitter (the post's author), controversiality,
edited, distinguished, permalink, created_at. Comment search rows
add post_score and post_num_comments. Thread comments are read from
Reddit's web pages, which don't show edits, moderator badges or
controversiality: those fields are empty there (a user's comment history
has them), and body is the text as displayed (links as their text).
Community (dataType: "community"): name, title, subscribers,
public_description, description, subreddit_type, over18,
created_utc, icon, banner, url, and rules (name, description,
kind) when Include community rules is on.
User (dataType: "user"): name, link_karma, comment_karma,
total_karma, created_utc, verified, is_mod, is_employee,
is_gold, is_suspended, description, icon, url.
Pricing
One monthly rental, no per-row fees: scrape as many posts, comments,
communities and users as you like. Runs use Bytewells compute from your
credit, and this actor needs very little of it: pure HTTP at 256 MB.
Measured on Bytewells: 821 rows (posts from two subreddits, plus post
and comment search) in 83 s for $0.014 of usage, about $0.02 per
1,000 rows, proxy traffic included.
Good to know
- About 1,000 per listing. Reddit ends every listing and search at
roughly 1,000 results. For more, combine sorts (
new, top by time
range) or keywords.
- NSFW, private and quarantined communities aren't readable without a
Reddit account. They're skipped with a note in the log.
- Comment search reads about 10 comments per page, so it's slower per
row than post search. Use the New sort with Comments after for
monitoring: the search stops at the first older comment.
- Deleted content shows as
[deleted] / [removed], as on Reddit.
removed_by_category says who removed a post.
- Dates: Posted after and the other date filters take a date
(
2026-10-01) or a relative time (7 days, 24 hours, 1 month).
Use it from your tools
Run it from the Bytewells API (Apify-compatible: apify-client works with
its base URL), on a schedule, or from AI agents through the Bytewells MCP
server. Export to JSON, CSV, Excel or HTML.