Reddit Scraper V1 β Subreddit Feeds, Posts, Comments (4)
Pricing
from $1.99 / 1,000 results
Reddit Scraper V1 β Subreddit Feeds, Posts, Comments (4)
Scrape Reddit posts and comments by URL or subreddit name. No Reddit account or OAuth required.
Pricing
from $1.99 / 1,000 results
Rating
5.0
(4)
Developer
Actor stats
3
Bookmarked
14
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Reddit Scraper β Subreddit Feeds, Posts, Comments
π Endpoints
π Auth
π Proxy
π Pricing
π Cap
Scrape Reddit posts and comments by URL or subreddit name. Four self-contained endpoints β pull a subreddit's feed, a single post's full payload, a post's full comment tree, or a single comment's metadata. No Reddit account or proxy required.
Pick the endpoint, fill the matching section, hit Start.
Endpoints at a glance
| # | Endpoint | Records returned | Best for |
|---|---|---|---|
| 1 | Scrape Posts | up to 1000 posts (subreddit feed) | niche monitoring, daily snapshots, RSS-style feeds |
| 2 | Post Detail | 1 record (one post) | refreshing a single post, importing a thread |
| 3 | Scrape Comments | up to 5000 (or uncapped) | sentiment, archives, megathread research |
| 4 | Comment Detail | 1 record (one comment) | quoting, refreshing one comment |
Every endpoint accepts URLs, prefixed fullnames, or raw IDs:
| Entity | Examples |
|---|---|
| post | https://www.reddit.com/r/Wordpress/comments/1s4a4j6/ Β· t3_1s4a4j6 Β· 1s4a4j6 |
| comment | https://www.reddit.com/r/.../comment/lwbnv0t/ Β· t1_lwbnv0t Β· lwbnv0t |
| subreddit | AskReddit Β· r/AskReddit Β· /r/AskReddit Β· full subreddit URL |
What you can fetch
1. Scrape Posts β subreddit feed
Pulls a subreddit's post feed and streams pages so records appear in the dataset within seconds. Pages are fetched in 100s and stitched together up to your limit.
Inputs
| Field | Type | Default | Notes |
|---|---|---|---|
subreddit | string | AskReddit | Subreddit name (without r/). |
sort | enum | hot | best / hot / new / top / rising / controversial. |
time | enum | (none) | Only used when sort is top / controversial. hour β¦ all. |
limit | int | 25 | 1 β 1000. |
Returns per post β Reddit ID, fullname, title, body / selftext, author, subreddit, score, ups / downs / upvote ratio, comment count, crosspost count, created + edited timestamps, permalink, external URL, domain, post-type flags (is_self, is_video, over_18, spoiler, locked, stickied, pinned, archived), distinguished status, removal category, link & author flair, thumbnail, media (images / video / gallery), awards.
Use it when β niche monitoring, daily community snapshots, content syndication (r/programming hot β RSS), bulk research, competitor watching.
Example I/O
Input (Apify form):
{"endpoint":"subreddit_posts","subreddit":"Wordpress","sort":"hot","limit":3}
Output (one dataset record per post; first record shown, truncated):
{"endpoint":"subreddit_posts","id":"1r80vkz","name":"t3_1r80vkz","title":"Monthly AMA - Suggestions wanted!","author":"RealKenshino","author_fullname":"t2_6wkumqdb","subreddit":"Wordpress","subreddit_name_prefixed":"r/Wordpress","subreddit_id":"t5_2qhjq","score":29,"ups":29,"downs":0,"upvote_ratio":1.0,"num_comments":12,"num_crossposts":0,"created_utc":1771415293.0,"edited":false,"permalink":"https://reddit.com/r/Wordpress/comments/1r80vkz/monthly_ama_suggestions_wanted/","url":"https://www.reddit.com/r/Wordpress/comments/1r80vkz/monthly_ama_suggestions_wanted/","domain":"self.Wordpress","is_self":true,"is_video":false,"over_18":false,"locked":false,"stickied":true,"archived":false,"distinguished":"moderator","author_flair_text":"WordPress.org Volunteer","selftext":"We're launching a monthly AMA series featuring people from across the WordPress ecosystem...","thumbnail":"self","total_awards_received":0,"...":"..."}
2. Post Detail
Full payload of a single post.
Inputs
| Field | Type | Notes |
|---|---|---|
post | string | URL, t3_ fullname, or raw ID. |
Returns β same rich post record as Scrape Posts.
Use it when β single-post deep dive, refreshing one record after an edit, importing a single thread.
Example I/O
Input (Apify form):
{"endpoint":"post_detail","post_detail_url":"https://www.reddit.com/r/Wordpress/comments/1s4a4j6/"}
Output (one dataset record; post holds the full Reddit payload, truncated):
{"endpoint":"post_detail","post":{"id":"1s4a4j6","name":"t3_1s4a4j6","title":"Serious question: which group smokes more crack?","author":"evanmac42","author_fullname":"t2_ebufp","subreddit":"Wordpress","subreddit_name_prefixed":"r/Wordpress","subreddit_id":"t5_2qhjq","score":87,"ups":87,"upvote_ratio":0.92,"num_comments":41,"created_utc":1774538392.0,"permalink":"/r/Wordpress/comments/1s4a4j6/serious_question_which_group_smokes_more_crack/","url":"https://www.reddit.com/r/Wordpress/comments/1s4a4j6/serious_question_which_group_smokes_more_crack/","domain":"self.Wordpress","is_self":true,"is_video":false,"over_18":false,"locked":false,"stickied":false,"selftext":"MS - The new features team at Microsoft\n\nOR\n\nWPBE - the wordpress team that creates new features...","link_flair_text":null,"total_awards_received":0,"...":"..."}}
3. Scrape Comments β post comment tree
Comments under a single post, with control over how the tree is traversed.
Inputs
| Field | Type | Default | Notes |
|---|---|---|---|
post | string | (required) | URL, t3_, or raw ID. |
sort | enum | top | best / top / new / controversial / old / qa. |
mode | enum | custom | custom (capped), top_level (top-level only), all (uncapped). |
count | int | 100 | 1 β 5000. Used by custom mode. |
Returns per comment β ID, fullname, parent post / parent comment IDs, author, body (markdown + HTML), score / ups / downs / controversiality, created + edited timestamps, permalink, OP flag (is_submitter), depth, stickied / distinguished / locked / archived / score-hidden flags, subreddit, awards.
Use it when β sentiment analysis, comment archives, support-ticket mining, debate / megathread research, training data.
Example I/O
Input (Apify form):
{"endpoint":"post_comments","comments_post_url":"https://www.reddit.com/r/Wordpress/comments/1s4a4j6/","comments_num":3,"comment_sort":"top","comment_mode":"custom"}
Output (one dataset record per comment; first record shown, truncated):
{"endpoint":"post_comments","id":"ocls9cs","name":"t1_ocls9cs","parent_id":"t3_1s4a4j6","link_id":"t3_1s4a4j6","author":"evanmac42","author_fullname":"t2_ebufp","body":"Microsoft experiments on users.\n\nWordPress experiments on developers.\n\nPick your poison.","body_html":"<div class=\"md\"><p>Microsoft experiments on users.</p>\n\n<p>WordPress experiments on developers.</p>\n\n<p>Pick your poison.</p>\n</div>","score":46,"ups":46,"downs":0,"controversiality":0,"created_utc":1774541569.0,"edited":false,"permalink":"https://reddit.com/r/Wordpress/comments/1s4a4j6/serious_question_which_group_smokes_more_crack/ocls9cs/","is_submitter":false,"depth":0,"stickied":false,"distinguished":null,"score_hidden":false,"locked":false,"archived":false,"gilded":0,"subreddit":"Wordpress","subreddit_name_prefixed":"r/Wordpress","subreddit_id":"t5_2qhjq","total_awards_received":0,"all_awardings":[],"...":"..."}
4. Comment Detail
Full payload of a single comment.
Inputs
| Field | Type | Notes |
|---|---|---|
comment | string | URL, t1_ fullname, or raw ID. |
Returns β same rich comment record as Scrape Comments.
Use it when β pulling a quoted comment, refreshing one record after edits, citation tooling.
Example I/O
Input (Apify form):
{"endpoint":"comment_detail","comment_url":"https://www.reddit.com/r/Wordpress/comments/1s4a4j6/comment/ocls9cs/"}
Output (one dataset record; comment holds the full Reddit payload, truncated):
{"endpoint":"comment_detail","comment":{"id":"ocls9cs","name":"t1_ocls9cs","parent_id":"t3_1s4a4j6","link_id":"t3_1s4a4j6","author":"evanmac42","author_fullname":"t2_ebufp","body":"Microsoft experiments on users.\n\nWordPress experiments on developers.\n\nPick your poison.","body_html":"<div class=\"md\"><p>Microsoft experiments on users.</p>\n\n<p>WordPress experiments on developers.</p>\n\n<p>Pick your poison.</p>\n</div>","score":46,"ups":46,"downs":0,"controversiality":0,"created_utc":1774541569.0,"edited":false,"permalink":"/r/Wordpress/comments/1s4a4j6/serious_question_which_group_smokes_more_crack/ocls9cs/","is_submitter":false,"depth":0,"stickied":false,"score_hidden":false,"locked":false,"archived":false,"subreddit":"Wordpress","subreddit_name_prefixed":"r/Wordpress","subreddit_id":"t5_2qhjq","total_awards_received":0,"...":"..."}}
How to run
- Pick an endpoint in the "What to fetch" dropdown.
- Open the matching section and fill its fields. Each section is independent β fields outside your chosen section are ignored.
- Click Start.
Default subreddit is AskReddit and default test post is the public WordPress post β the actor runs out of the box.
Output
Results are pushed to the actor's default dataset. View as a table or download as JSON / CSV / Excel / XML.
| Endpoint | Rows pushed |
|---|---|
| Scrape Posts | up to limit posts |
| Post Detail | 1 record |
| Scrape Comments | up to count (or uncapped if mode=all) |
| Comment Detail | 1 record |
Every record carries an endpoint field. Most useful columns (id, title, score, created, etc.) are placed first so the Table view is readable without scrolling.
Status & error reference
Run status (Apify-side, shown on the run page)
| Status | Apify message | Meaning | What to do |
|---|---|---|---|
| π Succeeded | "Actor succeeded with N results in the dataset" | Run finished. Some or zero records pushed. | Open the dataset to view results. |
| π Failed | "The Actor process failedβ¦" | Validation error or upstream Reddit fault. | Check the run log. You are NOT charged for failed runs. |
| π Timed out | "The Actor timed out. You can resurrect it with a longer timeout to continue where you left off." | Run exceeded its timeout. | Re-run with a smaller limit or fewer inputs. |
| π Aborted | "The Actor process was aborted. You can resurrect it to continue where you left off." | You stopped the run manually. | No charge for unpushed results. |
Common in-run conditions (visible in run log)
| Condition | Cause | Result |
|---|---|---|
| Empty result set | Subreddit empty / banned / private. | Run SUCCEEDED, 0 records, no charge. |
| Subreddit feed cap | Asked for more than ~1000 posts. | Run SUCCEEDED, capped at Reddit's pagination limit. |
| Removed post stub | Post was removed; metadata still partial. | Run SUCCEEDED, returns stub with removed_by_category. |
qa sort fallback | qa sort outside QA-mode subs. | Run SUCCEEDED, falls back to top. |
Validation error: post required | Missing post field on Detail / Comments. | Run FAILED immediately, no charge. |
Common edge cases
- Removed / deleted posts return whatever metadata Reddit still exposes β often a stub with
removed_by_category. - Private / quarantined subreddits return zero records.
- Subreddit feed cap β Reddit caps subreddit feed pagination at ~1000 unique posts. Higher
limitwon't return more. - Comments
allmode is uncapped β long threads (10k+ comments) hit Reddit's tree size limit before our cap. - Comment
qasort β only meaningful in QA-mode subreddits; falls back totopelsewhere. - NSFW content β fully supported; the
over_18flag tells you if a post is age-gated.
Why this actor is fast
- Speed β 1β3 seconds per call, end-to-end. Pure HTTP to Reddit's API. No browser to boot, no Playwright / Selenium / Puppeteer overhead. Competing browser-based scrapers typically take 15β60 seconds per call.
- Reliability β zero browser flakiness. No headless-Chromium crashes. No JS-render timeouts. No captcha pages. No surprise mid-run failures from a browser quirk.
- Footprint β under 100 MB RAM per run. Most browser-based scrapers need 1β4 GB. Built for reliability behind the scenes β just paste your inputs and run.
Pricing
Pay-per-result. You're only charged for records actually pushed to the dataset.
| Outcome | Charged? |
|---|---|
SUCCEEDED with results | Yes β per record pushed. |
SUCCEEDED with zero records | No. |
FAILED (validation / upstream) | No. |
ABORTED | Only for records already pushed before you stopped. |
See the actor's Pricing tab for the current per-result rate.
| Event | Trigger | Price (per 1,000) |
|---|---|---|
result | Each post / comment record pushed to the dataset | $1.99 |
A 1000-post Scrape Posts run = 1000 rows. A 250-comment Scrape Comments run = 250 rows. A Post Detail or Comment Detail lookup = 1 row.
Need a different shape of data?
- Reddit Bulk Scrape β paste up to 10000 IDs / names / URLs in a single run (posts, comments, subreddits, users)
- Reddit Search β keyword search across posts, subreddits, users
- Reddit Users β single-user lookups with profile + trophies + posts + comments
- Reddit Subreddits β subreddit info, browse, listings, autocomplete (12 ops)
- Reddit Posts β front-page feed, crosspost duplicates, pinned posts
- Reddit Posts & Feeds V2 β home feed + post state controls (auth)
Support and feedback
Found a bug, want a feature, or hit a Reddit error code we don't translate clearly? Open an issue via the actor's Apify Console feedback link, or reach out at the RedCrawler support channel.
Reddit Scraper β Subreddit Feeds, Posts, Comments is part of the RedCrawler family of Reddit actors. RedCrawler is independent β not affiliated with, endorsed by, or sponsored by Reddit, Inc. Use it within Reddit's API terms.
