Reddit Subreddit Posts Scraper - Upvotes, Comments, Media avatar

Reddit Subreddit Posts Scraper - Upvotes, Comments, Media

Pricing

from $150.00 / 1,000 monitored subject re-checkeds

Go to Apify Store
Reddit Subreddit Posts Scraper - Upvotes, Comments, Media

Reddit Subreddit Posts Scraper - Upvotes, Comments, Media

Get the newest posts of any subreddit: title, text, link, author and flair, upvotes, upvote ratio, comment count, awards, images and video, plus optional comments and a spike signal for sudden activity. Export to JSON, CSV or Excel, or use the API. Our fee $10 per 1,000 posts + supplier.

Pricing

from $150.00 / 1,000 monitored subject re-checkeds

Rating

0.0

(0)

Developer

Khandji Omar

Khandji Omar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Reddit Subreddit Posts Scraper — Upvotes, Comments, Media

Get the newest posts of any subreddit: title, text, link, author and flair, upvotes, upvote ratio, comment count, awards, images and video, plus optional comments and a spike signal for sudden activity. Export to JSON, CSV or Excel, or use the API. No login or Reddit API key. with an optional discussion-velocity spike signal. Charged only on new posts, never per run.

In short: what you give, what you get, what it costs

You giveSubreddit names or links
We doRead the newest posts of each subreddit, and optionally their comments
You getOne row per post: title, text, link, author and flair, upvotes, upvote ratio, comments, awards, images and video, with a spike signal for sudden activity, plus sentiment, topic and our free lead score (asks for a tool, complains, talks price)
It costs$10 per 1,000 posts, $0.75 from 21 November 2026, no start fee. Optional scheduled monitoring: +$0.15 per check, $0.005 from 21 November (one-off runs never pay it). Apify also bills the supplier Actor fatihtahta/reddit-scraper-search-fast that this robot runs for you, at its own price (about $1.49 per 1,000 rows; if it is down, the backup automation-lab/reddit-scraper runs instead, about $1.15 per 1,000 posts + $0.003 per run). The first 10 results of every run are free of this robot's fee.
It does notNeed a Reddit API key, sign in, or post for you

A real result row is shown further down this page.

Posts and comments

Set includeComments to get Reddit comments alongside posts — the replies are usually where the opinion is, and a brand mention buried in a comment thread is invisible to a posts-only scraper.

Each post brings at most 2 comments, and a comment is billed like a post (this robot's fee and the supplier's). Off by default.

What we add on top of the supplier

  • A backup supplier. This robot reads Reddit through fatihtahta/reddit-scraper-search-fast. If it fails or returns nothing, automation-lab/reddit-scraper runs instead, in the same run. On 4 November 2026 the old supplier went down; this is why you no longer get an empty dataset when one supplier breaks. The served_by field says which one answered.
  • Lead signals, free. Every row gets buying_intent, complaint, mentions_price, is_question and a lead_score from 0 to 100, with lead_reasons listing the exact words that set each flag. Sort by lead_score to find the posts worth answering first.
  • Sentiment and topic on every post and comment (sentiment_label, content_category_label), sent by the supplier at no extra cost.
  • Only what is new. With monitorEnabled on, each scheduled run returns and bills only the posts you have not seen yet, and flags a sudden jump in activity.

Free tier — 10 results free on every run

The free results waive this Actor's own fee; the source Actor (fatihtahta/reddit-scraper-search-fast, or the backup automation-lab/reddit-scraper) still bills its own price for every row it returns.

The first 10 results of every run are free, on every run you ever make — not a one-off trial. Run it on your own subjects and see the real output before you are billed for a single result.

One guard: the free allowance never covers more than half of a run, so a run returning 6 results gets 3 free. That keeps the offer sustainable.

What it does

Run it once and get the full, current data as clean rows you can export to JSON, CSV or Excel, or pull through the API. Need only fresh data? Turn on monitorEnabled and schedule it: every later run returns only what is new or changed since the previous one, so you never re-download or re-pay for the same rows.

Compared with clearpath/reddit-subreddit-posts-scraper

Read on the Store on 2026-10-23 (Reddit Subreddit Posts Scraper | Fast Bulk Feed Export). Where it does better, this section says so.

  • Data source: this Actor runs fatihtahta/reddit-scraper-search-fast for you (automation-lab/reddit-scraper if it is down), then cleans every row and adds lead signals.
  • This Actor's fee is free on the first results of every run, and a hard cost cap (maxTotalChargeUsd) limits it.
  • Price: about $11.49 per 1,000 in total here ($10 for this Actor + $1.49 for fatihtahta/reddit-scraper-search-fast), $1.99 at clearpath/reddit-subreddit-posts-scraper.

