Reddit Posts Scraper: Subreddits, Search & Full Text, No API avatar

Reddit Posts Scraper: Subreddits, Search & Full Text, No API

Pricing

from $9.23 / 1,000 results

Go to Apify Store
Reddit Posts Scraper: Subreddits, Search & Full Text, No API

Reddit Posts Scraper: Subreddits, Search & Full Text, No API

Scrape Reddit posts from any subreddit, search query, user or post URL without an API key or login. Get title, author, subreddit, full self text, links, media, thumbnails and timestamps, plus optional AI sentiment, summary and topics. Export to JSON, CSV or Excel.

Pricing

from $9.23 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Reddit Posts Scraper

Reddit Posts Scraper: Subreddits, Search & Full Text, No API Key

Scrape Reddit posts from any subreddit, search query, user or post URL without a Reddit API key, OAuth app or login. This actor reads Reddit's public post feeds over HTTP and writes one clean, normalized record per post, with the full self text, links, media and timestamps, ready for social media monitoring, sentiment research and trend discovery. Optional AI add-ons enrich each post with sentiment, a summary and topic tags.

Here is one real result from a live run (a link post from r/technology), showing every field the actor returns:

{
"recordType": "post",
"thumbnail": "https://external-preview.redd.it/0F8B6ElbJucEXl6mxvIeAcb49nGLV8GFNjSr-6wwsJA.jpeg?width=640&crop=smart&auto=webp&s=8337922a",
"title": "Tetris issues legal warning after White House releases arcade full of parody games",
"url": "https://www.dexerto.com/gaming/tetris-issues-legal-warning-after-white-house-releases-arcade-full-of-parody-games-3405931/",
"id": "1w7dpo9",
"fullname": "t3_1w7dpo9",
"selftext": null,
"contentHtml": "<table> <tr><td> <a href=\"https://www.reddit.com/r/technology/comments/1w7dpo9/...\"> ...",
"subreddit": "technology",
"subredditPrefixed": "r/technology",
"author": "IndicaOatmeal",
"authorUri": "https://www.reddit.com/user/IndicaOatmeal",
"authorFullname": null,
"authorFlairText": null,
"score": null,
"upvoteRatio": null,
"numComments": null,
"numCrossposts": null,
"totalAwards": null,
"linkFlairText": null,
"permalink": "https://www.reddit.com/r/technology/comments/1w7dpo9/tetris_issues_legal_warning_after_white_house/",
"domain": "dexerto.com",
"isSelf": false,
"isVideo": null,
"mediaUrls": ["https://external-preview.redd.it/0F8B6ElbJucEXl6mxvIeAcb49nGLV8GFNjSr-6wwsJA.jpeg?width=640"],
"galleryImageUrls": null,
"isNsfw": null,
"isSpoiler": null,
"isOriginalContent": null,
"isPinned": null,
"isLocked": null,
"isArchived": null,
"edited": false,
"editedAt": null,
"createdAt": "2026-09-04T19:08:57+00:00",
"updatedAt": "2026-09-04T19:08:57+00:00",
"observedAt": "2026-09-05T00:30:15.920Z",
"transport": "rss",
"aiSentiment": null,
"aiSentimentScore": null,
"aiSummary": null,
"aiTopics": null,
"aiCategory": null,
"topComments": null,
"error": null
}

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

Apify Coverage Output Billing

Honest note on engagement metrics

Reddit now hard-walls anonymous access to its rich data channels: the public JSON endpoints and the old.reddit HTML pages both return a login or network-security block for non-logged-in traffic. The one channel that remains openly readable over HTTP is Reddit's public post feed, and that is what this actor uses.

That feed reliably provides the post's identity, author, subreddit, title, full self text, content HTML, outbound link, media and timestamps. It does not expose live engagement counters, so score, upvoteRatio, numComments, totalAwards, numCrossposts and the moderation flags (isNsfw, isSpoiler, isPinned, isLocked, isArchived, isOriginalContent) are returned as explicit null rather than guessed or faked. If you need live vote and comment counts, a browser-based Reddit scraper that logs in is the right tool, and we say so plainly in the comparison below. We would rather ship honest nulls than invented numbers.

