# Reddit Brand Monitoring: AI mentions, sentiment and pain points (`rich_minds/reddit-brand-monitoring-ai`) Actor

First 25 mentions free. Reddit brand monitoring for any subreddit: runs Reddit Scraper Lite, drops off-topic and seen posts free, adds AI sentiment, pain points, keyword alerts. $0.002 per qualified mention, below the median. Free demo on any plan; live search runs on your own Apify account.

- **URL**: https://apify.com/rich\_minds/reddit-brand-monitoring-ai.md
- **Developed by:** [Rich Minds](https://apify.com/rich_minds) (community)
- **Categories:** Social media, Lead generation, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 qualified mention (rules only)s

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?

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 Brand Monitoring: AI mentions, sentiment and pain points

**Every new Reddit mention of your brand — ranked, with the one to answer first.**

⚡ First **25 mentions free** · 💵 **$0.002** per qualified mention · 🤖 **$0.009** with AI assessment · 🔑 **No API key needed** — the AI uses the model access of your Apify plan, or your own key · ⏱️ ~2 min for 75 Reddit results (estimate)

![One row per qualified Reddit mention — priority, type, sentiment, subreddit, relevance, the action to take and the sentence that proves it](https://api.apify.com/v2/key-value-stores/nE3BUWsSpRubketlJ/records/shortlist.svg)

> **Try it in 30 seconds.** Click **Try it** — sample Notion mentions, free. Then type your own brand and press
> **Start** — your first **25 qualified mentions** are free, AI on.
> → [How to use it](#-how-to-use-it) · [What a run costs](#-pricing--what-a-run-really-costs) · [Run it weekly](#-run-it-weekly--reddit-monitoring-on-a-schedule)

### ⚡ At a glance

| | |
|---|---|
| **What you get** | Reddit mentions of your brand and competitors, best first: relevance, type, sentiment, priority, action, author link, a verbatim quote |
| **You provide** | your brand name (e.g. `notion`), optionally competitors, subreddits and a one-line brand brief |
| **Output** | JSON / CSV / Excel dataset, four views, a digest with share of voice and the trend vs last run |
| **Typical run** | 1 brand × 75 Reddit results → ~25 qualified mentions in ~2 minutes (estimate) |
| **Cost of that run** | $0.32 Reddit scraper on your account + $0.00 here (all 25 free) = $0.32 |
| **AI tier, all in** | ≈ $0.011 per mention ($0.009 + ≈ $0.002 tokens with the default model) |
| **Keys / setup** | none — Apify's built-in model access, or `llmProvider: byok` with your own key |
| **Works with** | Schedules, e-mail digest, Slack, webhooks, Google Sheets, Zendesk / Linear via n8n, MCP & AI agents |

### 🎯 What this Actor does

It runs **Reddit Scraper Lite** (`trudax/reddit-scraper-lite`) — or harshmaur's **Reddit Scraper** ($0.002 per result,
fewer failed runs) — on your account for your brand terms, drops the junk free and hands you only what matters:
the one to answer first (`priority`, an action — `reply`, `route_to_support`, `route_to_product` — and the author's
profile link), only new mentions next week, and a digest that opens with "vs last run: complaints 5 → 9".

#### 🔎 Reddit mentions — junk and repeats dropped free

Community / user rows, `[deleted]`, bots, ads, NSFW, your `excludeTerms` and "the notion of…" hits are dropped before
any charge; delivered Reddit ids are remembered, so a repeat run pays only for what is new.

#### 😊 Reddit sentiment analysis and Reddit pain points with a verbatim quote

Type (complaint, pain point, feature request, "alternative to X?"), sentiment and priority — from keyword tables on the
basic tier, from the AI reading your `brandBrief` on the AI tier; `evidenceQuote` is copied verbatim.

#### 🧭 Reddit posts search and subreddit monitoring

Up to 10 `subreddits` (empty = all of Reddit); `extraSearchTerms` (`best note taking app`) find "what should I use?" threads.

### 🚀 How to use it

1. **Click `Try it`** — the pre-filled sample (9 Notion posts and comments) runs free: 5 qualified mentions.
2. **Type your own `brandTerms`** (plus `competitorTerms`) and a one-line `brandBrief` — the run switches to the live
   Reddit posts search by itself (capped by `maxDiscoveryChargeUsd`, $0.50). The free demo does not search your terms
   while "Where do the mentions come from?" stays on the sample — typing your brand is the switch.
3. **Keep `enableAi` on and press Start** — your 25 free mentions show the AI tier (insight, quote, action).
4. **Open the Reply queue**, then put your e-mail in `notifyEmail` and **Schedule it weekly** — the status message of
   your first real run links the step.

![The Reply queue view — priority, action, subreddit, thread and the reason to act](https://api.apify.com/v2/key-value-stores/nE3BUWsSpRubketlJ/records/reply-queue.svg)

📚 **Learn more:** [Step-by-step tutorial — Reddit brand monitoring with this Actor](https://api.apify.com/v2/key-value-stores/nE3BUWsSpRubketlJ/records/tutorial.html)

### 🆚 Why this instead of a Reddit scraper or another monitor?

Against the raw Reddit scrapers (this Actor runs one of them for you):

| | [Reddit Scraper Lite (`trudax/reddit-scraper-lite`)](https://apify.com/trudax/reddit-scraper-lite) | [Reddit Scraper (`harshmaur/reddit-scraper`)](https://apify.com/harshmaur/reddit-scraper) | **Reddit Brand Monitoring** |
|---|---|---|---|
| **Price** | $0.004 per result + $0.02 per start · 7,362 users / 30 days | $0.002 per result + $0.02 init, AI +$0.0005 per row | from $0.002 per qualified mention, 25 free, no start fee |
| **You pay for** | every row, incl. community rows, bots, `[deleted]` | every row — its AI labels junk too | only mentions that pass your filters |
| **Same 100 mentions, all in** | $1.34 for ≈ 330 raw rows — you read 230 off-topic ones | $0.85 for 330 labelled rows, junk included | $1.54 ($1.34 scraper + $0.20) · $2.44 with AI — ranked, typed, deduped |
| **Relevance to *your* brand** | none | none — no brand brief | rule score + AI check against your brief |
| **Repeat runs / failed runs** | the same threads again · 12 % fail | the same threads again · 1.7 % fail | only new mentions · pick either scraper; a partial dataset is still qualified |

Against the other Reddit brand monitors in the same Store search (their cards, 2026-09-26):

| | [Reddit Lead Monitor (`scrapemint`)](https://apify.com/scrapemint/reddit-lead-monitor) | [Reddit Brand Monitor (`deepmine`)](https://apify.com/deepmine/reddit-brand-monitor) | [Reddit Keyword Monitor (`signalengine`)](https://apify.com/signalengine/reddit-keyword-monitor) | **This Actor** |
|---|---|---|---|---|
| **Price** | $0.015 per match, 2 free per run | $0.005 per result | $0.001 per new match | $0.002 / $0.009 AI per qualified mention, 25 free |
| **Reddit fetched by** | itself | itself | itself | a scraper on your plan (+$0.004 a result) |
| **Relevance check vs your brand** | keyword + intent class | keyword | keyword | rule score + AI against your brief |
| **Only new mentions** | yes | score changes tracked | yes | yes, per monitor |
| **Insight + verbatim quote** | — | — | — | yes (AI tier) |
| **Runs, last 30 days** | 93 | 28 | 52 | — |

A keyword monitor is cheaper per match when every hit is about you; this Actor pays off when your name is a common
word ("notion", "linear") or you want the pain point, the quote and the action instead of a raw hit.
`harshmaur/reddit-search-scraper` ($0.0015 per result + $0.02 start) bills every raw hit too; its dataset works here.

**Brand24 / Syften / F5Bot alternative?** Brand24 sells a multi-network social listening seat (≈ $199/month), Syften
keyword alerts (≈ $20/month), F5Bot free e-mail alerts with no relevance check. A weekly 3-term Reddit monitor here
costs ≈ $6/month basic or ≈ $9.50 with AI, scraper included — pay per mention, no seat.

### 💵 Pricing — what a run really costs

Pay per result: **one event per qualified mention, nothing else.**

| Event | When it is charged | Price |
|---|---|---|
| `free-tier` | your first 25 qualified mentions on this Actor | **$0.00** |
| `qualified-mention-basic` | AI off — relevance with reasons, type, sentiment, priority, action | **$0.002** |
| `qualified-mention-ai` | AI on — plus the AI relevance check, insight, verbatim quote, reply draft | **$0.009** |

**Never charged:** community / user rows, deleted or bot posts, ads, NSFW, off-topic matches, mentions below
`minScore`, unselected types or sentiments, duplicates, mentions from earlier runs, anything beyond `maxQualified`.
No start fee; compute included.

**How that compares** — $0.002 is 0.86× the Store median ($0.0023 across the 10 Actors a `reddit brand monitoring` search
shows) — cheaper per qualified mention than a raw row there, and only ~30 % of a search is on-topic: one qualified mention
replaces ≈ 3.3 raw rows plus the reading.

**Worked example** — weekly monitor, 3 terms × 100 results: Reddit Scraper Lite $1.22 on your account (300 × $0.004 +
$0.02; `maxDiscoveryChargeUsd` 1.25) → ~90 qualified (estimate) × $0.002 = $0.18 → **$1.40 total, $0.016 per
qualified mention**. AI on: 90 × $0.009 + ≈ $0.18 tokens → **$2.21 total, $0.025 per mention**.

**AI tier, all in:** ≈ $0.011 per mention ($0.009 + ≈ $0.002 tokens for ~900 in / 250 out with `anthropic/claude-haiku-4.5`)
— 4.5× the basic price plus tokens, billed via Apify's model access or your own key.

### 🤖 What the AI tier adds

The same mention, AI **off** (real output of the sample run):

```json
{"mentionId": "t3_1fq2a7x", "relevanceScore": 90, "ruleScore": 90, "fitScore": null, "score": 90, "label": "hot",
 "mentionType": "alternative_seeking", "sentiment": "mixed", "priority": "high", "suggestedAction": "reply",
 "evidenceQuote": "Looking for an alternative to Notion that works offline", "insight": null, "aiStatus": "off"}
```

AI **on** — real output of the AI example (2026-09-26, own Groq key `groq:openai/gpt-oss-120b`, not yet the default
`anthropic/claude-haiku-4.5`; wording varies by model, fields and grounding do not):

```json
{"mentionId": "t3_1fq2a7x", "relevanceScore": 95, "ruleScore": 90, "fitScore": 95, "score": 95, "label": "hot",
 "mentionType": "alternative_seeking", "sentiment": "mixed", "priority": "high", "suggestedAction": "reply",
 "insight": "User finds Notion slow and unusable offline, wants a tool that works offline with table/database features.",
 "evidenceQuote": "Notion is so slow on my laptop and useless on the train without wifi.",
 "actionReason": "User is actively seeking an offline alternative and the post has high engagement.",
 "competitorsMentioned": ["obsidian"], "aiStatus": "ok"}
```

The AI says *why* they are leaving and quotes the proof — what you would otherwise read 37 comments to learn.

### ⚙️ Input

Type your brand, a one-line brief, keep AI on — everything else has a default.

<details><summary>The fields a buyer decides on, with their defaults</summary>

| Field | Type | Default | What it does |
|---|---|---|---|
| `brandTerms` | string\[] | — | Names searched and required in the text; your own brand next to the sample = live search |
| `sourceMode` | `actor` | `dataset` | `list` | `actor` | Live search, a scraper dataset, or pasted rows; `{}` = free demo |
| `brandBrief` | string | — | What your brand is — the AI's disambiguation |
| `minScore` | 0–100 | `50` | Below it = not delivered, not charged |
| `maxDiscoveryChargeUsd` | number | `0.5` | Cap on the scraper's spend on your account |
| `maxQualified` | integer | `100` | Cap on output and on this Actor's charge |
| `enableAi` | boolean | `true` | AI tier on / off |
| `notifyEmail` | string | — | The digest by e-mail after every run with new mentions |
| `competitorTerms` | string\[] | — | Competitors searched too; share of voice |
| `maxItemsPerSearch` | integer | `75` | Results per term — raise it once you see value |
| `discoveryActorId` | enum | `trudax/reddit-scraper-lite` | Or `harshmaur/reddit-scraper` ($0.002 per result) |

In the **Input** tab: `subreddits` (subreddit monitoring, up to 10), `includeComments`, `timeWindow`, filters
(`excludeTerms`, `minUpvotes`, `mentionTypes`, `sentimentFilter`, `includeNsfw`, `targetFlags`, `suppressionList`),
`draftReplies`, the model, `slackWebhookUrl`, `webhookUrl` / `webhookHeaders` / `webhookBatchSize`,
`dedupeAcrossRuns` and `dedupeStoreName`.

</details>

<details><summary>All flags — put a name into `targetFlags` (`alternativeSeeking` works too; an unknown name stops the run)</summary>

| Flag (`targetFlags` value) | Meaning |
|---|---|
| `brand_in_title` | a brand term is in the post title (or a comment's first sentence) |
| `competitor_mentioned` | one of your competitorTerms is named |
| `alternative_seeking` | someone is looking for an alternative / switching tools |
| `feature_request` | asks for a feature or says "I wish it had …" |
| `complaint` | complains: bug, broken, hate, cancel, refund |
| `pain_point` | describes a struggle: frustrating, confusing, slow, hard to |
| `question` | asks a question about the brand or the category |
| `comparison` | compares tools: "X vs Y", "compared to", "better than" |
| `praise` | praises or recommends: love, amazing, recommend |
| `high_engagement` | ≥ 20 upvotes or ≥ 10 comments |
| `recent` | posted in the last 24 hours |
| `unanswered` | no replies yet — the first answer gets seen |
| `ambiguous_term` | a single common-word brand without product context (lower relevance) |
| `in_target_subreddit` | posted in one of your `subreddits` |

</details>

### 📤 Output

One dataset item per qualified mention. Dataset **views**: `Shortlist` (best first), `Reply queue` (action, reason,
draft, author profile), `Pain points & requests` (insight + quote) and `Competitor mentions` (share of voice).

<details><summary>A full example row (the AI-tier row above) and every field</summary>

```json
{
  "itemId": "bfd4149236f8", "mentionId": "t3_1fq2a7x", "kind": "post",
  "name": "Looking for an alternative to Notion that works offline",
  "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/",
  "subreddit": "productivity", "author": "sample_user_1", "authorUrl": "https://www.reddit.com/user/sample_user_1/",
  "createdAt": "2026-09-25T08:12:00Z", "upvotes": 48, "commentsCount": 37, "postId": "t3_1fq2a7x", "mentionsInThread": 2,
  "threadTitle": "Looking for an alternative to Notion that works offline",
  "matchedTerms": ["notion", "obsidian"], "matchedTermType": "brand", "relevanceScore": 95,
  "mentionType": "alternative_seeking", "sentiment": "mixed", "priority": "high", "suggestedAction": "reply",
  "insight": "User finds Notion slow and unusable offline, wants a tool that works offline with table/database features.",
  "competitorsMentioned": ["obsidian"],
  "evidenceQuote": "Notion is so slow on my laptop and useless on the train without wifi.",
  "replyDraft": null, "aiStatus": "ok", "sourceActor": "list", "ruleScore": 90, "fitScore": 95, "score": 95,
  "label": "hot", "chargedEvent": "demo", "billedAs": "qualified-mention-ai", "dedupeKey": "reddit:t3_1fq2a7x"
}
```

| Field | Description |
|---|---|
| `itemId`, `mentionId`, `dedupeKey` | Identity: hash, Reddit fullname (`t3_…` post, `t1_…` comment), `reddit:<fullname>` |
| `kind`, `name`, `url` | post / comment, a display line, the canonical link |
| `subreddit`, `author`, `authorUrl`, `title`, `text`, `createdAt`, `flair` | The mention as Reddit published it (text ≤ 4,000 chars); `authorUrl` = the author's profile, null for deleted authors |
| `upvotes`, `commentsCount` | Engagement when the source reports it |
| `postId`, `threadTitle`, `threadUrl`, `mentionsInThread` | Thread context (Reddit comments joined to their post) |
| `matchedTerms`, `matchedTermType`, `searchTerm` | Which of your terms matched: brand / competitor / topic |
| `relevanceScore`, `relevanceReasons` | Relevance 0–100 with reasons (AI when assessed, else rules) |
| `ruleScore`, `fitScore`, `score`, `label` | Rule relevance, AI relevance (null on basic), ranking score, hot / warm / cold |
| **Canonical fields** | `url` and `score` are the fields to map; `relevanceScore` carries the same value as `score` |
| `mentionType`, `sentiment`, `priority`, `suggestedAction`, `actionReason` | What it is, how they feel, what to do and why |
| `insight`, `competitorsMentioned`, `evidenceQuote`, `replyDraft` | AI insight, competitors named, verbatim sentence, reply draft |
| `flags`, `targetFlagsMatched` | Rule flags and which of your target flags matched |
| `aiStatus`, `aiModel`, `sourceActor` | off / ok / fallback (a field failed the grounding check) / error; model; source |
| `chargedEvent`, `billedAs`, `scrapedAt` | Billing (`billedAs` = the price tier, also on free rows), scrape time |

</details>

**Upsert key for a CRM or Sheet:** `dedupeKey` — built from the Reddit fullname (`reddit:t3_1fq2a7x`), the key the
cross-run memory uses; `itemId` is its short hash.

A Slack / e-mail-ready **`DIGEST`** record sits next to `OUTPUT`; `OUTPUT.digest` holds counts, share of voice,
themes and `trend` — the change vs the last run.

⭐ **Found it useful? A review on the Store helps others find it** — it takes a minute on the Actor's page.

### 🔁 Run it weekly — Reddit monitoring on a schedule

1. **Actions → Schedule** (daily or weekly) with your address in `notifyEmail` — every run with new mentions e-mails
   you the digest (top 10 with links), no Slack or Zapier needed. Your first real run's status message says the same.
2. Leave `dedupeAcrossRuns: true` — you pay **only for what is new**; each monitor (terms + subreddits) keeps its own memory.
3. From run 2 the digest says what changed: "vs last run: mentions 41 → 55, complaints / pain points 5 → 9".

Weekly cost is the new mentions only: 3 terms × 100 results, ~90 new ≈ $1.40 a week basic, ≈ $2.21 with AI.

#### 🎯 Try it for your niche

| Niche | What it looks for | Input to paste |
|---|---|---|
| SaaS founder | product + 2 competitors in r/SaaS, AI on | [saas-founder-monitor.json](docs/img/preset-saas-founder-monitor.json) |
| Community manager | complaints and questions, reply drafts | [community-reply-queue.json](docs/img/preset-community-reply-queue.json) |
| Product research | pain points and requests, last month | [product-pain-points.json](docs/img/preset-product-pain-points.json) |

Replace the brand, paste it into the form's **JSON** tab (or save a Task per client).

### 🔌 Integrations, automation and API

- **Google Sheets** — import the [Sheets template](https://api.apify.com/v2/key-value-stores/nE3BUWsSpRubketlJ/records/sheets-template.csv) (`dedupeKey` first for upserts).
- **n8n** — the [weekly workflow](docs/img/n8n-weekly-reddit-mentions.json) (Sheet + Slack) and the
  [ticket workflow](docs/img/n8n-route-to-tickets.json): `route_to_support` → a Zendesk / HubSpot ticket,
  `route_to_product` → a Linear issue, `dedupeKey` as the external id.
- **Webhook, Slack** — `webhookUrl` (payload below), `slackWebhookUrl` or the **Integrations** tab.
- **AI agents / MCP** — plain typed inputs; `{}` runs the free demo, `"sourceMode": "list"` qualifies your rows free of scraper cost.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/reddit-brand-monitoring-ai").call(
    run_input={
        "sourceMode": "list",  # free trial: qualify rows you already have — no scraper run
        "brandTerms": ["acme crm"],
        "itemsList": [{"id": "t3_abc123", "dataType": "post", "title": "Acme CRM vs HubSpot?",
                       "url": "https://www.reddit.com/r/sales/comments/abc123/acme_crm_vs_hubspot/"}],
        "maxDiscoveryChargeUsd": 0.5,  # the cap once you switch to "sourceMode": "actor"
    },
    timeout_secs=3600,  # the AI path with your own key can take minutes (FAQ)
    # build="0.2.1",  # pin the build you tested (Builds tab) so a new release never changes your pipeline
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["priority"], item["url"], item["authorUrl"])
```

Pin a build for production pipelines; leave it out to always get the latest fixes.

<details><summary>JavaScript (a live search) and MCP</summary>

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('rich_minds/reddit-brand-monitoring-ai').call({
    sourceMode: 'actor', brandTerms: ['acme crm'], competitorTerms: ['hubspot'],
    brandBrief: 'Acme CRM — the sales CRM for small agencies.',
    maxDiscoveryChargeUsd: 0.5, // cap on the Reddit scraper's spend
}, {
    timeout: 3600, // seconds — the AI path with your own key can take minutes (FAQ)
    // build: '0.2.1', // pin the build you tested (Builds tab)
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```json
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=rich_minds/reddit-brand-monitoring-ai"}}}
```

Then ask: *"Run reddit-brand-monitoring-ai for `brandTerms: ["acme crm"]`, `maxDiscoveryChargeUsd: 0.5`; list the
high-priority mentions."*

</details>

#### Run outcomes — what your integration sees

<details><summary>Every outcome: run status, dataset, <code>OUTPUT</code> field, charged?, what to do — and the webhook payload</summary>

Webhook: `webhookBatchSize: 1` sends `{"event": "mention.qualified", "mention": {…}, "runId": "…", "text": "…"}` per
mention at or above `alertMinPriority`; a larger size sends `{"event": "mentions.qualified", "mentions": [{…}, …],
"runId": "…", "text": "…"}` per batch (the last may be shorter). A 429 / 5xx / network error is retried once after
2 s; a failed POST is counted in `OUTPUT.webhook.failed` — a webhook failure never fails the run.

| Outcome | Run status | Dataset | `OUTPUT` | Charged? | What to do |
|---|---|---|---|---|---|
| Free demo (the pre-filled sample) | SUCCEEDED | sample mentions | `qualified`, `demo` | no | type your own `brandTerms` |
| Your brand typed next to the sample | SUCCEEDED | qualified mentions | `switchedToLive` | per qualified mention | — |
| Success | SUCCEEDED | qualified mentions, best first | funnel, `digest`, `chargedEvents`, `aiCoverage` | per qualified mention | — |
| Scraper run failed / timed out half-way | SUCCEEDED | the mentions it scraped | `sourceRuns` with the status | per qualified mention | raise `discoveryTimeoutSecs` |
| Nothing matched (the demo too) | SUCCEEDED | empty | `qualified: 0` | no | loosen `minScore` / filters |
| Demo text still in place | SUCCEEDED | empty | `inputNeeded` | no | replace `brandTerms` / `brandBrief` |
| Invalid input | FAILED | empty | — | no | fix the field the status message names |
| Scraper failed before loading anything | FAILED | empty | `sourceError` | no | follow the reason (plan, timeout, dataset mode) |
| AI unavailable | SUCCEEDED | rule-scored mentions | `aiError`, `freeAiReserve` | free while your free mentions last, then basic price | `llmProvider: byok` with your own key |

`OUTPUT.aiCoverage` says how many rows the AI assessed, why the rest kept the rule score (`fallbackReasons`: rate
limit, parse, plan / key, run budget) and how many the second pass rescued.

</details>

### 👥 Who is it for?

| You are… | You run it to… | Start with |
|---|---|---|
| SaaS founder / marketer | new mentions of your product and competitors each morning | `competitorTerms`, `enableAi`, `notifyEmail` |
| Community / support manager | the threads that need a reply today, as tickets | `alertMinPriority: high`, `draftReplies`, the ticket workflow |
| Product researcher | Reddit market research: pain points and feature requests with citable quotes | `extraSearchTerms`, `mentionTypes` |
| Agency / AI agent | a weekly report per client brand · "the 20 most relevant mentions of X" as JSON | one Task per client · `{"brandTerms": ["x"], "maxQualified": 20}` |

### 🧠 How the AI works

- **One typed call per mention** (post, thread, your brief, the rule baseline in); one more writes the digest themes.
- **Grounded** — a quote that is not an exact substring is dropped (`aiStatus: fallback`), competitors must appear
  verbatim, an off-brand mention is capped at 30.
- **Tokens where they matter** — the best rule-scored mentions first, every one at or above `minScore` − 20, up to
  `aiCandidateMultiplier` × `maxQualified`; default model `anthropic/claude-haiku-4.5`, or `llmProvider: "byok"`.
- **A second pass** retries rate-limited or unparsable mentions one at a time until 90 % are AI-assessed; a model
  error never fails the run (rule values kept, the reason in `aiCoverage`).

### 🔒 Data, compliance and limits

Public Reddit data only, no login; up to 10 subreddits per run, `text` ≤ 4,000 characters, the AI works best on
English. Respect each subreddit's rules when you reply; use the output within Reddit's terms and GDPR / CCPA.

### ❓ FAQ

**What will my first real search cost?** 1 term × `maxItemsPerSearch` 75 ≈ $0.32 with Reddit Scraper Lite (≈ $0.17
with harshmaur's), capped by `maxDiscoveryChargeUsd` ($0.50, form and API); ~25 mentions qualify — your 25 free ones.

**Is this a Reddit Scraper Lite scraper?** It runs Reddit Lite (`trudax/reddit-scraper-lite`) or `harshmaur/reddit-scraper`
for you, with cost-saving settings; a dataset from either works in `dataset` mode.

**Does it scrape Reddit comments too, like a Reddit comments scraper?** Yes — with their thread's title and URL.

**Can I use it for Reddit market research?** Yes: `extraSearchTerms`, `mentionTypes`, `timeWindow: month`; the Pain
points view and `OUTPUT.digest` are the report.

**Can I use it for Reddit keyword alerts?** Yes: `webhookUrl` + `alertMinPriority: high` POSTs urgent mentions at once,
`slackWebhookUrl` / `notifyEmail` send the digest; `draftReplies` (AI) drafts a reply — never posted.

**Is it a Brand24, Syften or F5Bot alternative for Reddit?** For Reddit, yes: per qualified mention instead of a monthly
seat (Brand24 ≈ $199/month, Syften ≈ $20/month), with a relevance check, AI insight and quotes F5Bot's free alerts lack.
Those tools also watch other networks; this one does Reddit only.

**How long does a run take?** The demo: seconds. Live: ~2 min in the scraper per 75 results (estimate; capped by
`discoveryTimeoutSecs` 600). AI, measured on the 5-mention example with a free Gemini key: 138.5 s, 98.6 s of it
rate-limit waiting (≈ 8 s per mention of model time; 5 of 5 assessed after the second pass); a key whose daily quota
is spent stops the AI at once. Own keys run 2 calls at a time and stop after 2 minutes of rate-limit waiting — worst
case ≈ 25 min per 100 mentions, every mention pushed. Pass `timeoutSecs` 3600 with AI; `OUTPUT.timing` has the phases.

**Which Apify plan do I need?** Any plan runs the demo and `dataset` / `list` mode; the live search and built-in AI
need a plan that can run Store Actors (else a dataset and `llmProvider: "byok"`).

**What does "qualified" mean?** It names one of your terms, passed every free filter and scored ≥ `minScore`.

**What happens if nothing matches my filters?** The run succeeds with 0 rows and charges nothing.

**Will I be charged for the same mention twice?** No — delivered Reddit ids are remembered on your account.

### 🧩 More Actors from the same developer

Not quite your use case? The same pay-per-qualified-result model, closest to this Actor's buyers first:

- **[Google Reviews Analysis AI](https://apify.com/rich_minds/google-reviews-insights)** — reputation management, google reviews analysis: complaints, praise and pain points per business
- **[LinkedIn Buying Intent Leads](https://apify.com/rich_minds/linkedin-intent-leads)** — social selling, linkedin account monitoring, linkedin buying intent
- **[Instagram Influencer Finder](https://apify.com/rich_minds/instagram-creator-qualifier)** — brand safety, instagram, instagram creators
- **[Facebook Ad Library Winning Ads Finder](https://apify.com/rich_minds/fb-ad-library-winning-ads)** — facebook ad library winning ads, competitor ads
- **[YouTube Outlier Videos Finder](https://apify.com/rich_minds/youtube-video-research-ai)** — youtube outlier videos, youtube competitor analysis

### 🆘 Support

Open an issue on the Actor's page or message the developer in the Apify Console — buyer requests ship first.

### 📝 Changelog

One line per published build, newest first — `/actor-publish` adds it with the commit subject.

- **0.2.3** (2026-09-26) — feat(marketing): 2026-09-26.md — M-01, M-02.

- **0.2.2** (2026-09-26) — fix(review): 2026-09-26-3.md — every finding implemented.

- **0.2.1** (2026-09-26) — fix(review): 2026-09-26.md — every finding implemented.

- **0.2** (2026-09-26) — `harshmaur/reddit-scraper` as a live source, trend vs last run, first search 75 results,
  `url` never null, AI example free, presets, Sheets template, n8n workflow.

- **0.1.1** (2026-09-26) — real handle in the snippets, hosted tutorial and images.

- **0.1** (2026-09-26) — initial release.

# Actor input Schema

## `brandTerms` (type: `array`):

The names Reddit is searched for, e.g. <code>notion</code> — case-insensitive, whole-word, plurals included. Type your own brand and press Start: the run switches to the live search, capped by the spend cap below. The free demo does not search it — set Where do the mentions come from? to Search Reddit live to search it live.

## `sourceMode` (type: `string`):

<b>list</b> (prefilled) — the free demo on sample mentions, or posts / comments you paste in. <b>actor</b> — search Reddit live for your brand terms on your Apify account. <b>dataset</b> — qualify a Reddit scraper dataset you already have. Plans and source prices: section 6.

## `brandBrief` (type: `string`):

Tells the AI which <i>notion</i> you mean — e.g. "Notion — the docs and wiki app, not the word 'notion'". The AI uses it to confirm each mention is really about you (and, with reply drafts on, as the only facts a draft may use). Leave empty to judge from the brand terms alone.

## `maxDiscoveryChargeUsd` (type: `number`):

Hard cap on what the Reddit scraper run may charge your account in <b>actor</b> mode — $0.50 in the form and for an API or agent call that leaves it out (≈ 120 results with Reddit Scraper Lite, ≈ 240 with harshmaur's), so a first real search can never cost more. Raise it for bigger searches.

## `maxQualified` (type: `integer`):

Hard cap on results — and the ceiling of what <b>this Actor</b> charges: at most this many × $0.009 with AI on (× $0.002 with AI off), e.g. 100 × $0.009 = $0.90; the scraper's own spend has its cap right above. The highest-relevance mentions are output first.

## `enableAi` (type: `boolean`):

Confirms each mention is about <i>your</i> brand and adds sentiment, type, the pain point with a verbatim quote, competitors named, priority and next action. <b>On (default) = $0.009 per qualified mention + AI tokens; off = $0.002</b> (rule-based). Keep it on for your first search — your 25 free mentions then show the AI tier.

## `notifyEmail` (type: `string`):

Make it a weekly monitor: after every run with new mentions the digest (top 10 with links, what changed since the last run) is e-mailed here. Schedule the run (Actions → Schedule) and the mentions come to your inbox — no Slack or Zapier needed. Never sent for the free demo.

## `competitorTerms` (type: `array`):

Searched as well; mentions that name them get <code>matchedTermType: competitor</code> and appear in <code>competitorsMentioned</code> and the share-of-voice digest. A competitor's unhappy user is suggested as a <b>reply</b> opportunity.

## `extraSearchTerms` (type: `array`):

Category phrases such as <code>best note taking app</code> — searched, tagged <code>topic</code>, and delivered when the phrase appears (they need no brand name). Good for finding "what should I use?" threads.

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

Names, <code>r/…</code> or URLs, e.g. <code>SaaS</code>, <code>r/productivity</code>. Empty = all of Reddit. Each subreddit is one scraper run (at most 10, the result budget split across them).

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

Search comments as well as posts — most brand mentions are in comments. Off = posts only.

## `timeWindow` (type: `string`):

How far back to look. Older mentions are skipped for free (live searches and datasets).

## `maxItemsPerSearch` (type: `integer`):

Reddit results fetched per brand / competitor / topic term (newest first). 1 term × 75 ≈ $0.32 on your account with Reddit Scraper Lite (≈ 25 qualified mentions — your free ones); raise it once you see value. Always capped by <b>Max Reddit scraper spend</b>.

## `minScore` (type: `integer`):

The field that decides what you pay: mentions whose relevance score is below this are discarded and <b>not charged</b>. 50 keeps clear mentions (brand in the title, or in the text with product context); raise it to pay only for the strongest, lower it to see passing mentions too.

## `excludeTerms` (type: `array`):

Drop any mention whose title or text contains one of these, for free — e.g. <code>notion of</code>, <code>giveaway</code>.

## `minUpvotes` (type: `integer`):

Skip mentions with fewer upvotes (when the source reports them). 0 keeps brand-new posts too.

## `mentionTypes` (type: `array`):

Deliver only these types (the AI's type when AI is on, else the rule type). Empty = every type.

## `sentimentFilter` (type: `array`):

Deliver only these sentiments toward the brand. Empty = every sentiment.

## `includeNsfw` (type: `boolean`):

Off (default) skips posts marked NSFW, for free.

## `targetFlags` (type: `array`):

Only deliver mentions that have at least one of these flags. Use the names from the README's flag table, e.g. <code>alternative\_seeking</code>, <code>competitor\_mentioned</code>, <code>unanswered</code> (<code>alternativeSeeking</code> works too); an unknown name stops the run at once with the list of valid ones.

## `suppressionList` (type: `array`):

Reddit usernames (your own team), mention URLs or ids (<code>t1\_…</code>) to never output. Skipped before any processing and never charged.

## `draftReplies` (type: `boolean`):

With AI on, high-priority mentions get a short reply draft that uses only your brand brief and the thread — no prices or claims beyond the brief, and it suggests disclosing your affiliation. A draft for a human: nothing is ever posted.

## `llmProvider` (type: `string`):

<b>Apify (no keys)</b> — the AI runs through Apify's built-in OpenRouter proxy; tokens are billed to your Apify account at OpenRouter's rates. <b>My own key</b> — use your OpenAI / Anthropic / Gemini / Groq key instead; a free-tier key is slower (2 calls at a time, one after a rate limit) — the AI stops before the run's timeout and the rest keep their rule score.

## `llmModel` (type: `string`):

Leave empty for the default (<code>anthropic/claude-haiku-4.5</code>). Apify mode takes an OpenRouter slug such as <code>openai/gpt-4o-mini</code>; own-key mode takes <code>provider:model</code>, e.g. <code>anthropic:claude-haiku-4-5-20251001</code>.

## `llmApiKey` (type: `string`):

Required when <b>AI model access</b> is <i>My own API key</i>. Stored encrypted by Apify, never logged.

## `aiCandidateMultiplier` (type: `integer`):

The AI pass takes every mention scoring at least <b>Minimum relevance</b> − 20, best rule score first, up to this multiple × <b>Max qualified</b> (default 2 × 100 = 200). Higher = more thorough, slower, more tokens.

## `slackWebhookUrl` (type: `string`):

A Slack incoming-webhook URL (<code>https://hooks.slack.com/services/…</code>). After every run with at least one new mention, the digest (top 10 with links, priority, type and sentiment) is posted to that channel as a readable message — not raw JSON. Never sent for the free demo.

## `webhookUrl` (type: `string`):

Qualified mentions are POSTed here as JSON with a Slack-compatible <code>text</code> line (Zapier, Make, n8n, your CRM, a Slack workflow). With batch size 1 only mentions at or above <b>Alert priority</b> are sent, the moment they are ready.

## `alertMinPriority` (type: `string`):

With webhook batch size 1, only mentions of this priority or higher are POSTed — so the urgent threads reach Slack / Zapier at once. Batches carry every mention.

## `webhookHeaders` (type: `object`):

Extra HTTP headers for the webhook, e.g. <code>{"Authorization": "Bearer …"}</code>.

## `webhookBatchSize` (type: `integer`):

1 = one POST per mention (at or above Alert priority) the moment it is ready. Higher = one POST per N mentions, every priority.

## `dedupeAcrossRuns` (type: `boolean`):

Remembers every mention delivered to you (by its Reddit id, in a named key-value store on your account) and skips it in future runs for free; the next live search also starts from the last run's date (<code>postDateLimit</code>).

## `dedupeStoreName` (type: `string`):

Key-value store used for the cross-run memory. Left at the default, the memory is kept per monitor: another set of <code>brandTerms</code> / competitors / subreddits (another client brand) starts its own list, so one brand never hides mentions from another. Type your own name to share one memory, or to keep one per campaign.

## `datasetId` (type: `string`):

Only for <b>dataset</b> mode: a dataset from <code>trudax/reddit-scraper-lite</code>, <code>trudax/reddit-scraper</code> or <code>harshmaur/reddit-scraper</code>. Pick it so the Actor is granted read access.

## `itemsList` (type: `array`):

Only for <b>list</b> mode. JSON array of Reddit rows in the <code>trudax/reddit-scraper-lite</code> or <code>harshmaur/reddit-scraper</code> shape — at least <code>id</code>, <code>url</code>, <code>dataType</code> and <code>title</code> / <code>body</code>. The prefilled rows are the free demo (sample mentions).

## `discoveryActorId` (type: `string`):

The Store Actor <b>actor</b> mode runs on your account (its usage is billed by that Actor). <b>Reddit Scraper Lite</b> — $0.004 per result + $0.02 per start, the most used. <b>Reddit Scraper (harshmaur)</b> — $0.002 per result + $0.02 init and fewer failed runs (1.7 % vs 12 % in 30 days). Both feed the same output.

## `discoveryInput` (type: `object`):

Only for <b>actor</b> mode. Merged over the input this Actor builds (<code>searches</code>, <code>sort: new</code>, <code>maxItems</code> …) and passed as-is — e.g. <code>{"sort": "relevance"}</code>. See the source Actor's input schema.

## `discoveryTimeoutSecs` (type: `integer`):

Hard timeout for each Reddit scraper run. A run that times out or fails still hands over what it scraped, and those mentions are qualified.

## `maxToProcess` (type: `integer`):

Upper bound on how many mentions are scored in one run and on the scraper's result budget (controls run time). Default = 3 × max qualified.

## Actor input object example

```json
{
  "brandTerms": [
    "notion"
  ],
  "sourceMode": "list",
  "brandBrief": "Notion — the note-taking, docs and wiki app for teams (notion.so), not the word 'notion'. We want complaints, feature requests and people looking for an alternative.",
  "maxDiscoveryChargeUsd": 0.5,
  "maxQualified": 100,
  "enableAi": true,
  "includeComments": true,
  "timeWindow": "week",
  "maxItemsPerSearch": 75,
  "minScore": 50,
  "minUpvotes": 0,
  "includeNsfw": false,
  "draftReplies": false,
  "llmProvider": "apify",
  "aiCandidateMultiplier": 2,
  "alertMinPriority": "high",
  "webhookBatchSize": 1,
  "dedupeAcrossRuns": true,
  "dedupeStoreName": "reddit-brand-monitoring-ai-seen",
  "itemsList": [
    {
      "id": "t3_1fq2a7x",
      "parsedId": "1fq2a7x",
      "dataType": "post",
      "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/",
      "username": "sample_user_1",
      "parsedCommunityName": "productivity",
      "communityName": "r/productivity",
      "title": "Looking for an alternative to Notion that works offline",
      "body": "I love the databases but Notion is so slow on my laptop and useless on the train without wifi. Tried Obsidian but I miss the tables. What are you all using instead of Notion in 2026?",
      "createdAt": "2026-09-25T08:12:00.000Z",
      "upVotes": 48,
      "numberOfComments": 37,
      "flair": "Software",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp3k9d2",
      "parsedId": "lp3k9d2",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/lp3k9d2/",
      "parentId": "t3_1fq2a7x",
      "username": "sample_user_2",
      "communityName": "r/productivity",
      "category": "productivity",
      "body": "I switched from Notion to Obsidian last month. The offline sync is so much faster, but I really miss Notion's database views.",
      "createdAt": "2026-09-25T09:40:00.000Z",
      "upVotes": 21,
      "numberOfReplies": 3,
      "scrapedAt": "2026-09-25T10:00:00.000Z"
    },
    {
      "id": "t3_1fpx0c4",
      "parsedId": "1fpx0c4",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/",
      "username": "sample_user_3",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "Notion AI keeps timing out on large databases — anyone else?",
      "body": "Since the last update every Q&A query on our 4k-row database fails after 30 seconds. We pay for the Business plan and support hasn't answered in 5 days. Is this a known bug?",
      "createdAt": "2026-09-24T17:05:00.000Z",
      "upVotes": 132,
      "numberOfComments": 41,
      "flair": "Bug",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t3_1fpq8m1",
      "parsedId": "1fpq8m1",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fpq8m1/feature_request_native_gantt_dependencies/",
      "username": "sample_user_4",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "Feature request: native Gantt dependencies in Notion timelines",
      "body": "It would be great if Notion timelines could link tasks so moving one shifts the others. Right now we keep a separate tool just for dependencies.",
      "createdAt": "2026-09-23T11:30:00.000Z",
      "upVotes": 64,
      "numberOfComments": 12,
      "flair": "Request",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp1z7qa",
      "parsedId": "lp1z7qa",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/SaaS/comments/1fp9d2e/what_tools_run_your_startup/lp1z7qa/",
      "parentId": "t1_lp1y001",
      "username": "sample_user_5",
      "communityName": "r/SaaS",
      "category": "SaaS",
      "body": "We run the whole company wiki and onboarding in Notion and I'd recommend it to any small team, the templates saved us weeks.",
      "createdAt": "2026-09-24T21:15:00.000Z",
      "upVotes": 15,
      "numberOfReplies": 1,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp0aa11",
      "parsedId": "lp0aa11",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/philosophy/comments/1fo7u3b/free_will_and_determinism/lp0aa11/",
      "parentId": "t3_1fo7u3b",
      "username": "sample_user_6",
      "communityName": "r/philosophy",
      "category": "philosophy",
      "body": "The notion of free will only makes sense if we accept some form of compatibilism.",
      "createdAt": "2026-09-24T12:00:00.000Z",
      "upVotes": 9,
      "numberOfReplies": 2,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp2bot9",
      "parsedId": "lp2bot9",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/lp2bot9/",
      "parentId": "t3_1fpx0c4",
      "username": "AutoModerator",
      "communityName": "r/Notion",
      "category": "Notion",
      "body": "Thanks for posting to r/Notion! Please make sure your post follows the rules.",
      "createdAt": "2026-09-24T17:05:30.000Z",
      "upVotes": 1,
      "numberOfReplies": 0,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t3_1fn4del",
      "parsedId": "1fn4del",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fn4del/deleted/",
      "username": "[deleted]",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "[deleted by user]",
      "body": "[removed]",
      "createdAt": "2026-09-22T07:00:00.000Z",
      "upVotes": 0,
      "numberOfComments": 0,
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "2qhb7",
      "dataType": "community",
      "url": "https://www.reddit.com/r/Notion/",
      "title": "Notion",
      "communityName": "r/Notion",
      "numberOfMembers": 310000,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    }
  ],
  "discoveryActorId": "trudax/reddit-scraper-lite",
  "discoveryInput": {},
  "discoveryTimeoutSecs": 600
}
```

# Actor output Schema

## `qualified` (type: `string`):

All qualified mentions as JSON, best-scoring first.

## `sheet` (type: `string`):

The same mentions as a spreadsheet.

## `runSummary` (type: `string`):

JSON record with the funnel (loaded -> filtered -> AI-assessed -> qualified), per-reason skip counts, the digest (per type / sentiment / subreddit, top pain points and feature requests, competitor share of voice, themes), source run statuses, charged events by type, free-tier mentions used and remaining, whether a budget limit was reached, webhook delivery counts and the dedupe store size.

# 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 = {
    "brandTerms": [
        "notion"
    ],
    "sourceMode": "list",
    "brandBrief": "Notion — the note-taking, docs and wiki app for teams (notion.so), not the word 'notion'. We want complaints, feature requests and people looking for an alternative.",
    "maxDiscoveryChargeUsd": 0.5,
    "maxItemsPerSearch": 75,
    "itemsList": [
        {
            "id": "t3_1fq2a7x",
            "parsedId": "1fq2a7x",
            "dataType": "post",
            "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/",
            "username": "sample_user_1",
            "parsedCommunityName": "productivity",
            "communityName": "r/productivity",
            "title": "Looking for an alternative to Notion that works offline",
            "body": "I love the databases but Notion is so slow on my laptop and useless on the train without wifi. Tried Obsidian but I miss the tables. What are you all using instead of Notion in 2026?",
            "createdAt": "2026-09-25T08:12:00.000Z",
            "upVotes": 48,
            "numberOfComments": 37,
            "flair": "Software",
            "over18": false,
            "isAd": false,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t1_lp3k9d2",
            "parsedId": "lp3k9d2",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/lp3k9d2/",
            "parentId": "t3_1fq2a7x",
            "username": "sample_user_2",
            "communityName": "r/productivity",
            "category": "productivity",
            "body": "I switched from Notion to Obsidian last month. The offline sync is so much faster, but I really miss Notion's database views.",
            "createdAt": "2026-09-25T09:40:00.000Z",
            "upVotes": 21,
            "numberOfReplies": 3,
            "scrapedAt": "2026-09-25T10:00:00.000Z"
        },
        {
            "id": "t3_1fpx0c4",
            "parsedId": "1fpx0c4",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/",
            "username": "sample_user_3",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "Notion AI keeps timing out on large databases — anyone else?",
            "body": "Since the last update every Q&A query on our 4k-row database fails after 30 seconds. We pay for the Business plan and support hasn't answered in 5 days. Is this a known bug?",
            "createdAt": "2026-09-24T17:05:00.000Z",
            "upVotes": 132,
            "numberOfComments": 41,
            "flair": "Bug",
            "over18": false,
            "isAd": false,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t3_1fpq8m1",
            "parsedId": "1fpq8m1",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fpq8m1/feature_request_native_gantt_dependencies/",
            "username": "sample_user_4",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "Feature request: native Gantt dependencies in Notion timelines",
            "body": "It would be great if Notion timelines could link tasks so moving one shifts the others. Right now we keep a separate tool just for dependencies.",
            "createdAt": "2026-09-23T11:30:00.000Z",
            "upVotes": 64,
            "numberOfComments": 12,
            "flair": "Request",
            "over18": false,
            "isAd": false,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t1_lp1z7qa",
            "parsedId": "lp1z7qa",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/SaaS/comments/1fp9d2e/what_tools_run_your_startup/lp1z7qa/",
            "parentId": "t1_lp1y001",
            "username": "sample_user_5",
            "communityName": "r/SaaS",
            "category": "SaaS",
            "body": "We run the whole company wiki and onboarding in Notion and I'd recommend it to any small team, the templates saved us weeks.",
            "createdAt": "2026-09-24T21:15:00.000Z",
            "upVotes": 15,
            "numberOfReplies": 1,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t1_lp0aa11",
            "parsedId": "lp0aa11",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/philosophy/comments/1fo7u3b/free_will_and_determinism/lp0aa11/",
            "parentId": "t3_1fo7u3b",
            "username": "sample_user_6",
            "communityName": "r/philosophy",
            "category": "philosophy",
            "body": "The notion of free will only makes sense if we accept some form of compatibilism.",
            "createdAt": "2026-09-24T12:00:00.000Z",
            "upVotes": 9,
            "numberOfReplies": 2,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t1_lp2bot9",
            "parsedId": "lp2bot9",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/lp2bot9/",
            "parentId": "t3_1fpx0c4",
            "username": "AutoModerator",
            "communityName": "r/Notion",
            "category": "Notion",
            "body": "Thanks for posting to r/Notion! Please make sure your post follows the rules.",
            "createdAt": "2026-09-24T17:05:30.000Z",
            "upVotes": 1,
            "numberOfReplies": 0,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "t3_1fn4del",
            "parsedId": "1fn4del",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fn4del/deleted/",
            "username": "[deleted]",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "[deleted by user]",
            "body": "[removed]",
            "createdAt": "2026-09-22T07:00:00.000Z",
            "upVotes": 0,
            "numberOfComments": 0,
            "over18": false,
            "isAd": false,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        },
        {
            "id": "2qhb7",
            "dataType": "community",
            "url": "https://www.reddit.com/r/Notion/",
            "title": "Notion",
            "communityName": "r/Notion",
            "numberOfMembers": 310000,
            "scrapedAt": "2026-09-25T09:00:00.000Z"
        }
    ],
    "discoveryInput": {}
};

// Run the Actor and wait for it to finish
const run = await client.actor("rich_minds/reddit-brand-monitoring-ai").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 = {
    "brandTerms": ["notion"],
    "sourceMode": "list",
    "brandBrief": "Notion — the note-taking, docs and wiki app for teams (notion.so), not the word 'notion'. We want complaints, feature requests and people looking for an alternative.",
    "maxDiscoveryChargeUsd": 0.5,
    "maxItemsPerSearch": 75,
    "itemsList": [
        {
            "id": "t3_1fq2a7x",
            "parsedId": "1fq2a7x",
            "dataType": "post",
            "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/",
            "username": "sample_user_1",
            "parsedCommunityName": "productivity",
            "communityName": "r/productivity",
            "title": "Looking for an alternative to Notion that works offline",
            "body": "I love the databases but Notion is so slow on my laptop and useless on the train without wifi. Tried Obsidian but I miss the tables. What are you all using instead of Notion in 2026?",
            "createdAt": "2026-09-25T08:12:00.000Z",
            "upVotes": 48,
            "numberOfComments": 37,
            "flair": "Software",
            "over18": False,
            "isAd": False,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t1_lp3k9d2",
            "parsedId": "lp3k9d2",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/lp3k9d2/",
            "parentId": "t3_1fq2a7x",
            "username": "sample_user_2",
            "communityName": "r/productivity",
            "category": "productivity",
            "body": "I switched from Notion to Obsidian last month. The offline sync is so much faster, but I really miss Notion's database views.",
            "createdAt": "2026-09-25T09:40:00.000Z",
            "upVotes": 21,
            "numberOfReplies": 3,
            "scrapedAt": "2026-09-25T10:00:00.000Z",
        },
        {
            "id": "t3_1fpx0c4",
            "parsedId": "1fpx0c4",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/",
            "username": "sample_user_3",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "Notion AI keeps timing out on large databases — anyone else?",
            "body": "Since the last update every Q&A query on our 4k-row database fails after 30 seconds. We pay for the Business plan and support hasn't answered in 5 days. Is this a known bug?",
            "createdAt": "2026-09-24T17:05:00.000Z",
            "upVotes": 132,
            "numberOfComments": 41,
            "flair": "Bug",
            "over18": False,
            "isAd": False,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t3_1fpq8m1",
            "parsedId": "1fpq8m1",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fpq8m1/feature_request_native_gantt_dependencies/",
            "username": "sample_user_4",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "Feature request: native Gantt dependencies in Notion timelines",
            "body": "It would be great if Notion timelines could link tasks so moving one shifts the others. Right now we keep a separate tool just for dependencies.",
            "createdAt": "2026-09-23T11:30:00.000Z",
            "upVotes": 64,
            "numberOfComments": 12,
            "flair": "Request",
            "over18": False,
            "isAd": False,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t1_lp1z7qa",
            "parsedId": "lp1z7qa",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/SaaS/comments/1fp9d2e/what_tools_run_your_startup/lp1z7qa/",
            "parentId": "t1_lp1y001",
            "username": "sample_user_5",
            "communityName": "r/SaaS",
            "category": "SaaS",
            "body": "We run the whole company wiki and onboarding in Notion and I'd recommend it to any small team, the templates saved us weeks.",
            "createdAt": "2026-09-24T21:15:00.000Z",
            "upVotes": 15,
            "numberOfReplies": 1,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t1_lp0aa11",
            "parsedId": "lp0aa11",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/philosophy/comments/1fo7u3b/free_will_and_determinism/lp0aa11/",
            "parentId": "t3_1fo7u3b",
            "username": "sample_user_6",
            "communityName": "r/philosophy",
            "category": "philosophy",
            "body": "The notion of free will only makes sense if we accept some form of compatibilism.",
            "createdAt": "2026-09-24T12:00:00.000Z",
            "upVotes": 9,
            "numberOfReplies": 2,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t1_lp2bot9",
            "parsedId": "lp2bot9",
            "dataType": "comment",
            "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/lp2bot9/",
            "parentId": "t3_1fpx0c4",
            "username": "AutoModerator",
            "communityName": "r/Notion",
            "category": "Notion",
            "body": "Thanks for posting to r/Notion! Please make sure your post follows the rules.",
            "createdAt": "2026-09-24T17:05:30.000Z",
            "upVotes": 1,
            "numberOfReplies": 0,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "t3_1fn4del",
            "parsedId": "1fn4del",
            "dataType": "post",
            "url": "https://www.reddit.com/r/Notion/comments/1fn4del/deleted/",
            "username": "[deleted]",
            "parsedCommunityName": "Notion",
            "communityName": "r/Notion",
            "title": "[deleted by user]",
            "body": "[removed]",
            "createdAt": "2026-09-22T07:00:00.000Z",
            "upVotes": 0,
            "numberOfComments": 0,
            "over18": False,
            "isAd": False,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
        {
            "id": "2qhb7",
            "dataType": "community",
            "url": "https://www.reddit.com/r/Notion/",
            "title": "Notion",
            "communityName": "r/Notion",
            "numberOfMembers": 310000,
            "scrapedAt": "2026-09-25T09:00:00.000Z",
        },
    ],
    "discoveryInput": {},
}

# Run the Actor and wait for it to finish
run = client.actor("rich_minds/reddit-brand-monitoring-ai").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 '{
  "brandTerms": [
    "notion"
  ],
  "sourceMode": "list",
  "brandBrief": "Notion — the note-taking, docs and wiki app for teams (notion.so), not the word '\''notion'\''. We want complaints, feature requests and people looking for an alternative.",
  "maxDiscoveryChargeUsd": 0.5,
  "maxItemsPerSearch": 75,
  "itemsList": [
    {
      "id": "t3_1fq2a7x",
      "parsedId": "1fq2a7x",
      "dataType": "post",
      "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/",
      "username": "sample_user_1",
      "parsedCommunityName": "productivity",
      "communityName": "r/productivity",
      "title": "Looking for an alternative to Notion that works offline",
      "body": "I love the databases but Notion is so slow on my laptop and useless on the train without wifi. Tried Obsidian but I miss the tables. What are you all using instead of Notion in 2026?",
      "createdAt": "2026-09-25T08:12:00.000Z",
      "upVotes": 48,
      "numberOfComments": 37,
      "flair": "Software",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp3k9d2",
      "parsedId": "lp3k9d2",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/productivity/comments/1fq2a7x/looking_for_an_alternative_to_notion_that_works/lp3k9d2/",
      "parentId": "t3_1fq2a7x",
      "username": "sample_user_2",
      "communityName": "r/productivity",
      "category": "productivity",
      "body": "I switched from Notion to Obsidian last month. The offline sync is so much faster, but I really miss Notion'\''s database views.",
      "createdAt": "2026-09-25T09:40:00.000Z",
      "upVotes": 21,
      "numberOfReplies": 3,
      "scrapedAt": "2026-09-25T10:00:00.000Z"
    },
    {
      "id": "t3_1fpx0c4",
      "parsedId": "1fpx0c4",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/",
      "username": "sample_user_3",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "Notion AI keeps timing out on large databases — anyone else?",
      "body": "Since the last update every Q&A query on our 4k-row database fails after 30 seconds. We pay for the Business plan and support hasn'\''t answered in 5 days. Is this a known bug?",
      "createdAt": "2026-09-24T17:05:00.000Z",
      "upVotes": 132,
      "numberOfComments": 41,
      "flair": "Bug",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t3_1fpq8m1",
      "parsedId": "1fpq8m1",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fpq8m1/feature_request_native_gantt_dependencies/",
      "username": "sample_user_4",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "Feature request: native Gantt dependencies in Notion timelines",
      "body": "It would be great if Notion timelines could link tasks so moving one shifts the others. Right now we keep a separate tool just for dependencies.",
      "createdAt": "2026-09-23T11:30:00.000Z",
      "upVotes": 64,
      "numberOfComments": 12,
      "flair": "Request",
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp1z7qa",
      "parsedId": "lp1z7qa",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/SaaS/comments/1fp9d2e/what_tools_run_your_startup/lp1z7qa/",
      "parentId": "t1_lp1y001",
      "username": "sample_user_5",
      "communityName": "r/SaaS",
      "category": "SaaS",
      "body": "We run the whole company wiki and onboarding in Notion and I'\''d recommend it to any small team, the templates saved us weeks.",
      "createdAt": "2026-09-24T21:15:00.000Z",
      "upVotes": 15,
      "numberOfReplies": 1,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp0aa11",
      "parsedId": "lp0aa11",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/philosophy/comments/1fo7u3b/free_will_and_determinism/lp0aa11/",
      "parentId": "t3_1fo7u3b",
      "username": "sample_user_6",
      "communityName": "r/philosophy",
      "category": "philosophy",
      "body": "The notion of free will only makes sense if we accept some form of compatibilism.",
      "createdAt": "2026-09-24T12:00:00.000Z",
      "upVotes": 9,
      "numberOfReplies": 2,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t1_lp2bot9",
      "parsedId": "lp2bot9",
      "dataType": "comment",
      "url": "https://www.reddit.com/r/Notion/comments/1fpx0c4/notion_ai_keeps_timing_out_on_large_databases/lp2bot9/",
      "parentId": "t3_1fpx0c4",
      "username": "AutoModerator",
      "communityName": "r/Notion",
      "category": "Notion",
      "body": "Thanks for posting to r/Notion! Please make sure your post follows the rules.",
      "createdAt": "2026-09-24T17:05:30.000Z",
      "upVotes": 1,
      "numberOfReplies": 0,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "t3_1fn4del",
      "parsedId": "1fn4del",
      "dataType": "post",
      "url": "https://www.reddit.com/r/Notion/comments/1fn4del/deleted/",
      "username": "[deleted]",
      "parsedCommunityName": "Notion",
      "communityName": "r/Notion",
      "title": "[deleted by user]",
      "body": "[removed]",
      "createdAt": "2026-09-22T07:00:00.000Z",
      "upVotes": 0,
      "numberOfComments": 0,
      "over18": false,
      "isAd": false,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    },
    {
      "id": "2qhb7",
      "dataType": "community",
      "url": "https://www.reddit.com/r/Notion/",
      "title": "Notion",
      "communityName": "r/Notion",
      "numberOfMembers": 310000,
      "scrapedAt": "2026-09-25T09:00:00.000Z"
    }
  ],
  "discoveryInput": {}
}' |
apify call rich_minds/reddit-brand-monitoring-ai --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rich_minds/reddit-brand-monitoring-ai"
        }
    }
}
```

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/pcJpnSGFeJFmhuHNt/builds/ZQLeNX6bHtDEWxXli/openapi.json
