Reddit Scraper β€” Posts, Comments, Subreddits & Users avatar

Reddit Scraper β€” Posts, Comments, Subreddits & Users

Pricing

from $2.54 / 1,000 dataset rows

Go to Apify Store
Reddit Scraper β€” Posts, Comments, Subreddits & Users

Reddit Scraper β€” Posts, Comments, Subreddits & Users

Scrape Reddit posts, comments, subreddits and user profiles without a login or API key. Search any keyword, pull hot, new or top listings from any subreddit, and fetch full comment threads. Every row carries the score, author, flair, timestamp and permalink. Export to JSON, CSV or Excel.

Pricing

from $2.54 / 1,000 dataset rows

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

4 days ago

Last modified

Categories

Share

Reddit Scraper extracts posts, comments, search results, subreddit metadata, and user profiles from Reddit β€” fast, structured, and without a login. It talks directly to Reddit's official OAuth data API (the same endpoints the Reddit mobile app uses), so you get clean JSON instead of brittle HTML scraping. Point it at a subreddit, a search query, a post URL, or a username and download the results as JSON, CSV, or Excel.

Running on the Apify platform, you also get scheduling, a REST API, webhook and integration support, proxy rotation, and run monitoring out of the box.

What can you use a Reddit scraper for?

  • Market & audience research β€” track what communities are discussing around your product, niche, or competitors.
  • Brand & reputation monitoring β€” surface every mention of a keyword across Reddit and read the full comment threads.
  • Content & trend discovery β€” pull top/hot/rising posts from any subreddit to spot emerging topics.
  • Sentiment & NLP datasets β€” collect large, structured post + comment corpora for analysis or model training.
  • Lead and community analysis β€” profile users and inspect their posting history.

How do I scrape a subreddit, a search, a post, or a user?

  1. Open the Actor and go to the Input tab.
  2. Fill in one or more source fields: Subreddits, Search queries, Post URLs / IDs, or Usernames.
  3. Optionally set the sort order, time window, item limits, and whether to include comments.
  4. Click Start and watch the run log.
  5. When it finishes, open the Output / Storage tab and download your data as JSON, CSV, or Excel.

What input does it take?

You can combine any of the source types in a single run. At least one is required.

FieldTypeDescription
subredditsarraySubreddit names, r/-prefixed names, or URLs to pull post listings from.
sortenumListing sort: hot, new, top, rising, controversial.
timeenumTime window for top/controversial: hour–all.
searchQueriesarrayFull-text search queries to run.
searchSortenumSearch sort: relevance, hot, top, new, comments.
searchInSubredditsbooleanRestrict each search query to the listed subreddits.
postUrlsarrayIndividual post permalinks/IDs β€” fetches full self-text + comments.
usernamesarrayUsers to scrape (profile + history).
userContentenumoverview, submitted, comments, or about.
includeCommentsbooleanAlso fetch comment trees for posts collected from subreddits/searches.
maxCommentsintegerMax comments emitted per post.
commentSortenumComment sort: confidence, top, new, controversial, old, qa.
maxItemsPerSourceintegerMax posts per subreddit/search/user (0 = unlimited).
dateFrom / dateTostringYYYY-MM-DD (UTC) bounds on post/comment creation time.
includeNsfwbooleanInclude NSFW results in search.
proxyConfigurationobjectProxy settings (Apify Proxy recommended for larger runs).

Example input

{
"subreddits": ["programming", "r/python"],
"sort": "top",
"time": "week",
"maxItemsPerSource": 100,
"includeComments": true,
"maxComments": 50,
"searchQueries": ["large language models"],
"searchSort": "new"
}

What does each row of scraped Reddit data contain?

Each item is pushed to the dataset with a type field (post, comment, subreddit, or user). You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output (a post)

{
"type": "post",
"id": "1ukim8j",
"subreddit": "programming",
"title": "Open source is a thankless job...",
"author": "swithek",
"selftext": "",
"score": 1092,
"upvoteRatio": 0.97,
"numComments": 267,
"createdAt": "2026-07-01T11:09:38+00:00",
"url": "https://example.com/article",
"permalink": "https://www.reddit.com/r/programming/comments/1ukim8j/..."
}

Example output (a comment)

{
"type": "comment",
"id": "ouw01y8",
"postId": "1ukim8j",
"author": "SP-Niemand",
"body": "As a user, you get to demand exactly nothing...",
"score": 453,
"depth": 0,
"createdAt": "2026-07-01T12:30:00+00:00"
}

Data fields

FieldApplies toDescription
typeallpost, comment, subreddit, or user.
idallBase-36 Reddit ID.
fullnamepost, commentPrefixed ID (t3_… for posts, t1_… for comments).
subredditpost, commentSubreddit name.
titlepost, subredditPost title / subreddit title.
authorpost, commentUsername of the author.
selftext / bodypost / commentFull text content.
score, ups, upvoteRatiopost, commentVote metrics (upvoteRatio is posts only).
numCommentspostComment count.
linkFlairText, domain, stickied, locked, spoiler, over18postFlair and post flags.
postId, parentId, depth, isSubmittercommentThread position and whether the commenter is the OP.
subscribers, activeUserCount, publicDescription, subredditTypesubredditCommunity size and type.
commentKarma, linkKarma, totalKarma, isGold, isMod, verifieduserKarma breakdown and account flags.
createdAtallISO-8601 UTC creation time (createdUtc holds the raw epoch).
permalink, urlpost, commentLinks.