Table of contents

What it does

Point the actor at one or more subreddits, a search query across Reddit, exact post URLs, or a mix of start URLs (subreddit, post, user or search URLs), choose a sort order, and it writes one normalized record per post to the run's dataset. Every record carries the post id and fullname, title, author and profile URL, subreddit, outbound URL and permalink, domain, the full self text (for text posts), the raw content HTML, thumbnail and any Reddit-hosted media or gallery image URLs, whether the post is a self post or a video, and creation and edit timestamps.

Optional paid AI add-ons enrich each post: sentiment with a confidence score, a one to two sentence summary, and topic tags with a broad category. A separate top-comments add-on pulls the leading comments (author and text) for each post. Each add-on is off by default, charged only when it returns usable output, and disabled for free Apify plans.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 10 hot posts from r/technology with full text.

{
"maxPosts": 10,
"subreddits": ["technology"],
"sort": "hot"
}

Add more subreddits, a searchQuery, exact postUrls, or startUrls. Use sort and timeFilter to control the feed, and turn on the AI add-ons (withSentiment, withSummary, withTopics, withTopComments) on a paid plan. All fields are optional.

Input reference

FieldTypeRequiredDefaultDescription
subredditsstring[]no["technology"]Subreddit names to scrape, without the r/ prefix, for example technology, worldnews.
searchQuerystringno(empty)Search terms to query across Reddit. When a single subreddit is provided, the search is restricted to it.
postUrlsstring[]no[]Exact Reddit post URLs to fetch directly.
startUrlsstring[]no[]Any mix of subreddit, post, user or search URLs. Each is auto-detected and scraped for posts.
maxPostsintegerno10Maximum number of posts to collect across all sources. maxItems is accepted as an alias.
withDetailsbooleannotrueInclude the full self text, content HTML and media/gallery URLs on every record. These come with the base result at no extra charge.
sortenumnohotSort order for feeds and search: hot, new, top, rising, controversial.
timeFilterenumnodayTime window for top, controversial and search: hour, day, week, month, year, all.
withSentimentbooleannofalsePaid add-on. Classify each post's sentiment (positive / negative / neutral) with a confidence score. Paid plans only.
withSummarybooleannofalsePaid add-on. Generate a 1 to 2 sentence summary of each post. Paid plans only.
withTopicsbooleannofalsePaid add-on. Extract topic tags and a broad category for each post. Paid plans only.
withTopCommentsbooleannofalsePaid add-on. Capture the top few comments (author and text) for each post. Paid plans only.

You can combine subreddits, searchQuery, postUrls and startUrls in a single run.

Output reference

One dataset item per post. Types: string, boolean, string[], object[], or null when the source value is absent or the field is not exposed by Reddit's public feed.

FieldTypeDescription
recordTypestringAlways post.
thumbnailstringPost thumbnail image URL, or null.
titlestringPost title.
urlstringThe outbound link for link posts, or the permalink for self posts.
idstringReddit post id (unique per post).
fullnamestringReddit fullname, for example t3_1w7dpo9.
selftextstringFull self/text body for text posts, or null for link posts.
contentHtmlstringRaw post content HTML as served by Reddit's feed.
subredditstringSubreddit name.
subredditPrefixedstringSubreddit with the r/ prefix.
authorstringAuthor username, or null if deleted.
authorUristringAuthor profile URL.
permalinkstringPermalink to the post.
domainstringDomain the post links to (self.<subreddit> for text posts).
isSelfbooleantrue for text/self posts.
isVideobooleantrue for Reddit-hosted or known video posts, else null.
mediaUrlsstring[]Reddit-hosted media (image/video) URLs found in the post, or null.
galleryImageUrlsstring[]Gallery image URLs when the post is a gallery, or null.
editedbooleantrue when the post was edited after posting.
editedAtstringEdit timestamp (ISO 8601), or null.
createdAtstringPost creation timestamp (ISO 8601).
updatedAtstringFeed last-updated timestamp (ISO 8601).
observedAtstringWhen the record was collected (ISO 8601).
transportstringThe data channel used (rss).
score, upvoteRatio, numComments, numCrossposts, totalAwardsnullEngagement counters. Not exposed by Reddit's public feed, returned as null (see the honest note above).
authorFullname, authorFlairText, linkFlairTextnullNot exposed by Reddit's public feed, returned as null.
isNsfw, isSpoiler, isOriginalContent, isPinned, isLocked, isArchivednullModeration flags. Not exposed by Reddit's public feed, returned as null.
aiSentimentstringAdd-on: positive, negative, or neutral. Present only with withSentiment.
aiSentimentScorenumberAdd-on: sentiment confidence score (-1 to 1). Present only with withSentiment.
aiSummarystringAdd-on: 1 to 2 sentence summary. Present only with withSummary.
aiTopicsstring[]Add-on: topic/keyword tags. Present only with withTopics.
aiCategorystringAdd-on: broad category. Present only with withTopics.
topCommentsobject[]Add-on: top comments (author, text). Present only with withTopComments.
errorstringnull on success. On a failed source, a single item with a populated error field is written instead.

