# Reddit Subreddit Scraper: Posts from Any Subreddit (`themineworks/reddit-subreddit-scraper`) Actor

Scrape subreddit posts from any subreddit: hot, new, top, rising or controversial, with a cap per subreddit. Title, text, author, score, upvote ratio, comment count, flair, links and time, plus optional nested comments. No login. Monitor mode delivers only new posts.

- **URL**: https://apify.com/themineworks/reddit-subreddit-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 3 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 posts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Reddit Subreddit Scraper: Posts from Any Subreddit

[![900 subreddit posts in 26 seconds: the top posts of the year from 3 subreddits, 300 each](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/reddit-subreddit-scraper-hero.png)](https://console.apify.com/actors/NexJhhyQe1AstwL3l/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

Updated 10 Oct 2026: first release. A cap per subreddit, all five Reddit sorts including controversial, optional comment trees, and monitor mode that stops at the first post you already have. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **A fixed number from EACH subreddit.** Ask for 300 posts from three subreddits and you get 300 from each, not 300 in total. In our test run that was 900 top posts of the year from r/Entrepreneur, r/marketing and r/SaaS in 26 seconds, from 10 Reddit requests.
- **Every Reddit listing.** hot, new, top, rising and controversial, with the time window (past hour to all time) for top and controversial. Each row says which subreddit, sort, window and rank it came from, so a run over many subreddits stays easy to sort and compare.
- **Pay per post, nothing for errors.** Private, banned and missing subreddits, pinned posts you skip, summary rows and posts you already have in monitor mode are never charged. Comments ride inside the post row at no extra charge. No Reddit account, API key or cookies.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/NexJhhyQe1AstwL3l/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Social media and video family:** [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the 20 hottest posts of r/technology, r/smallbusiness and r/personalfinance, 60 rows in about 4 seconds in our test:

```json
{
  "subreddits": ["technology", "smallbusiness", "personalfinance"],
  "maxPostsPerSubreddit": 20
}
```

A subreddit can be written as `Python`, `r/Python` or `https://www.reddit.com/r/Python/`. The same subreddit given twice is read once.

Apify's free plan includes $5 of credit every month, which covers about 2,400 posts at this actor's price.

#### Copy to your AI assistant

```text
themineworks/reddit-subreddit-scraper on Apify. Scrapes posts from the subreddits you list, with a cap per subreddit, sorted hot, new, top, rising or controversial, optionally with each post's nested comment tree, with no Reddit login. Call ApifyClient("TOKEN").actor("themineworks/reddit-subreddit-scraper").call(run_input={"subreddits": ["Entrepreneur", "SaaS"], "sortBy": "top", "timeframe": "month", "maxPostsPerSubreddit": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: subreddits (list of names, r/Name or links; up to 200). Optional: sortBy ("hot" default, "new", "top", "rising", "controversial"), timeframe ("all" default, "hour", "day", "week", "month", "year"; used with top and controversial), maxPostsPerSubreddit (default 25, 1 to 1000, per subreddit), includeComments (default false), maxCommentsPerPost (default 20, up to 500), maxDepth (default 3, 1 to 10), skipPinnedPosts (default false), monitorMode (default false; delivers only posts not delivered by an earlier run in the same Apify account), clientId (own Reddit installed app client id). Post rows have no _type field and carry id, name, subreddit, title, author, score, upvote_ratio, url, permalink, selftext, is_self, domain, flair, num_comments, created_utc, created_iso, is_pinned, is_locked, over_18, source_subreddit, rank, sort, timeframe, scraped_at, and comments when asked. Each run also writes one row with _type "summary", one with _type "info" when posts were delivered, and a row with _type "error" for each subreddit that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~reddit-subreddit-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Up to 1,000 posts per subreddit, up to 200 subreddits per run.** Reddit's own listings stop at about 1,000 posts; the actor reads them 100 per request.
- **Five sorts and six time windows.** The same choices as the sort menu on reddit.com. `timeframe` applies to top and controversial.
- **36 fields per post.** The same post fields as our [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) (id, title, text, author, score, upvote ratio, links, flair, comment count, pinned and locked flags), plus `created_iso`, NSFW, spoiler and video flags, media hint, thumbnail, author flair, subreddit members, edit time, and where the row came from: `source_subreddit`, `rank`, `sort`, `timeframe`.
- **Optional comment trees.** `includeComments` adds each post's top comments with their replies nested inside the post row, in the same shape as Reddit Scraper.
- **Monitor mode built for schedules.** With sort new, a run stops at the first post an earlier run already delivered, so a daily run delivers and charges only what is new. In our test, a second run one minute after the first delivered just the 1 post that had appeared in r/AskReddit since.
- **Errors explained, not hidden.** A private, banned, Premium only or missing subreddit gets an error row saying which, and the run goes on with the others.

### How to use it

#### Basic: the hot page of one subreddit

```json
{
  "subreddits": ["Entrepreneur"],
  "maxPostsPerSubreddit": 100
}
```

#### Market research: top posts of the year in your niche

This is our scale test: 300 posts from each of three subreddits, 900 rows in 26 seconds.

```json
{
  "subreddits": ["Entrepreneur", "r/marketing", "https://www.reddit.com/r/SaaS/"],
  "sortBy": "top",
  "timeframe": "year",
  "maxPostsPerSubreddit": 300,
  "skipPinnedPosts": true
}
```

Sort the result by `score` or `num_comments` to see which topics a community cares about most, and read `selftext` for the details.

#### Brand and topic monitoring: every new post, once

```json
{
  "subreddits": ["smallbusiness", "Entrepreneur", "startups"],
  "sortBy": "new",
  "maxPostsPerSubreddit": 100,
  "monitorMode": true
}
```

Save it as a task and add a daily schedule. The first run sets the baseline; each later run delivers only posts published since, and stops reading a subreddit at the first post it already gave you. Filter `title` and `selftext` for your brand or competitors' names in Google Sheets or n8n.

#### Competitor research: what a rival's community talks about

```json
{
  "subreddits": ["Notion", "ObsidianMD"],
  "sortBy": "top",
  "timeframe": "month",
  "maxPostsPerSubreddit": 200
}
```

Group by `flair` to see how much of a product's subreddit is bug reports, feature requests or praise.

#### Pain point research: posts and the top replies

```json
{
  "subreddits": ["smallbusiness"],
  "sortBy": "top",
  "timeframe": "week",
  "maxPostsPerSubreddit": 25,
  "includeComments": true,
  "maxCommentsPerPost": 20,
  "maxDepth": 2
}
```

Each post row carries a `comments` array: top comments with their direct replies. To export every comment of a few threads as separate rows, use [Reddit Comments Scraper](https://apify.com/themineworks/reddit-comments-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

#### AI datasets and moderation: the controversial side

```json
{
  "subreddits": ["technology", "Futurology"],
  "sortBy": "controversial",
  "timeframe": "month",
  "maxPostsPerSubreddit": 100
}
```

`upvote_ratio` near 0.5 marks posts that split the room; `over_18`, `spoiler`, `is_locked` and `distinguished` help a moderation or training pipeline filter what it keeps.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `subreddits` | array of strings | required | Subreddit names, `r/Name` or links. Up to 200, read in order. |
| `sortBy` | string | `hot` | `hot`, `new`, `top`, `rising` or `controversial`. |
| `timeframe` | string | `all` | `hour`, `day`, `week`, `month`, `year` or `all`. Used with `top` and `controversial` only. |
| `maxPostsPerSubreddit` | integer | `25` | Most posts from EACH subreddit, 1 to 1,000. |
| `includeComments` | boolean | `false` | Adds each post's comment tree as a `comments` array. One extra request per post. |
| `maxCommentsPerPost` | integer | `20` | With comments: most comments fetched per post, 1 to 500. |
| `maxDepth` | integer | `3` | With comments: levels kept, 1 = top level only, up to 10. |
| `skipPinnedPosts` | boolean | `false` | Leaves out moderator pinned posts; they do not count toward the cap. |
| `monitorMode` | boolean | `false` | Delivers and charges only posts not delivered to you by an earlier run. |
| `clientId` | string | empty | Optional own Reddit "installed app" client id, so your requests do not share the default client id's rate limit. |

### What data do you get?

One row per post. Post rows have no `_type` field; summary, info and error rows do.

| Field | What it is |
|---|---|
| `id`, `name` | Post id (`1of32mn`) and full id (`t3_1of32mn`) |
| `title`, `selftext`, `is_self` | Title, body text (empty for link posts), text post or not |
| `url`, `permalink`, `domain` | The linked page, the Reddit thread, the linked domain |
| `subreddit`, `subreddit_id`, `subreddit_subscribers` | The community and its member count when read |
| `author`, `author_fullname`, `author_flair_text` | Who posted |
| `score`, `upvote_ratio`, `num_comments`, `awards_count` | Engagement when read |
| `flair` | Post flair |
| `created_utc`, `created_iso` | When it was posted (Unix seconds and ISO 8601, UTC) |
| `is_pinned`, `is_locked`, `over_18`, `spoiler`, `is_video` | Status flags |
| `post_hint`, `thumbnail` | Reddit's media hint and thumbnail link, when there is one |
| `edited`, `edited_utc`, `distinguished` | Edit status and moderator or admin mark |
| `source_subreddit`, `rank`, `sort`, `timeframe` | Which subreddit from your input, position in the listing (1 = first, pinned posts count), sort and window |
| `comments` | With `includeComments`: the comment tree (`id`, `name`, `author`, `body`, `score`, `created_utc`, `is_submitter`, `depth`, `replies`) |
| `scraped_at` | When the row was written |

**Summary row** (`_type: "summary"`, never charged): `subreddits_requested`, `subreddits_read`, `subreddits_failed`, `posts_delivered`, `pinned_skipped`, `charged_for`, `reddit_requests`, `ended_on_deadline`, `stopped_by_rate_limit`, `stopped_by_max_cost`, `shortfall_reason` when fewer posts came back than asked, and `per_subreddit`, one entry per subreddit with `posts_delivered`, `pages`, `status` and `last_after` (Reddit's cursor after the last page read). Also saved as the run's `OUTPUT` record.

**Error rows** (`_type: "error"`, never charged): `error_type` (`not_found`, `private`, `banned`, `quarantined`, `premium_only`, `access_denied`, `invalid_subreddit`, `rate_limited`, `fetch_error`), `identifier`, `reason`, `http_status`.

#### Stable fields for automations

Present in all 900 rows of our scale test and in every post row of the other tests; the names will not change:

| Field | What it is |
|---|---|
| `id` | Post id, the key to store and join on |
| `name` | Full id with `t3_` |
| `subreddit` | Community name |
| `source_subreddit` | The subreddit from your input |
| `title` | Post title |
| `author` | Username or `[deleted]` |
| `score` | Score when read |
| `upvote_ratio` | 0 to 1 |
| `num_comments` | Comment count |
| `url` | Linked page or the thread |
| `permalink` | Thread link |
| `is_self` | Text post |
| `created_utc` | Unix seconds, UTC |
| `created_iso` | ISO 8601, UTC |
| `is_pinned` | Pinned by moderators |
| `over_18` | NSFW |
| `rank` | Position in the listing |
| `sort` | Listing read |
| `scraped_at` | When read |

Optional, present only when Reddit has a value: `flair` (623 of 900 rows), `selftext` (empty on link posts, so 847 of 900 had text), `post_hint`, `thumbnail`, `author_flair_text`, `edited_utc`, `distinguished`, `timeframe` (top and controversial only), `comments` (with `includeComments`).

#### Output examples

A post from the scale test (r/Entrepreneur, top of the year, rank 2; text trimmed):

```json
{
  "id": "1of32mn",
  "name": "t3_1of32mn",
  "subreddit": "Entrepreneur",
  "title": "TIL Jeff Bezos made $280M from a $250k Google investment because an acquisition he made totally flopped",
  "author": "b_an_angel",
  "score": 2249,
  "upvote_ratio": 0.97,
  "url": "https://www.reddit.com/r/Entrepreneur/comments/1of32mn/til_jeff_bezos_made_280m_from_a_250k_google/",
  "permalink": "https://www.reddit.com/r/Entrepreneur/comments/1of32mn/til_jeff_bezos_made_280m_from_a_250k_google/",
  "selftext": "Pretty random but thought I’d share (just read the book about Amazon). Bezos made a TON of money as an angel investor into Google. ...",
  "is_self": true,
  "domain": "self.Entrepreneur",
  "flair": "Lessons Learned",
  "num_comments": 204,
  "created_utc": 1761324939,
  "created_iso": "2025-10-24T16:55:39.000Z",
  "is_pinned": false,
  "is_locked": false,
  "over_18": false,
  "subreddit_subscribers": 5291937,
  "edited": false,
  "source_subreddit": "Entrepreneur",
  "rank": 2,
  "sort": "top",
  "timeframe": "year",
  "scraped_at": "2026-10-10T09:10:07.890Z"
}
```

A post with `includeComments` (r/Python, hot; one comment and one reply shown):

```json
{
  "id": "1x1t161",
  "subreddit": "Python",
  "title": "Python 3.15 Released",
  "author": "treyhunner",
  "score": 400,
  "upvote_ratio": 0.99,
  "flair": "News",
  "num_comments": 46,
  "created_iso": "2026-10-09T18:29:03.000Z",
  "source_subreddit": "Python",
  "rank": 3,
  "sort": "hot",
  "comments": [
    {
      "id": "pewgq5n",
      "author": "frankieinaprius",
      "body": "Unpacking in comprehensions will be so nice.  🙏🏽",
      "score": 84,
      "created_utc": 1791571049,
      "is_submitter": false,
      "depth": 0,
      "replies": [
        {
          "id": "pewq4se",
          "author": "Competitive_Travel16",
          "body": "Yes, folding a list of dicts into one is now something that looks nice and somewhat more clear. ...",
          "score": 21,
          "depth": 1,
          "replies": []
        }
      ]
    }
  ]
}
```

Error row for a subreddit that only Reddit Premium members can read (not charged):

```json
{ "_type": "error", "error_type": "premium_only", "identifier": "r/lounge", "reason": "r/lounge is open to Reddit Premium members only (403)", "http_status": 403 }
```

### Pricing

Pay per event: you pay for the posts you receive, plus a flat $0.005 per run, whatever memory you choose.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `post-scraped` | Once per post row stored in your dataset | $2.00 per 1,000 | $1.50 per 1,000 | $1.25 per 1,000 | $1.00 per 1,000 |
| `run-start` | Once per run, after the actor has signed in to Reddit | $0.005 | $0.005 | $0.005 | $0.005 |

The price of one post is the price per 1,000 divided by 1,000. A post costs the same with or without its comments.

Never charged:

- private, banned, Premium only and missing subreddits, and names that are not subreddits (each gets an error row);
- pinned posts skipped by `skipPinnedPosts`;
- posts skipped by monitor mode because an earlier run delivered them;
- the summary, info and error rows;
- a run with no valid subreddit, or one that cannot sign in to Reddit: it stops before the start fee;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every day at 07:00, every Monday and so on).
3. Set `sortBy` to `new` and turn on `monitorMode`, so each run delivers and charges only posts published since the last one.
4. Optional: connect Google Sheets, Slack or a webhook so new posts land where your team works.

Monitor mode keeps the ids of up to 50,000 delivered posts in a storage named `monitor-reddit-subreddit-scraper` in your own Apify account, shared by all your runs of this actor. If that storage cannot be opened, the run says so in its log, delivers everything, and sets `monitor_degraded: true` in the summary row.

### FAQ

#### What does this actor read?

The public post listings of the subreddits you list (hot, new, top, rising or controversial), as anyone sees them without logging in, and with `includeComments` the top comments of each post.

#### How many posts can I get?

Up to 1,000 per subreddit and 200 subreddits per run. Reddit itself stops a listing at about 1,000 posts, and smaller subreddits can end sooner: the summary row then says which subreddits came back short and how many posts each gave.

#### How is maxPostsPerSubreddit different from Reddit Scraper's maxPosts?

Reddit Scraper's `maxPosts` is one total for the whole run, shared by all subreddits, so the first busy subreddit can use it up. Here the cap is per subreddit: 3 subreddits at 100 each return up to 300 posts.

#### How fresh is the data?

Live. Every run reads Reddit at that moment; scores, upvote ratios, comment counts and member counts are the values at `scraped_at`.

#### How long does a run take?

About 4 seconds for the 60 post "Try it" input and 26 seconds for 900 posts in our tests: one request per 100 posts. With `includeComments` each post needs one more request (5 posts with comments took 9 seconds). Reddit allows about 100 requests per 10 minutes on the shared client id, so a run with comments handles about 90 posts per 10 minutes; past that the actor waits for Reddit's window to reset if the run's time limit allows, and otherwise stops cleanly with what it has.

#### Do I need a Reddit account, API key, cookies or a proxy?

No. The actor uses Reddit's anonymous app sign in, the same kind read only Reddit apps use. You can add your own free Reddit client id in `clientId` (an "installed app" from reddit.com/prefs/apps) so your requests do not share the default client id's limit.

#### What happens with private, banned or missing subreddits?

Each gets an error row with the reason (`private`, `banned`, `quarantined`, `premium_only` or `not_found`), is not charged, and the run goes on with the next subreddit. Reddit answers a subreddit that does not exist with an empty list, so the actor checks the subreddit's about page before calling it empty.

#### What is rank, and why does it skip numbers?

`rank` is the post's position in the listing as Reddit served it, 1 = first. Pinned posts count, so with `skipPinnedPosts` the first row may have rank 3. Hot and rising change minute by minute, so the same post can have a different rank in the next run.

#### How does monitor mode decide what is new?

It remembers the ids of posts it delivered to you. With sort new it stops reading a subreddit at the first post it already gave you, since everything below is older. With other sorts it skips known posts and keeps reading, and stops a subreddit after two pages in a row with nothing new.

#### What happens when a run reaches its time limit?

The actor stops starting requests about 15 seconds before the run's timeout (600 seconds unless you change it), keeps every post already delivered, and ends SUCCEEDED with `ended_on_deadline: true`, a `shortfall_reason` and the subreddits not started in `subreddits_not_started`. A post is never delivered without the comments you asked for.

#### Which Reddit actor should I use?

This one for the posts of whole subreddits. [Reddit Comments Scraper](https://apify.com/themineworks/reddit-comments-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) to export every comment of chosen posts as rows. [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) to find posts by keyword across Reddit. [Reddit User Scraper](https://apify.com/themineworks/reddit-user-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for profiles, karma and a user's history. [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for all of these in one actor with a single post cap.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. Post fields are flat; the optional `comments` array is nested, so use JSON when you include comments. The dataset has two ready views: Posts and Post text.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/reddit-subreddit-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http reddit-subreddit-scraper "https://mcp.apify.com/?tools=themineworks/reddit-subreddit-scraper"`

#### Is it legal to scrape subreddits?

The actor reads only public posts that anyone can see without logging in. Posts contain usernames and what people chose to share in public; you are responsible for how you use the data, including Reddit's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's posts to a sheet with Apify's Google Sheets integration.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example "new posts in r/smallbusiness that mention our product, to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Twitter / X Scraper](https://apify.com/themineworks/twitter-x-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [YouTube Transcript](https://apify.com/themineworks/youtube-transcript-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Xiaohongshu (RED) Scraper](https://apify.com/themineworks/xiaohongshu-explore-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Scraper](https://apify.com/themineworks/telegram-channel-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Finder](https://apify.com/themineworks/telegram-channel-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Pinterest Profile Scraper](https://apify.com/themineworks/pinterest-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a subreddit that should return posts and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*List subreddits and get their posts back as rows, up to 1,000 from each, sorted the way you browse Reddit, with optional comments and a monitor mode for schedules, no login.*

# Actor input Schema

## `subreddits` (type: `array`):

Subreddits to read, one per line. Any of these forms works: Python, r/Python, https://www.reddit.com/r/Python/. Up to 200 per run; read in the order given.

## `sortBy` (type: `string`):

Which listing of each subreddit to read, as on reddit.com: hot, new, top, rising or controversial. Use new with monitor mode to collect every new post.

## `timeframe` (type: `string`):

The time window for sort top or controversial, for example week for the top posts of the past 7 days. Ignored for hot, new and rising.

## `maxPostsPerSubreddit` (type: `integer`):

The most posts to return from EACH subreddit, 1 to 1,000 (Reddit's own listings stop at about 1,000). Example: 3 subreddits with 100 each return up to 300 posts.

## `includeComments` (type: `boolean`):

Add each post's comment tree (top comments first, replies nested) inside the post row. One extra request per post, so runs take longer; comments add no charge.

## `maxCommentsPerPost` (type: `integer`):

Only with Include comments: the most comments to fetch for each post, 1 to 500.

## `maxDepth` (type: `integer`):

Only with Include comments: how many levels of the comment tree to keep. 1 = top level comments only, 3 = two levels of replies under them, up to 10.

## `skipPinnedPosts` (type: `boolean`):

Leave out the moderator posts pinned at the top of the subreddit (rules, weekly threads). Skipped posts do not count toward the per subreddit maximum.

## `monitorMode` (type: `boolean`):

Deliver and charge only posts that earlier runs of this actor in your account have not delivered. Put the same input on a schedule to collect new posts as they appear.

## `clientId` (type: `string`):

Leave blank. Optional: your own Reddit app client ID (type 'installed app', from https://www.reddit.com/prefs/apps) so your requests are not counted against the shared client ID's rate limit.

## Actor input object example

```json
{
  "subreddits": [
    "technology",
    "smallbusiness",
    "personalfinance"
  ],
  "sortBy": "hot",
  "timeframe": "all",
  "maxPostsPerSubreddit": 20,
  "includeComments": false,
  "maxCommentsPerPost": 20,
  "maxDepth": 3,
  "skipPinnedPosts": false,
  "monitorMode": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "subreddits": [
        "technology",
        "smallbusiness",
        "personalfinance"
    ],
    "maxPostsPerSubreddit": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/reddit-subreddit-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "subreddits": [
        "technology",
        "smallbusiness",
        "personalfinance",
    ],
    "maxPostsPerSubreddit": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/reddit-subreddit-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "subreddits": [
    "technology",
    "smallbusiness",
    "personalfinance"
  ],
  "maxPostsPerSubreddit": 20
}' |
apify call themineworks/reddit-subreddit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/reddit-subreddit-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NexJhhyQe1AstwL3l/builds/mwRo34jqbHColns39/openapi.json
