Subreddit Posts Scraper avatar

Subreddit Posts Scraper

Pricing

from $7.20 / 1,000 posts

Go to Apify Store
Subreddit Posts Scraper

Subreddit Posts Scraper

Subreddit posts scraper for one community with new, top, hot, rising, or controversial sorting: 43 top-level fields per post covering engagement signals, flags, media, duplicate links, and optional nested comments. Inputs accept 1-1,000 posts and 0-2,000 comments per post. From $3 per 1,000 posts.

Pricing

from $7.20 / 1,000 posts

Rating

5.0

(1)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

3

Bookmarked

20

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Subreddit Posts Scraper is a subreddit posts scraper that exports one community's feed in new, top, hot, rising, or controversial order, writing each post as a row with 43 documented fields for text, links, engagement signals, flags, media, duplicates, and optional nested comments.

  • Four inputs: the community, the listing order, a post limit from 1 to 1,000, and an optional per-post comment limit from 0 to 2,000.
  • 43 documented fields per post, including duplicates and content_score.
  • Comments are opt-in and billed separately, so a listing sweep stays cheap until you ask for threads.

Run the one-post example · View API

One start plus one returned post with comments disabled is $0.01400 on the FREE tier. Begin at the minimum and set a maximum total charge, because large post or comment limits can be slow or exceed the run window.

What does Subreddit Posts Scraper do?

It reads one community's listing and normalizes it. Choose a subreddit and a sort order, and each post comes back as a single row containing the title and body, the author and their flair, the community's own context, the engagement values Reddit reports, media references, the state and moderation flags, the duplicate links that show where the post was crossposted, and — when you ask for them — the nested comment thread.

The listing order is the question you are asking: new for monitoring, top for best-performing material, hot and rising for attention, controversial for contested threads. Reddit stops a subreddit listing near a thousand entries regardless of a community's true post count, so 1,000 is a ceiling rather than a promise. It does not search across communities — that is Reddit Viral Scraper — nor profile the community or its members.

How do I use Subreddit Posts Scraper?

  1. Enter one community — a plain name, an r/name path, or a full community URL.
  2. Choose sort_by for the listing order you actually want to analyze.
  3. Set max_posts, and leave max_comments at 0 until you need threads.
  4. Start the run and read the dataset, or export JSON, CSV, or Excel.

The smallest useful input:

{
"community": "programming",
"sort_by": "new",
"max_posts": 1,
"max_comments": 0
}

Input

InputTypeRequiredEffect
communitystringYesThe subreddit to read. Accepts a plain name, an r/name path, or a reddit.com/r/name URL.
sort_bystringYesnew, top, hot, rising, or controversial. Reddit determines the available order and its coverage.
max_postsintegerYes1–1,000 posts. Reddit stops a subreddit listing near a thousand entries, so 1,000 is the ceiling.
max_commentsintegerYes0–2,000 comments per post. 0 disables comment collection entirely.

There is no time-window input: the Actor requests Reddit's selected listing mode without an additional time-range control. Both caps are maximum requests — listing coverage, community state, deleted content, and source errors can all return fewer records.

Output

One row per post, with 43 top-level fields in these groups:

GroupFields
Postid, title, body, link, created, edited, flair_text
Authorauthor, author_flair
Community contextsubreddit, subreddit_type, subreddit_subscribers
Engagementscore, upvote_ratio, comment_count, crossposts, content_score
Mediamedia_type, media_url, domain, thumbnail, images, video_url, video_duration, is_self, is_video, is_gallery
State flagsarchived, locked, stickied, pinned, over_18, spoiler, original, distinguished, advertising, indexable, crosspostable, no_follow
Spread and discussionduplicates, comments
Provenanceprocessor, processed_at

An abbreviated row for the programming example:

{
"subreddit": "programming",
"title": "A practical guide to structured logging",
"author": "example_user",
"created": "2026-08-01T18:04:12Z",
"score": 412,
"upvote_ratio": 0.96,
"comment_count": 87,
"over_18": false,
"stickied": false,
"duplicates": [],
"comments": [],
"processed_at": "2026-08-02T10:15:33Z"
}

Vote values are source-reported and Reddit may fuzz them, so do not treat score as exact upvote-minus-downvote arithmetic. Unavailable values stay null or empty rather than being replaced by defaults.

Use cases

  • Community monitoring — schedule a new run to capture everything a community posts, in a stable schema.
  • Best-performing content research — pull top and rank by score, upvote_ratio, and comment_count.
  • Discussion mining — enable comments on a small controversial set to study disagreement in a niche.
  • Media and link inventories — collect domain, images, and video_url to see what a community actually shares.
  • Crosspost tracing — read duplicates and crossposts to find where a community's material travels.