What do the Reddit terms in the output mean?

  • Score vs. ups β€” score is the net vote count Reddit publishes (upvotes minus downvotes, fuzzed to deter vote manipulation). ups is the upvote count Reddit returns alongside it.
  • Upvote ratio β€” the share of a post's votes that are upvotes, from 0 to 1. 0.97 means 97% of voters upvoted. Posts only; Reddit does not expose it per comment.
  • Link karma vs. comment karma β€” linkKarma is earned from a user's posts, commentKarma from their comments, and totalKarma is Reddit's combined figure (which also includes award karma, so it is not always the sum of the two).
  • Fullname β€” Reddit's global ID: a type prefix plus the base-36 ID. t1_ is a comment, t3_ a post, t5_ a subreddit. You can paste either form into Post URLs / IDs.
  • Flair β€” a label a subreddit's moderators attach to a post, returned in linkFlairText (e.g. Discussion, Help). Not every subreddit uses it, so it is often null.
  • Depth β€” how deeply nested a comment is. 0 is a top-level reply to the post, 1 a reply to that, and so on.
  • Best / confidence sort β€” Reddit's default comment order, which weighs a comment's vote ratio against how many votes it has, so a new 5-of-5 comment does not outrank an established one.

How much does it cost to scrape Reddit?

This Actor uses pay-per-result pricing: $5.00 per 1,000 rows ($0.005 per row). Every item written to the dataset β€” a post, a comment, a subreddit, or a user β€” counts as one row. So a run that collects 500 posts and 5,000 comments (5,500 rows) costs about $27.50.

Platform usage (compute + proxy) is billed on top of the per-row price at Apify's standard rates. The Actor is lightweight β€” it calls a JSON API rather than rendering pages β€” so compute is minimal; the main variable cost is proxy traffic if you enable Apify Proxy. To control spend, set Max total charge on the run and/or lower maxItemsPerSource and maxComments; the Actor stops as soon as the charge cap is reached. Reddit limits each OAuth token to roughly 100 requests per minute, so very large runs are paced accordingly.

How do I make runs faster and cheaper?

  • Fewer requests, faster runs: leave includeComments off if you only need post metadata.
  • Targeted comment collection: put specific posts in postUrls β€” their comments are always fetched.
  • Scoped search: enable searchInSubreddits with a subreddits list to search within specific communities.
  • Unlimited collection: set maxItemsPerSource to 0 to page through everything the API returns (Reddit typically caps listings around ~1000 items per source).
  • Scale past rate limits: run with Apify Proxy and/or split large jobs into scheduled runs.

FAQ

Do I need a Reddit account, API key, or app credentials? No. The Actor mints an anonymous OAuth token for itself on every run β€” the same anonymous grant the Reddit apps use before you sign in. You never enter a username, password, or client secret, and nothing is tied to your Reddit identity.

Can I schedule it to run daily or weekly? Yes, with Apify Schedules. For incremental collection, set sort to New and a dateFrom β€” with a chronological sort the Actor stops paginating as soon as it reaches posts older than that date instead of scanning the whole listing.

What counts as one row? One post, one comment, one subreddit, or one user profile. Rows are mixed in a single dataset and told apart by the type field, so filter on type (or use the dataset views) if you want posts and comments in separate files.

Can I get every comment on a big thread? Not always. maxComments caps how many comments each post emits (0 means post only), and Reddit returns a truncated tree for very large threads β€” the "load more comments" stubs are skipped rather than expanded. Expect the top of the tree under your chosen commentSort, not a guaranteed complete thread.

How far back in a subreddit can I go? Reddit's own listing pagination stops at roughly 1,000 items per source, no matter how high you set maxItemsPerSource. To reach older material, use Search queries with a narrower keyword, split the job across sorts and time windows, or feed known post URLs directly.

Does it include NSFW posts? The includeNsfw option adds over-18 results to search output. Subreddit listings return whatever Reddit serves for that community, and every post carries an over18 flag you can filter on.

What happens if a subreddit is private or a user is deleted? That source is logged as a warning and skipped; the rest of the run continues and finishes successfully with whatever it did collect. If Reddit is unreachable after all retries, the run ends with a status message explaining it rather than a silent empty dataset.

Do I need proxies? For small runs, no. Reddit rate-limits per IP and per token at roughly 100 requests per minute, so for large jobs enable Apify Proxy (datacenter is usually enough) to spread the load.

Disclaimers and support

Is scraping Reddit legal? This Actor collects only publicly available data. You are responsible for how you use it β€” comply with applicable laws (including data-protection law such as GDPR) and avoid collecting personal or sensitive data without a lawful basis.

Support: found a bug or need a field that isn't extracted? Open an issue on the Actor's Issues tab. Custom scraping solutions can also be arranged.

Community research toolkit

Part of the Community research toolkit β€” research online communities and creators across forums, link-in-bio pages, and social platforms:

Did you find this useful?

Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.