Reddit Scraper: Posts, Comments, Search & Users, No API Key avatar

Reddit Scraper: Posts, Comments, Search & Users, No API Key

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Reddit Scraper: Posts, Comments, Search & Users, No API Key

Reddit Scraper: Posts, Comments, Search & Users, No API Key

Scrape Reddit posts, comments, users and search results from any subreddit, search query or URL. No API key, no login. Get titles, bodies, authors, links, media, timestamps and threaded comments, plus optional AI sentiment and summaries. HTTP-only. Export JSON, CSV or Excel.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

4

Monthly active users

6 days ago

Last modified

Share

Reddit Scraper

Reddit Scraper - Posts, Comments, Search, Users & AI (No API Key)

Scrape Reddit without an API key, without a Reddit login, and without writing code. This Reddit scraper pulls posts, comments, users and search results from any subreddit, search query, post URL or user URL, and exports them to JSON, CSV or Excel. It also computes optional AI sentiment and AI summaries in the same run. It is HTTP-only, so runs are fast and never add a headless-browser compute charge to your account.

Here is one real post record from a live run on r/technology:

{
"recordType": "post",
"id": "1w6ihie",
"subreddit": "technology",
"subredditPrefixed": "r/technology",
"title": "Denver Resident Shows Data Center Watering Their Lawn While Residents Face Water Restrictions For a Year",
"author": "efap1701",
"postType": "link",
"url": "https://www.gadgetreview.com/denver-resident-shows-data-center-watering-their-lawn...",
"permalink": "https://www.reddit.com/r/technology/comments/1w6ihie/denver_resident_shows_data_center_watering_their/",
"domain": "gadgetreview.com",
"isSelf": false,
"thumbnail": "https://external-preview.redd.it/9AnRmj8YncPMFBw7WLZLPB01Bbct0qZoDpBRFsn2ofM.jpeg",
"mediaUrls": ["https://external-preview.redd.it/9AnRmj8YncPMFBw7WLZLPB01Bbct0qZoDpBRFsn2ofM.jpeg"],
"createdAt": "2026-09-03T20:04:51+00:00",
"aiSentiment": "negative",
"aiSentimentScore": -0.7,
"aiSummary": "A Denver resident shared a video of a data center watering its lawn while local residents face water restrictions.",
"source": "rss"
}

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