Choose another tool if you are starting from a topic rather than a community, or if you want the community's settings or the people in it — those are separate Actors below.

API and integrations

The stable Actor ID is ipw4MHKL6ZBj9pYeF, and its Store handle is agentx/subreddit-post-scraper. Start a run and read the dataset with any HTTP client:

curl -X POST "https://api.apify.com/v2/acts/ipw4MHKL6ZBj9pYeF/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"community":"programming","sort_by":"new","max_posts":1,"max_comments":0}'

The same input works from the Apify Console, the JavaScript and Python clients, Scheduler, and webhooks. For larger requests, start the run asynchronously, poll its status, and read the dataset after it succeeds — a client timeout does not mean the cloud run stopped. For agent clients, connect to Apify MCP, fetch the Actor's details to load the current input schema, then call agentx/subreddit-posts-scraper with a bounded charge and runtime.

Pricing

The Actor uses pay-per-event pricing. The configured start event is $0.01000. Result prices, one event per returned post, are FREE $0.00400, BRONZE $0.00360, SILVER $0.00320, and GOLD, PLATINUM, or DIAMOND $0.00300. Comment prices are FREE $0.00100, BRONZE $0.00090, SILVER $0.00080, and GOLD, PLATINUM, or DIAMOND $0.00075.

FREE-tier exampleCalculationConfigured total
One returned post, comments disabled$0.01000 + 1 × $0.00400$0.01400
One returned post with 10 comments$0.01000 + 1 × $0.00400 + 10 × $0.00100$0.02400

Charges depend on emitted posts and charged nested comments, subject to live platform behavior and account settings. Prices can change after publication; confirm the Actor Store page before budgeting. Input limits control requested source volume but are not a spending limit — use maxTotalChargeUsd for that.

Alternatives

Reading the community in a browser is free and works for a handful of posts; it does not give you 43 normalized fields, a stable schema across runs, or a scheduled export. Flat-rate Reddit scrapers charge one price per item whether it is a post or a comment, which becomes expensive on threads with hundreds of replies — the separate Result and Comment events here let a listing sweep stay cheap and a thread deep-dive stay deliberate. The counter-case is genuine: if your question begins with a topic rather than a community, Reddit Viral Scraper searches across all of Reddit and this Actor cannot; and if you only need one post's full thread, a single-post tool will cost less than a listing run.

Limits and troubleshooting

  • Fewer posts than max_posts — the value is a maximum. Listing coverage, access, community state, source errors, and runtime can all reduce the result.
  • Listing capped near 1,000 — Reddit stops a subreddit listing there regardless of the community's true post count.
  • No time-window control — none is exposed; use sort_by and filter by created downstream.
  • Comment array smaller than requested — deleted or unavailable comments, tree expansion, and runtime all limit it; very large values are impractical.
  • Vote fields look approximate — they are source-reported and may be fuzzed by Reddit.
  • Charge limit reached — compare start, result, and comment event counts against your limit before raising it.

Report a reproducible problem through AgentX support with the run ID, the exact four-field input, and the expected versus observed dataset count.

Frequently asked questions

How can I scrape subreddit posts?

You can scrape subreddit posts by entering a community name, one sort mode, and a post limit — no Reddit API key or app registration is required, and each post arrives as one 43-field dataset row.

Can I get a subreddit hot new top posts export in one run?

A subreddit hot new top posts export takes one run per listing: pick hot, new, or top as sort_by and export the dataset as JSON, CSV, or Excel; run the listings you need separately so each snapshot stays comparable.

Is max_comments required?

It is part of the input contract, but 0 disables comment collection — use that for posts-only runs.

Does max_posts guarantee that many records?

No. It is a maximum request. Reddit listing coverage, access, community state, source errors, charge limits, and runtime can reduce the result.

Are vote fields exact?

They are source-reported values. Reddit may fuzz vote information, so do not use them as audited evidence.

Does top include a configurable time window?

No time-window input is exposed. The Actor requests Reddit's selected listing mode without an additional time-range control.

Do I need a Reddit account or API key?

No. Provide the four inputs and start the run.

Enrich your data with AgentX

  • All Jobs Scraper — add hiring signals from 39 job platforms to community research.
  • All Shopping Scraper — bring product and pricing context to a community's shared links.
  • All Video Scraper — resolve the video links a community posts into metadata and files.

Support

Use public Reddit data proportionately: follow Reddit's terms, Apify's policies, applicable law, and your organization's privacy obligations, and require human review before consequential decisions. Do not use the output for harassment, spam, sensitive profiling, or automated decisions that require verified identity. Subreddit Posts Scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit, Inc.

Run the one-post example · View API