How this compares

scrapers.lat Reddit Posts ScraperBrowser-based Reddit scrapers (for example trudax/reddit-scraper)
Reddit API key or loginNot requiredOften required or uses a headless login
Subreddit feedsYesYes
Search across RedditYes (type=link posts)Yes
Post URLs and start URLsYes (subreddit, post, user, search)Yes
User postsYes (via user URL)Yes
Full self text and content HTMLYesYes
Media and gallery URLsYesYes
Live score, upvote ratio, comment count, awardsNo, returned as nullYes
NSFW, spoiler, pinned, locked flagsNo, returned as nullYes
AI sentiment, summary, topicsYes, opt-inUsually no
Top commentsYes, opt-inYes
Output formatsJSON, CSV, ExcelJSON, CSV, Excel

Honest concession: because this actor is HTTP-only and never logs in, it cannot read Reddit's live vote and comment counters or moderation flags, so those fields are null. Browser-based scrapers that log in do return them, at the cost of a heavier, slower and login-dependent run. If your work is content, text, links, timestamps and AI enrichment, this actor is faster, lighter and needs no API key. If you must have live vote and comment counts, use a login-based scraper.

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-posts-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"subreddits":["technology"],"maxPosts":25,"sort":"hot"}'

Start a run asynchronously:

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

Apify CLI:

apify call scrapers_lat/reddit-posts-scraper \
--input '{"subreddits":["worldnews"],"withSentiment":true,"withTopics":true,"maxPosts":50}'

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=500&limit=500"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets.

Billing and limits

  • Pay per result. You are charged per post record returned (result event). See the pricing tab for the current per-result price.
  • AI and comment add-ons are extra and opt-in. withSentiment, withSummary, withTopics and withTopComments are billed per enriched post, charged only when they return usable output, and available on paid Apify plans only.
  • 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.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 posts per run and cannot use the AI add-ons. Upgrade for a higher maxPosts and enrichments.

FAQ and troubleshooting

Why are score, numComments and the flags null? Reddit no longer exposes live vote and comment counters or moderation flags through the public channel this actor reads, so we return null rather than fake them. For live counts, use a browser-based, login-dependent Reddit scraper.

A run returned 0 records. Why? The subreddit name or search query may have matched nothing, or the time window was too narrow. Check the names, widen timeFilter, or change sort. Zero-result runs are not charged.

How do I get the full post text? It is included by default. For text posts, selftext holds the full body and contentHtml holds the raw HTML. Link posts have no self text (selftext is null) and instead carry the outbound url and domain.

How do I search across Reddit instead of a subreddit? Set searchQuery. Provide a single subreddit alongside it to restrict the search to that community, or leave subreddits empty to search all of Reddit.

Can I scrape a specific user's posts or a single post? Yes. Put the post URL in postUrls, or paste a user URL (/user/<name>) or any subreddit, post or search URL into startUrls.

What do the AI add-ons add? withSentiment adds aiSentiment and aiSentimentScore; withSummary adds aiSummary; withTopics adds aiTopics and aiCategory; withTopComments adds topComments. Each is billed per enriched post, charged only when it returns output, and paid plans only.

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.com.

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 post data.