Why this scraper

  1. Try before you pay. The first 10 results of every run are free, on every run.
  2. Pay only for data delivered. Failed sources and failed inputs are never billed.
  3. Hard cost cap. Set maxTotalChargeUsd and a run can never cost more than you allow.
  4. Only-new mode. With monitorEnabled on a schedule, you get just the new or changed rows, plus a spike signal when volume suddenly jumps.
  5. Clean, normalized rows with the same field names every run, plus a RUN_SUMMARY.json — ready for spreadsheets, databases, n8n/Make/Zapier and AI agents (MCP).

Example input

{
"subreddits": [
"SaaS",
"startups"
],
"maxTotalChargeUsd": 1.0
}

This returns the full current data right away. To receive only what is new on a schedule, add "monitorEnabled": true: the first monitored run stores a free baseline, later runs return only new or changed rows. Pin a monitorId to keep separate targets from sharing state.

Output

Each row is one subreddit post.

A real row from a test run on Apify (2026-11-04; long texts are cut and people's names hidden here, your dataset has them in full):

{
"record_id": "1xngj6e",
"query_id": "SaaS",
"title": "Just crossed the $100 MRR with my app 🥳🥳",
"url": "https://www.reddit.com/r/SaaS/comments/1xngj6e/just_crossed_the_100_mrr_with_my_app/",
"text": "After several months of continuous development of my app, Glance, listening to early raiders on w...",
"author": "(hidden)",
"published_at": "2026-11-04T05:56:40.000Z",
"score": 2,
"kind": "post",
"query": "https://www.reddit.com/r/SaaS/new/",
"sentiment_score": 9,
"sentiment_label": "positive",
"sentiment_confidence": 0.91,
"sentiment_score_normalized": 1.19,
"upvote_ratio": 1,
"num_comments": 0,
"permalink": "/r/SaaS/comments/1xngj6e/just_crossed_the_100_mrr_with_my_app/",
"old_reddit_url": "https://old.reddit.com/r/SaaS/comments/1xngj6e/just_crossed_the_100_mrr_with_my_app/",
"post_hint": "image",
"is_self": false,
"is_video": false,
"is_gallery": false,
"domain": "i.redd.it",
"url_overridden_by_dest": "https://i.redd.it/hndy7tbicjzh1.jpeg",
"subreddit_id": "t5_2qkq6",
"subreddit_name_prefixed": "r/SaaS",
"age_hours": 0.129,
"retrieved_at": "2026-11-04T06:04:24.530Z",
"has_media": true,
"gallery_count": 0,
"title_length": 42,
"body_length": 618,
"word_count": 118,
"score_per_hour": 15.5039,
"comments_per_hour": 0,
"is_deleted_or_removed": false,
"comment_to_score_ratio": 0,
"is_high_engagement": false,
"total_awards_received": 0,
"author_fullname": "(hidden)",
"served_by": "fatihtahta/reddit-scraper-search-fast",
"buying_intent": true,
"complaint": false,
"mentions_price": true,
"is_question": false,
"lead_score": 65,
"lead_reasons": [
"asks: best way",
"money: $1"
]
}
FieldWhat it holds
titlepost title (empty on a comment)
textpost or comment text
subredditsubreddit name
kindpost or comment
authorReddit username
published_atpost time (UTC)
scoreupvotes minus downvotes
num_commentsnumber of comments
sentiment_labelpositive, negative, neutral, mixed or uncertain (from the supplier)
lead_scoreadded by us: 0-100, how much this post is worth answering
buying_intentadded by us: the post asks for a tool, a recommendation or an alternative
urllink to the post or comment

Each row also keeps the other fields the source returns, so you get everything above and more. In the Output tab, the Overview table shows these columns, readable without any code; export them as CSV, Excel, JSON or HTML.

Every field

FieldWhat it holds
record_idstable ID of the row (used for new-only delivery)
query_idthe keyword, subreddit or user this row belongs to
titlepost title (empty on a comment)
urllink to the post or comment
textpost or comment text
authorReddit username
published_atpost time (UTC)
scoreupvotes minus downvotes
kindpost or comment
num_commentsnumber of comments
upvote_ratioshare of upvotes
sentiment_labelpositive, negative, neutral, mixed or uncertain (from the supplier)
sentiment_scoresentiment strength (from the supplier)
served_bywhich supplier answered (the backup runs only if the first is down or empty)
buying_intentadded by us: the post asks for a tool, a recommendation or an alternative
complaintadded by us: the post complains (broken, refund, cancel, frustrated...)
mentions_priceadded by us: the post talks about money or pricing
is_questionadded by us: the post is a question
lead_scoreadded by us: 0-100, how much this post is worth answering
lead_reasonsadded by us: the words that set each flag
score_per_hourupvotes per hour since posting
comments_per_hourcomments per hour since posting
age_hourshours since posting
is_high_engagementtrue when the post is getting unusual attention
queryquery
sentiment_confidencesentiment confidence
sentiment_score_normalizedsentiment score normalized
permalinkpermalink
old_reddit_urlold reddit url
post_hintpost hint
over_18over 18
is_selfis self
is_videois video
is_galleryis gallery
domaindomain
url_overridden_by_desturl overridden by dest
subreddit_idsubreddit id
subreddit_name_prefixedsubreddit name prefixed
retrieved_atretrieved at
has_mediahas media
gallery_countgallery count
title_lengthtitle length
body_lengthbody length
word_countword count
is_deleted_or_removedis deleted or removed
comment_to_score_ratiocomment to score ratio
total_awards_receivedtotal awards received
author_fullnameauthor fullname
media_typemedia type
engagement_totalengagement total

How you're charged

  • Source Actor charge: this Actor runs fatihtahta/reddit-scraper-search-fast inside your run, and Apify bills that run to your account at its own price (about $1.49 per 1,000 rows, no start fee, read on 2026-11-04). If it fails or returns nothing, the backup automation-lab/reddit-scraper runs instead (about $1.15 per 1,000 posts + $0.003 per run; its empty runs are free), on top of this Actor's price. Each call to it is capped at $0.50.
  • Result — $0.01 per post from 22 October 2026 (free before that date), billed only for results delivered to your dataset. With monitoring on, only results that are new since the last check are delivered and billed.
  • Monitoring check ($0.15) — only when you turn on scheduled monitoring (monitorEnabled), once per target per run, and only when the source responded. One-off runs never pay it: you pay only per result.
  • One-off runs pay only per result. The monitoring check applies only to scheduled monitoring; every upstream call is capped, so a run can never cost more than you allow.

How to use it in 3 steps

  1. Click Try for free and fill in Subreddits to monitor (subreddits).
  2. Optional: adjust the other fields; every one has a description and a sensible default.
  3. Click Start and download the results as JSON, CSV or Excel, or read them from the API.

Use cases

  • Community monitoring: new posts of your subreddits with upvotes and comments.
  • Trend spotting: the spike signal flags sudden activity.
  • Research datasets: posts, comments and media exported to CSV or JSON.

Use it from code (API)

Every Apify Actor is an API. Start a run and read the results with one call.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("om_kh/reddit-subreddit-scraper").call(run_input={"subreddits": ["SaaS", "startups"], "includeComments": False})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('om_kh/reddit-subreddit-scraper').call({
"subreddits": [
"SaaS",
"startups"
],
"includeComments": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

One HTTP call (cURL) — runs the Actor and returns the dataset in the same response:

curl -X POST "https://api.apify.com/v2/acts/om_kh~reddit-subreddit-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"subreddits": ["SaaS", "startups"], "includeComments": false}'

Integrations: n8n, Make, Zapier, Google Sheets

  • n8n — the official Apify node, operation Run Actor and get dataset, Actor om_kh/reddit-subreddit-scraper.
  • Make — Apify › Run an Actor, then Apify › Get Dataset Items.
  • Zapier — Apify › Run Actor; map the dataset items into your next step.
  • Google Sheets, webhooks, Slack — add an integration from the Integrations tab of this Actor.
  • Schedules — run it every hour or day from Schedules in Apify Console.

Use it from an AI agent (MCP and x402)

Connect Claude Desktop, Cursor, VS Code or any MCP client to Apify's MCP server at https://mcp.apify.com and add this Actor, om_kh/reddit-subreddit-scraper, as a tool — the agent passes the same JSON as the run input and gets the dataset back.

AI agents that pay with x402 can run it too, without an Apify account: the Actor charges only per result delivered, so an agent pays exactly for what it gets.

FAQ

Is it legal to scrape Reddit? This Actor collects only publicly available Reddit data and never logs in. You are responsible for how you use it; check Reddit's terms and your local law (GDPR, CCPA) if you store personal data, and ask a lawyer if unsure.

Do I need an account, cookies or an API key? No. You only need an Apify account to run it.

What data do I get? Recent posts with title, text, score, comments count and date. Download it as JSON, CSV, Excel, HTML or XML, or read it from the API.

Am I charged when something fails? No. An input that fails is listed with its reason in the run summary and is never charged.

Can I run it on a schedule? Yes. Create a schedule in Apify Console (hourly, daily, weekly) and connect webhooks, Google Sheets, Slack, n8n, Make or Zapier.

Can I use it from Python, JavaScript or an AI agent? Yes: see the code samples above, or connect AI agents through MCP with the reddit_subreddit_new_posts tool.

All input fields

The main fields are described above; these are the others the form accepts:

  • currentItems (Bring your own items (optional)) — Skip the chained fetch and pass records directly (no upstream call, no fetch fee).

Your feedback

Did this Actor save you time? A short review on the Reviews tab helps other people find it, and every review is read. Something missing or broken? Open an issue on the Issues tab: it is answered and fixed fast.

More Actors from the same author