# Reddit Search Scraper: Keyword Monitor (`themineworks/reddit-search-scraper`) Actor

Search public Reddit posts by keyword across all subreddits, with hot/new/top/rising ordering. Author, text, engagement counts, nested comments. Optional monitor mode bills only for new posts. No login, no API key. Works in Claude, ChatGPT and any MCP agent.

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

## Pricing

$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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Reddit Search Scraper: Keyword Monitor

🏆 Part of The Mine Works' 149-actor portfolio · 40,000+ runs · 200,000+ results delivered across our full distribution stack · 99.9%+ success rate

💰 $1.00 / 1,000 results.

⚡ Keyword search across all of Reddit, not one subreddit at a time. Hot, new, top and rising ordering, optional full nested comment trees, no login, no API key.

💸 An empty search or a blocked run is never charged.

Search all of public Reddit by keyword or phrase and get back matching posts as structured JSON: author, subreddit, title, text body, upvotes, comment count, and permalink, with optional full nested comment trees. No login, no API key. Optional monitor mode turns any keyword into a standing watch that only bills for new posts.

### What it does

Reddit's own search is built for browsing, not for pulling structured data into another tool. This actor runs the same search Reddit itself would show you, across every subreddit rather than one at a time, and returns clean rows instead of a page you have to scrape by hand. Point it at a brand name, a product, a competitor, or a topic and get back what Reddit is currently saying about it.

### Input

- **searchQuery** (required): a keyword or phrase, e.g. `"artificial intelligence"` or a brand name.
- **sortBy**: `hot`, `new`, `top`, or `rising`. Default `hot`.
- **timeframe**: `hour`, `day`, `week`, `month`, `year`, or `all`. Default `all`.
- **maxPosts**: caps how many posts come back. Default 25.
- **includeComments**: when true, also collects each post's comment tree.
- **maxCommentsPerPost** / **maxDepth**: bound comment volume and nesting depth when includeComments is on.
- **monitorMode**: turns this into a standing watch (see below).

### Example output

```json
{
  "post_id": "1abc23d",
  "subreddit": "artificial",
  "author": "u/someuser",
  "title": "New paper on reasoning models",
  "text": "Just read through this and wanted to share...",
  "upvotes": 842,
  "comment_count": 156,
  "created_at": "2026-08-20T00:00:00.000Z",
  "permalink": "https://reddit.com/r/artificial/comments/1abc23d/..."
}
```

### Run it on a schedule

A brand or research team tracking a topic does not want the entire result set re-delivered and re-billed every time it checks in.

1. Set **Monitor mode** to true and run it once with the keyword and sort order you want repeated, then click **Save as a task**.
2. In the Apify Console go to **Schedules** and attach the saved task, either on a preset or a cron expression.
3. Daily suits fast-moving brand and product mentions. Weekly is enough for slower topic tracking.

Every run after the first returns only posts not delivered in a previous run, so a daily or weekly watch bills only for what is genuinely new. A run that finds nothing new logs that explicitly, rather than looking like a failure. Nothing is charged for a schedule existing.

### Why a separate listing from Reddit Scraper

This actor and [reddit-scraper](https://apify.com/themineworks/reddit-scraper) share the same underlying transport, but answer different questions: this one searches by keyword across all of Reddit, the other also covers pulling a specific subreddit's feed, a specific user's post history, or a single post's full comment thread. Splitting the keyword-search job into its own listing means a buyer searching for exactly that finds a listing named for it.

### Frequently asked questions

**Does this need a Reddit account or API key?** No. Search results are public and this actor never asks for or stores any Reddit credential.

**What counts as a result I'm charged for?** Each post delivered in the output. An empty search, or a run Reddit blocks before returning results, is never charged.

**Why did I get fewer posts than maxPosts?** A narrow or very recent keyword may simply not have that many matching posts yet, especially with timeframe set to a short window. The run log states how many were found versus requested.

**Can I get comments without the post content?** No, comments are always attached to their post; set includeComments to false if you only need the posts themselves.

**Can I restrict the search to one subreddit?** There is no separate subreddit input, because this actor is built to search across all of Reddit. `searchQuery` passes Reddit's own search syntax straight through, so a `subreddit:` operator in the query behaves the way it does on Reddit itself. To pull a subreddit's whole feed rather than search it, use [reddit-scraper](https://apify.com/themineworks/reddit-scraper).

**Are comments fetched by default?** No. `includeComments` is off unless you turn it on, so a plain keyword search stays fast and cheap.

### Use from Claude, ChatGPT & any MCP agent

Hosted MCP endpoint, no install, OAuth on first connect:

```
https://mcp.apify.com/?tools=themineworks/reddit-search-scraper
```

Claude Desktop / Cursor config (token auth):

```json
{
  "mcpServers": {
    "reddit-search-scraper": {
      "url": "https://mcp.apify.com/?tools=themineworks/reddit-search-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Ask your agent: *"Search Reddit for '\[brand name]' this week and summarise what people are saying."*

### Pricing

| Event | Price | You pay when |
| --- | --- | --- |
| Post | $0.001 | A Reddit post is delivered to your dataset |

Flat pricing, not tiered by Apify plan, and no separate Actor Start charge.
Pay per post delivered. An empty search or a blocked run is never charged.

Keywords: Reddit search scraper, Reddit keyword monitor, Reddit brand monitoring, Reddit API alternative, Reddit comment scraper, Reddit standing watch, cross-subreddit search tool

# Actor input Schema

## `searchQuery` (type: `string`):

Search query string. Used when mode=search. Supports Reddit's full search syntax.

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

How to sort posts. 'top' can be combined with a timeframe.

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

Time window when using sort=top. Ignored for other sort types.

## `maxPosts` (type: `integer`):

Maximum number of posts to scrape. You are charged only for posts actually scraped.

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

Fetch and include the comment tree for each post. Increases run time and cost.

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

Maximum number of top-level comments to fetch per post. Only used when includeComments=true.

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

How deep to recurse into comment reply threads. 1 = top-level only, 3 = three levels deep.

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

Run on a schedule and deliver ONLY results not seen in a previous run. You are charged per new result, not for the whole feed each time. Ideal for daily monitoring. Requires the same input across runs.

## Actor input object example

```json
{
  "searchQuery": "lab grown diamonds engagement ring",
  "sortBy": "hot",
  "timeframe": "all",
  "maxPosts": 5,
  "includeComments": false,
  "maxCommentsPerPost": 100,
  "maxDepth": 3,
  "monitorMode": false
}
```

# Actor output Schema

## `results` (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 = {
    "searchQuery": "artificial intelligence",
    "maxPosts": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/reddit-search-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 = {
    "searchQuery": "artificial intelligence",
    "maxPosts": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/reddit-search-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 '{
  "searchQuery": "artificial intelligence",
  "maxPosts": 5
}' |
apify call themineworks/reddit-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/reddit-search-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/CAJRSN31AywataVro/builds/MlYxkWQsQfmra7HLJ/openapi.json