This is a Reddit scraper and Reddit data extractor with the broadest set of inputs on the market: it reads posts and comments from any subreddit feed, from a Reddit search (across all of Reddit or one subreddit), from direct post URLs, and from user profile URLs (including a user's recent posts and comments). It writes one normalized record per post to the run's dataset, and, when Include Comments is on, one record per comment in the thread. Timestamps are normalized to ISO 8601 and missing source values are returned as null, so every record has the same predictable shape.

Record types written to the dataset: post records, comment records, and user records. Use the recordType field to tell them apart. Every record also carries a source field (html or rss) that tells you which Reddit surface it came from.

Optional paid add-ons enrich each post in place, in the same run, with no second tool or NLP pipeline: analyzeSentiment adds an AI sentiment label, score and rationale; summarizePost adds a one-line AI summary; scrapeUserProfiles attaches the author's karma and cake day when Reddit's public profile page is reachable.

A note on live engagement metrics (honest by design). Reddit has tightened anonymous access to its public pages. This scraper always returns each item's core content - title, author, subreddit, self-text and comment bodies, permalink, outbound link, media URLs, post type and created/updated timestamps. Numeric live-engagement fields (score, upvoteRatio, numComments, totalAwards) and content flags (isNsfw, isPinned, isLocked, and so on) are captured when Reddit serves its full public listing and are returned as null when Reddit restricts anonymous access. We do not fabricate values; a null means "not available for this item right now," never a wrong number.

How we compare

Reddit scrapers on Apify differ in how they access Reddit, how many inputs they accept, and what they return. Here is an honest comparison.

scrapers_lat/reddit-scraper (this actor)trudax/reddit-scraper-litetrudax/reddit-scraperbovi/reddit-scraper
Posts + comment threadsYesYesYesYes
Subreddit feed + search + post URLs + user URLsYes (all four)YesYesPartial
User's recent posts and commentsYesYesYesPartial
AI sentiment + AI summary in the same runYes (add-on)NoNoNo
Author profile enrichmentYes (add-on, when reachable)NoNoSeparate user records
Live vote score / award countsBest-effort (when Reddit permits)Yes (browser)Yes (browser)Partial
EngineHTTP-only (fast, no browser charge)Headless browserHeadless browserHTTP
Export JSON / CSV / ExcelYesYesYesYes
AdoptionGrowingLargest (about 39k users)About 14k usersSmaller

Where competitors win, honestly: the browser-based trudax actors render each page in a real browser, so they can read live vote scores and award counts more consistently, and reddit-scraper-lite has by far the largest user base. Choose this actor when you want the widest input coverage (subreddits, search, post URLs and user URLs in one run), AI sentiment or summaries computed in the same pass, clean normalized JSON/CSV/Excel, and an HTTP-only engine that never adds a browser-tier compute charge.

Use cases

  • Market and sentiment research. Pull posts and comments for a product, ticker or topic across subreddits, then turn on analyzeSentiment to score how the community feels without a separate NLP step.
  • Brand and reputation monitoring. Track mentions of your brand or competitors with search mode and use createdAfter for daily monitoring.
  • Trend and topic discovery. Read hot, new, top, rising and controversial feeds with a time window to surface what is breaking out in a niche.
  • Lead generation and audience research. Capture the authors behind posts and, with scrapeUserProfiles, their karma and account age when reachable.
  • Content sourcing and curation. Collect posts and their media URLs for newsletters, dashboards or content pipelines.
  • AI training and RAG datasets. Export clean JSON, CSV or Excel of posts and threaded comments to build datasets for models and retrieval systems.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 hottest posts in r/technology plus their comments.

{
"maxPosts": 10,
"includeComments": true,
"mode": "subreddit",
"subreddits": ["technology"],
"sort": "hot",
"time": "day",
"commentsLimit": 10,
"commentSort": "top"
}

Set includeComments to false to collect posts only. Switch mode to search and set searchQuery to query across Reddit instead of reading a subreddit feed. Or paste post and user links into startUrls.

Input reference

Every field is optional. With an empty input the actor reads the default subreddit feed.

FieldTypeRequiredDefaultDescription
maxPostsintegerno10Maximum number of posts (and user/community records) to collect across all sources.
includeCommentsbooleannotrueWhen enabled, also fetch each post's comments and emit one record per comment.
modeenumnosubredditWhere to read posts from: subreddit (a community feed) or search (a query across Reddit).
subredditsstring[]no["technology"]Subreddit names to scrape when mode is subreddit. Enter names without the r/ prefix.
startUrlsstring[]no(empty)Direct Reddit URLs to scrape: post links (.../comments/...), subreddit links, user profiles (reddit.com/user/name) or search links. Works alongside or instead of the mode inputs.
searchQuerystringno(empty)Search terms to query when mode is search, for example artificial intelligence.
searchSubredditstringno(empty)When mode is search, restrict the search to this single subreddit (name without r/). Empty searches all of Reddit.
sortenumnohotSort order. Subreddit mode: hot, new, top, rising, controversial. Search mode: relevance, new, top, comments.
timeenumnodayTime window for top sort and search: hour, day, week, month, year, all. Ignored for hot, new and rising.
commentsLimitintegerno50Maximum comments to collect per post when Include Comments is enabled.
commentSortenumnotopHow comments are ordered on each post: best, top, new, controversial, old, qa.
maxCommentDepthintegerno(all)Only keep comments up to this reply nesting depth (0 = top-level only). Empty keeps all depths. Applies when reply depth is available.
minScoreintegerno(none)Skip posts whose net vote score is below this number, when score is available. Empty keeps every post.
postTypeenumnoanyKeep only one kind of post: text (self posts), link (external links) or media (image, gallery or video). any keeps all.
excludeNsfwbooleannofalseWhen enabled, posts flagged NSFW (over 18) are skipped, when the flag is available.
createdAfterstringno(none)Keep only posts created on or after this date, for example 2026-01-01 or a full ISO timestamp.
createdBeforestringno(none)Keep only posts created on or before this date.
scrapeUserProfilesbooleannofalsePaid add-on (paid Apify plans only). Add each post author's karma, cake day and verified/gold flags when the public profile is reachable. Charged only when a profile is genuinely fetched.
analyzeSentimentbooleannofalsePaid add-on. Add an AI sentiment label (positive / neutral / negative), score and rationale per post. Charged only on usable AI output.
summarizePostbooleannofalsePaid add-on. Add a one to two sentence AI summary per post. Charged only on usable AI output.

Output reference

One dataset item per post, comment or user. Use recordType to distinguish them. Types: string, integer, number, boolean, string[], or null when the source value is absent. Fields marked "when available" are populated from Reddit's full public listing and are null when Reddit restricts anonymous access.

FieldTypeDescription
recordTypestringpost, comment or user.
idstringReddit thing id of the post or comment.
namestringUsername (user records).
titlestringPost title (post records).
selftextstringBody text of a self (text) post, or null.
bodystringComment text (comment records), or null.
bodyHtmlstringComment body as HTML (comment records), or null.
subredditstringSubreddit name without prefix.
subredditPrefixedstringSubreddit name with r/ prefix.
subredditIdstringReddit subreddit id (t5_...), when available.
subredditTypestringSubreddit type, for example public, when available.
authorstringUsername of the post or comment author.
authorIdstringReddit author id (t2_...), when available.
authorFlairTextstringAuthor flair text, when available.
postTypestringtext, link, image, video or gallery (post records).
urlstringOutbound or content URL of the post.
permalinkstringFull reddit.com permalink of the post or comment.
domainstringDomain of the linked content (self.<sub> for text posts).
scoreintegerNet vote score, when available.
upvoteRationumberFraction of votes that are upvotes, when available.
numCommentsintegerComment count on the post, when available.
numCrosspostsintegerNumber of crossposts, when available.
totalAwardsintegerTotal awards received, when available.
rankintegerPosition of the post within the collected feed, when available.
linkFlairTextstringLink flair text, when available.
isSelfbooleantrue for text (self) posts.
isGallery / isVideobooleanMedia type flags, when available.
isNsfw / over18booleanNSFW flag, when available.
isSpoiler / isPinned / isLocked / isArchived / isEditedbooleanContent flags, when available.
editedAtstringISO 8601 edit timestamp, when available.
distinguishedstringDistinguished marker (moderator, admin), when available.
isOriginalContentbooleantrue when marked OC, when available.
thumbnailstringThumbnail image URL, or null.
mediaUrlstringPrimary media URL, or null.
mediaUrlsstring[]All media URLs on the post.
postIdstringParent post id (comment records).
postTitlestringParent post title (comment records).
parentIdstringReddit id of the parent thing (comment records), when available.
depthintegerReply nesting depth (comment records; 0 = top-level), when available.
isSubmitterbooleantrue when the comment author is the post's OP, when available.
createdAtstringISO 8601 creation timestamp.
updatedAtstringISO 8601 last-updated timestamp.
observedAtstringISO 8601 timestamp of when the record was collected.
sourcestringWhich Reddit surface the record came from: html or rss.
authorKarma / authorPostKarma / authorCommentKarmaintegerAuthor karma, with the scrapeUserProfiles add-on when reachable.
authorCakeDaystringAuthor account creation date, with the scrapeUserProfiles add-on when reachable.
aiSentimentstringpositive, neutral or negative. With the analyzeSentiment add-on.
aiSentimentScorenumberSentiment score from -1 to 1, with the analyzeSentiment add-on.
aiSentimentRationalestringOne-line explanation of the sentiment, with the analyzeSentiment add-on.
aiSummarystringOne to two sentence AI summary of the post, with the summarizePost add-on.
errorstringnull on success. On a failed source, a single item with a populated error field is written instead.

Example output record

Real comment record from a live run (input {"subreddits": ["technology"], "includeComments": true}):

{
"recordType": "comment",
"id": "p7h6vg6",
"body": "It looks like Meta is fighting several battles at once and losing but people do not seem to be angry or upset enough to actually stop using Meta...",
"author": "-AMARYANA-",
"postId": "1w5k5h4",
"postTitle": "Hi Reddit, I'm Katie Paul, a Reuters journalist...",
"subreddit": "technology",
"permalink": "https://www.reddit.com/r/technology/comments/1w5k5h4/hi_reddit_im_katie_paul_a_reuters_journalist/p7h6vg6/",
"createdAt": "2026-09-03T14:31:07+00:00",
"source": "rss",
"error": null
}

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~reddit-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"mode":"subreddit","subreddits":["technology"],"sort":"hot","maxPosts":25,"includeComments":false}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~reddit-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"mode":"search","searchQuery":"artificial intelligence","sort":"top","time":"week","maxPosts":100,"analyzeSentiment":true}'

