Reddit Subreddit Posts Scraper
Pricing
from $2.99 / 1,000 subreddit posts
Reddit Subreddit Posts Scraper
Scrape posts from multiple Reddit subreddits in a single run with full metadata, images, videos, awards, and optional comments.
Pricing
from $2.99 / 1,000 subreddit posts
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Collect normalized public posts from one or more Reddit communities in a single bounded run. Choose a listing order, cap results per community, and optionally enrich each post with public detail and comment data.
What this Actor does
- Reads public subreddit listings through Reddit's public web representations.
- Normalizes post identity, content, community, engagement, media, and provenance fields.
- Supports up to 50 communities and 1,000 saved posts per community.
- Optionally opens each public post for richer metadata and up to 20 top-level comments.
- Stops at login, CAPTCHA, WAF, geofence, device, or rate-limit controls; it does not bypass them.
Input
| Field | Type | Default | Description |
|---|---|---|---|
subreddits | string array | — | Community names without r/. Use this or subreddit. |
subreddit | string | — | Compatibility alias for a single community. |
sortBy | string | new | new, hot, top, rising, or controversial. |
topTime | string | week | Time window for top or controversial. |
maxItemsPerSubreddit | integer | 50 | Saved-post cap for each community, from 1 to 1,000. |
deepScraping | boolean | true | Request each public post representation for added details. |
includeComments | boolean | false | Include bounded public comments; automatically enables detail requests. |
headless | boolean | true | Run Chromium without a visible window. |
proxyConfiguration | object | Apify Proxy | Standard Apify proxy configuration. A proxy does not bypass access controls. |
Compatibility aliases sort, maxItems, and maxPostsPerSubreddit remain accepted. Unknown fields and invalid values fail before crawling.
Example input
{"subreddits": ["javascript", "webdev"],"sortBy": "new","maxItemsPerSubreddit": 10,"deepScraping": false,"includeComments": false,"proxyConfiguration": { "useApifyProxy": true }}
Dataset output
Every dataset item is a real post record with recordType: "subreddit_post". Core fields include position, postId, postFullname, postTitle, permalink, subreddit, sourceListingUrl, and scrapedAt. postId is bare and postFullname is the corresponding t3_<postId> value. Optional fields cover author, scores, timestamps, body text, flair, media, awards, and comments.
{"recordType": "subreddit_post","position": 1,"postId": "example123","postFullname": "t3_example123","postTitle": "Example discussion post","permalink": "https://www.reddit.com/r/example/comments/example123/example_post/","subreddit": "example","score": 42,"numComments": 8,"sourceListingUrl": "https://www.reddit.com/r/example/new/?sort=new&t=week","extractionMethod": "reddit-subreddit-rendered-json-or-dom","scrapedAt": "2025-01-02T03:04:05.000Z"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
The default key-value store also contains OUTPUT, a run summary with requested scope, settings, records stored, failures, blocked requests, and an explicit dataAvailable flag. If no usable posts are available, the default dataset contains one four-field diagnostic record; diagnostics are never represented as successful post rows.
Limits and cost control
The Actor uses one listing request at a time, no blocked-request retries, bounded pagination, and at most three concurrent detail tabs. Disable deepScraping when listing fields are sufficient. Usage may include browser compute, proxy traffic, and the configured per-dataset-item event price.
Public-data and responsible use
This Actor reads only publicly available Reddit web data. It does not log in, alter browser identity, defeat challenges, use protected sessions, or evade access controls. Availability varies by Reddit, network, region, and proxy tier. Follow Reddit's terms and applicable privacy and data-protection requirements.
Local development
npm testapify validate-schema .actor/input_schema.jsonapify run --purge
The dataset validator rejects incomplete or malformed post rows and treats an empty dataset as a failed extraction check.