Subreddit Posts Scraper
Pricing
from $3.00 / 1,000 results
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 $3.00 / 1,000 results
Rating
5.0
(1)
Developer
AgentX
Maintained by CommunityActor stats
3
Bookmarked
20
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Subreddit Posts Scraper is a subreddit posts scraper that exports one community's new, top, hot, rising, or controversial listing as 53-field post records with optional nested comments.
- Five listing modes support current community monitoring and bounded comparative snapshots.
- 53 top-level fields cover stable IDs, text, engagement, flags, media, polls, galleries, crossposts, duplicates, and provenance.
- Optional nested comments preserve thread context without forcing comment work on every listing run.
- Source-faithful media uses KVS URLs after successful saves and keeps public source URLs when saves fail.
The smallest FREE-tier run is one start plus one returned post with comments disabled: $0.01400.
Why Choose Subreddit Posts Scraper
One community, explicit listing semantics. Choose new, top, hot, rising, or controversial instead of mixing unrelated discovery modes.
Stable joins and rare post types. Community IDs, author IDs, crosspost lineage, polls, galleries, videos, and duplicate links are represented in the same row contract.
Comments remain deliberate. Leave max_comments at zero for fast post-only snapshots, then raise it only for posts whose discussion matters.
No Reddit client credentials. The Actor reads Reddit's public signed-out surface; users do not provide an API key or app registration.
Quick Start Guide
Use the minimum post-only workload for recurring liveness checks.
{"community": "programming","sort_by": "new","max_posts": 1,"max_comments": 0}
- Enter one subreddit as a name,
r/namepath, or standard community URL. - Choose the listing mode that matches the question.
- Keep comments at zero for the first run.
- Read the default Dataset and follow original URLs when context matters.
This prefill returns one post in a few seconds. Source contents and duration can change.
Input Parameters
All four fields are required, and the requested numeric values are preserved without artificial schema ceilings.
| Field | Type | Limits | Prefill | Meaning |
|---|---|---|---|---|
community | string | Valid Reddit community name/path/URL | programming | Community whose listing is read. |
sort_by | enum | new, top, hot, rising, controversial | new | Reddit listing mode. |
max_posts | integer | Minimum 1; no schema maximum | 1 | Maximum posts requested. |
max_comments | integer | Minimum 0; no schema maximum | 0 | Maximum visible comments requested per post; zero skips comments. |
Reddit commonly stops one community listing near a thousand entries regardless of a larger request. This is source coverage, not an input validation cap or a promise. Query strings, fragments, user URLs, post URLs, malformed hosts, unsupported sort names, booleans, and values below the lower bounds are rejected.
Output Data Schema
Each Dataset row is one source post with 53 documented top-level fields. Optional values can be absent when Reddit does not expose them for that post type.
| Group | Fields |
|---|---|
| Community | subreddit, subreddit_id, subreddit_type, subreddit_subscribers |
| Post and author | id, author, author_id, author_flair, created, edited, url, flair_text, title, body |
| Engagement and lineage | score, score_hidden, upvote_ratio, comment_count, crossposts, crosspost_id, crosspost_url, gilded, categories |
| Media | media_type, domain, thumbnail, images, gallery, media_url, video_url, video_duration, poll, is_self, is_video, is_gallery |
| State and distribution | archived, locked, stickied, pinned, over_18, spoiler, original, advertising, indexable, crosspostable, removed_by, distinguished, no_follow, ad_whitelist |
| Related records | duplicates, comments |
| Provenance | processor, processed_at |
{"subreddit": "programming","id": "example-post","author": "example_author","url": "https://www.reddit.com/r/programming/comments/example-post/","title": "A practical guide to structured logging","score": 412,"comment_count": 87,"images": [],"gallery": null,"poll": null,"duplicates": [],"comments": []}
An empty comment array means comments were disabled or none were returned. comments: null means comments could not be read or billed. Vote values are source-reported and can be fuzzed.
Integration Examples
The HTTP, Python, JavaScript, Make.com, n8n, and MCP examples all call agentx/subreddit-posts-scraper with the same one-post scenario. Keep tokens in secrets and bound charges.
Actor ID
ipw4MHKL6ZBj9pYeF
Also addressable by name as agentx/subreddit-posts-scraper — both forms work in the API, the SDKs, Make.com, and n8n.
HTTP
curl -X POST "https://api.apify.com/v2/acts/agentx~subreddit-posts-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \--data '{"community":"programming","sort_by":"new","max_posts":1,"max_comments":0}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("agentx/subreddit-posts-scraper").call(run_input={"community": "programming","sort_by": "new","max_posts": 1,"max_comments": 0,},max_total_charge_usd=0.014,)rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
JavaScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("agentx/subreddit-posts-scraper").call({community: "programming",sort_by: "new",max_posts: 1,max_comments: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => console.log(item.title, item.score));
Make.com
- Add the module Run an Actor.
- Turn Map on, to the right of the Actor field.
- Paste the Actor ID
ipw4MHKL6ZBj9pYeFinto the Actor field. - Click ⟳ Refresh to the left of Map.
- Edit Input JSON with
community,sort_by,max_posts, andmax_comments. - Set Run synchronously to Yes.
- Add Get Dataset Items and select defaultDatasetId.
n8n
- Add Run an Actor and get dataset from the Apify node.
- Set Actor → By ID and paste
ipw4MHKL6ZBj9pYeF. - Edit Input JSON with
community,sort_by,max_posts, andmax_comments.
For MCP, follow the Apify MCP guide, load the current schema, and send the same four fields.
Pricing
The accepted pricing record switches the primary post event from Post to Result at 2026-08-17 12:15:06.759 UTC. Before that timestamp, use the live pricing page for the active Post event and price.
| Scheduled event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|
| Actor Start, minimum | $0.01000 | $0.01000 | $0.01000 | $0.01000 |
| Result, per post | $0.00400 | $0.00360 | $0.00320 | $0.00300 |
| Comment, per retained comment | $0.00100 | $0.00090 | $0.00080 | $0.00075 |
After the scheduled cutover, one returned FREE-tier post with comments disabled costs $0.01400 at the minimum start charge. Empty or failed runs can still incur Actor Start. Confirm the live pricing page before production use.
Use Cases
- Schedule
newsnapshots for public community monitoring. - Compare source-reported engagement across bounded
top,hot, orrisingsamples. - Collect a small
controversialset with comments for qualitative review. - Inventory linked domains, images, galleries, polls, and hosted videos.
- Trace source crossposts and duplicate submissions through stable IDs and URLs.
The output supports research and operations; it does not verify authors, claims, influence, consensus, demographics, or intent.
Alternatives
Manual browsing works for a few posts but creates no stable Dataset or repeatable export. A search Actor is better when discovery starts from a keyword across communities. A profile Actor is better when the input is a known username. A community profile Actor is better for rules, settings, and subscriber metrics rather than post rows.
Use Reddit Viral Scraper for query discovery, Reddit Profile Scraper for one username, or SubReddit Info Scraper for community metadata.
Limits and Troubleshooting
- Fewer posts than requested: Reddit listing coverage, community state, deletions, access, charging, and runtime can reduce output.
- No posts: retry the minimal
newinput and confirm the community remains public and available. - Large comment workload: three concurrent 2,000-comment trees need the full 512 MiB the Actor runs at; lower memory cannot finish them.
- Missing optional field: preserve absence rather than replacing it with a guess.
- Media URL remains public: the save failed, so the source URL was retained instead of deleted.
- Comments are null: source reading or billing failed; this differs from a confirmed empty array.
- Charge cap reached: inspect current event prices before increasing
maxTotalChargeUsd.
Trust and Reliability
Twenty communities across all five listing modes produced 1,700 publishable rows and 1,700 unique IDs. The broad sample reproduced 51 of 53 schema fields with zero runtime-only fields; targeted current posts reproduced video, poll, gallery, and crosspost structures.
Three posts returned 6,000 of 6,000 requested comments at 512 MiB. A 20-exit sweep produced four exits that completed all five business paths, while blocked exits were classified rather than parsed as data. Nineteen of 20 sampled media URLs downloaded successfully, and the failure path retained every original source URL.
Legal and Compliance
Use this Actor only for lawful processing of public information. Respect Reddit's terms, privacy expectations, intellectual-property rights, and applicable data-protection rules. Do not use the output for spam, harassment, deanonymization, sensitive profiling, access-control evasion, or decisions requiring verified identity. Minimize retention and secure exports.
This independent Actor is not affiliated with, endorsed by, or sponsored by Reddit, Inc. Reddit and the Reddit logo are trademarks of Reddit, Inc.
Frequently Asked Questions
How do I scrape subreddit posts with comments?
Set the community and listing mode, choose a small max_posts, and raise max_comments above zero. Each post retains its nested visible comments when source reading and billing succeed.
Can I request more than 1,000 posts?
Yes. The input has no schema maximum, but Reddit normally stops one community listing near a thousand entries, so a larger request usually cannot create more source rows.
Is max_comments required?
Yes. Set it to zero for posts only; use a positive integer for bounded comment collection.
Are hot, top, and controversial complete rankings?
No. They are changeable Reddit listings, not exhaustive historical rankings or a configurable time-window query.
Why can comments be null instead of an empty array?
Null means the comments could not be read or charged. An empty array means comment collection was disabled or the source returned none.
How do I do a subreddit hot new top posts export?
Pick the listing in sort_by — hot, new, top, rising, or controversial — and run once per mode. Each listing is its own ordering from Reddit, so exporting all of them means separate runs rather than one merged feed.
Do I need a Reddit API key?
No. Provide the four Actor inputs; do not send Reddit client credentials.
Related AgentX Actors
AgentX publishes 77 Actors — the three closest Reddit workflows first, then the full catalog by category.
Closest to this Actor:
- Reddit Viral Scraper — discover posts from a query across communities.
- SubReddit Info Scraper — collect community rules, settings, and source metrics.
- Subreddit Members Scraper — discover activity-derived public contributors.
Business and Market Intelligence
- Google Keyword Trends — Google Trends keyword interest, compared five at a time
- Google Trends Scraper — Google Trends trending searches
- Google Maps Store Scraper — Google Maps business listings
- LinkedIn Company Lookup — LinkedIn company records
- LinkedIn Profile Lookup — LinkedIn profile records
- Weather Forecast API — forecast and historical weather data
Jobs and Hiring
- All Jobs Scraper — multi-platform job listings
- Bayt Jobs Scraper — Bayt job listings
- Glassdoor Jobs Scraper — Glassdoor job listings
- Indeed Jobs Scraper — Indeed job listings
- JobStreet Company Profile — JobStreet employer records
- Jooble Jobs Scraper — Jooble job listings
- LinkedIn Jobs Scraper — LinkedIn job listings
- Naukri Jobs Scraper — Naukri job listings
- Talent Jobs Scraper — Talent.com job listings
- ZipRecruiter Jobs Scraper — ZipRecruiter job listings
Social Media
- Instagram Creator Scraper — Instagram creator profiles
- Instagram Reels Scraper — Instagram Reels metadata
- Instagram Trending Scraper — Instagram trending content
- Medium Scraper — Medium articles
- Medium Profile Scraper — Medium author profiles
- Reddit Profile Scraper — Reddit user profiles
- Reddit Viral Scraper — Reddit viral posts
- SubReddit Info Scraper — subreddit metadata
- Subreddit Members Scraper — subreddit member lists
- Telegram Chat Scraper — Telegram chat messages
- Telegram Info Scraper — Telegram channel metadata
- Telegram Member Adder — Telegram group membership management
- Telegram Member Scraper — Telegram group members
- Telegram Private Group Scraper — private Telegram group data
- TikTok Creator API — TikTok creator profiles
- TikTok User Lookup — TikTok account records
- X Twitter Community API — X community data
- X Twitter Profile Lookup — X profile records
- YouTube Creator Email Scraper — YouTube creator contact data
Video, Transcripts and Downloads
- All Video Scraper — multi-platform video metadata
- Video Transcript — multi-platform transcripts
- Video Captions Downloader — caption files
- Video to Social Post — video repurposed into social copy
- YouTube Transcript — YouTube transcripts
- TikTok Transcript — TikTok transcripts
- X Twitter Transcript — X video transcripts
- Facebook Transcript — Facebook video transcripts
- Bilibili Transcript — Bilibili transcripts
- Dailymotion Transcript — Dailymotion transcripts
- Rutube Transcript — Rutube transcripts
- Loom Transcript — Loom transcripts
- Wistia Transcript — Wistia transcripts
- Instagram Reels Downloader — Reels downloads
- Kick Clip Downloader — Kick clip downloads
- Linkedin Video Downloader — LinkedIn video downloads
- Pinterest Video Downloader — Pinterest video downloads
- Reddit Video Downloader — Reddit video downloads
- Snapchat Video Downloader — Snapchat video downloads
- TED Talk Downloader — TED talk downloads
- TikTok Live Downloader — TikTok live downloads
- Twitch VOD Downloader — Twitch VOD downloads
- Zoom Recording Downloader — Zoom recording downloads
E-Commerce and Retail
- All Shopping Scraper — multi-platform product data
- AliExpress Product Scraper — AliExpress products
- Amazon Storefront Scraper — Amazon Brand Store pages
- Bol Product Scraper — Bol.com products
- eBay Seller Leads API — eBay seller records
- Hepsiburada Product Scraper — Hepsiburada products
- Kakaku Product Scraper — Kakaku.com products
- Rakuten Product Scraper — Rakuten products
Classifieds and Automotive
- All Vehicle Scraper — multi-platform vehicle listings
- AutoTrader Vehicle Search — AutoTrader US listings
- AutoTrader UK Vehicle Search — AutoTrader UK listings
Real Estate
- All Property Scraper — multi-platform property listings
- Homes Property Scraper — Homes.com listings
- MagicBricks Property Scraper — MagicBricks listings
- NoBroker Property Scraper — NoBroker listings
- Property24 Property Scraper — Property24 listings
- Realtor Property Scraper — Realtor.com listings
- Zillow Property Scraper — Zillow listings
Support and Community
Ask product questions in the AgentX community on Telegram. For a reproducible issue, include the run ID, exact input, expected behavior, and observed status, with tokens and personal information removed.
AgentX is an Arcyton brand — arcyton.com.
Last Updated: August 15, 2026