Apify CLI:

apify call scrapers_lat/reddit-scraper \
--input '{"subreddits":["worldnews"],"sort":"top","time":"day","includeComments":true,"commentsLimit":20}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. Post and user records are charged as the result event; comment records are charged as the details event. See the pricing tab for current per-record prices.
  • Optional add-on events. scrapeUserProfiles charges a user_profile event only when an author profile is genuinely fetched; analyzeSentiment and summarizePost charge ai_sentiment and ai_summary events only when the model returns usable output. All three are off by default.
  • No charge on failure. If a source errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing. An add-on that returns nothing is never charged.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable records.
  • Free Apify plans are capped at 10 posts per run, and the paid add-ons are disabled for free accounts.
  • Comments are optional. Set includeComments to false to collect and pay for posts only.

FAQ and troubleshooting

Do I need a Reddit API key or a Reddit login? No. This actor needs neither. Paste a subreddit, search term or URL and run it.

Why are score, numComments or totalAwards sometimes null? Reddit has tightened anonymous access to its public pages. When Reddit serves only its lighter public feed for an item, the live vote score, comment count and award counts are not exposed, so we return null rather than guess. The item's core content - title, author, body, links, media and timestamps - is always returned. Turning on analyzeSentiment gives you a content-based signal that does not depend on vote counts.

A run returned 0 records. Why? The subreddit is empty or private, the search matched nothing, or your filters excluded everything. Loosen the filters or confirm the subreddit name. Zero-result runs are not charged.

How do I collect posts without comments? Set includeComments to false. Only post records are written and only the result event is charged.

What is the difference between subreddit mode and search mode? Subreddit mode reads a community feed (r/<name>). Search mode queries across Reddit (or a single subreddit via searchSubreddit).

Can I scrape a specific post or a user by URL? Yes. Put post links, subreddit links or user profile links in startUrls. Post links return the post plus its comments; user links return a user record plus that user's recent posts and comments. For deep user-history scraping, see the dedicated Reddit User Scraper.

How do I get sentiment or summaries? Turn on analyzeSentiment and summarizePost (paid Apify plans). Each post then carries aiSentiment, aiSentimentScore, aiSentimentRationale and aiSummary, computed in the same run.

Is it fast? Does it use a browser? It is HTTP-only, so it does not launch a headless browser and does not add a browser-tier compute charge. It routes through rotating residential IPs and retries when Reddit rate-limits a request.

Is this an official Reddit tool? No. This actor is independent and has no affiliation with Reddit. It reads only data that is publicly available on Reddit. Use it in accordance with Reddit's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Reddit. Accesses only publicly available Reddit data. Use in accordance with Reddit's terms.