# Threads Brand Monitoring: AI Sentiment & Mention Alerts (`rich_minds/threads-brand-monitoring-ai`) Actor

First 25 mentions free. Threads brand monitoring: Threads mentions ranked with AI sentiment, priority and a reply draft — off-topic posts never billed by us. Spot Threads buying signals; MCP-ready. Free demo on any plan; live search runs on your Apify account, any plan that runs Store Actors.

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

## Pricing

from $3.50 / 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

## Threads Brand Monitoring: AI Sentiment & Mention Alerts

**Every new Threads post about your brand, ranked — the one to answer first, every week.**

⚡ First **25 mentions free** · 💵 **$0.0035** per qualified mention · 🤖 **$0.009** with AI assessment · ⏱️ demo in seconds

![One row per Threads mention of your brand — priority, type, sentiment, relevance, author and the action to take](https://api.apify.com/v2/key-value-stores/6BxPX9Kwf9XuSRPcQ/records/shortlist.svg)

> **Try it in 30 seconds.** Click **Try it** — the form is pre-filled with 8 sample posts, free. Then type your brand
> and press **Start**: the first **25 qualified mentions** are free; off-topic posts cost nothing here.
> → [How to use it](#-how-to-use-it) · [What a run costs](#-pricing--what-a-run-really-costs) · [What the AI adds](#-what-the-ai-tier-adds) · [Run it weekly](#-run-it-weekly--a-threads-monitor-on-a-schedule)

### ⚡ At a glance

| | |
|---|---|
| **What you get** | Threads posts really about your brand or competitors, best first: priority, type, sentiment, reach, the action, a verbatim quote, the author's profile |
| **You provide** | your brand (e.g. Acme), optionally competitors, your @handle and a one-line brief |
| **Output** | a ranked sheet (Excel / CSV / Google Sheets) and an e-mail / Slack digest with share of voice and the trend |
| **Typical run** | 1 brand term × 80 Threads posts → ≈ 27 qualified mentions (1 in 3, estimate) in ≈ 2 minutes (estimate) |
| **Cost of that run** | $0.51 rules only · $0.80 with the AI ($0.42 Threads search + 27 × $0.0035 / 27 × $0.014 here) — your first run looks back 30 days, capped at $0.50 search spend, 25 mentions free |
| **Agencies** | 10 clients weekly ≈ $53 a month all in (AI, a digest, webhook and white-label report per client) vs 10 Hootsuite seats = $990 |
| **Free tier** | first 25 qualified mentions per account, no start fee |
| **Keys / setup** | Plan with Apify model access: no key needed on it · Other plans: your own key — free Gemini / Groq = 1–3 live AI verdicts per run, paid = every mention; your first 25 real mentions: live AI on our trial key || **Works with** | Schedules, e-mail, Slack, Teams, Google Chat, Discord, webhooks, Sheets, Make / n8n / Zapier, MCP & AI agents |

### 🎯 What this Actor does

It runs the **automation-lab Threads Scraper** (0 % failed runs) on your account for your brand, competitor, @handle
and #hashtag terms and keeps only mentions worth acting on — a priority, the action to take, a verbatim quote, the
author's profile link. A delivered post is never re-delivered or re-charged.

#### 🔎 Threads mentions — noise and repeats dropped free

"The notion of free will" is not Notion: your exclude phrases, link-only posts, hashtag stuffing, giveaways, copy-paste
waves, reposts, your own accounts and posts outside the date window never reach the AI or the bill. After a live run
the digest proposes the exclude phrases and product words that would have dropped its borderline posts.

#### 😊 Threads sentiment analysis with a verbatim quote

Sentiment (negation- and emoji-aware) and type from keyword tables; the AI tier reads your one-line brief, confirms the
post is about your brand, writes the insight and copies the sentence that proves it.

#### 💰 Threads buying signals — find customers on Threads

"Any recommendations?", "alternative to X" are buying intent; a competitor's unhappy user is a sales follow-up. The AI
drafts a ≤ 280-character reply from your brief, never posted for you. Preset: Competitor leads.

#### 🏢 Agencies — every client in one run, a report to forward each

Watchlists: one entry per client (terms, brief, webhook, logo), one digest and memory each. The white-label report
option adds a page per client with new mentions (their name and logo, share of voice, the 3 to act on first) for
$0.05. Preset: Agency, 3 client brands.

#### 🚨 PR teams — a negative spike in hours, not next week

The Crisis watch preset searches the last day, 20 posts per term, alerts from medium priority — schedule it every 3
hours and the digest flags a negative spike the same afternoon; only new mentions are billed.

### 🚀 How to use it

1. **Click Try it** — 8 sample Notion posts run free: 6 qualified, the homonym and the spam dropped.
2. **Type your brand** (plus competitors and your @handle) and a one-line brief — your brand replaces the sample and
   starts the live Threads search on your account, capped by Max source spend ($0.50).
3. **Keep AI assessment on and press Start** — your 25 free mentions show the AI tier (insight, quote, reply draft);
   the first run of a search looks back 30 days.
4. **Open the Act now view**, add your e-mail and **schedule it weekly** — your first real run links a saved task.

![The Act now view — priority, action, type, author, followers, the quote and the AI reply draft](https://api.apify.com/v2/key-value-stores/6BxPX9Kwf9XuSRPcQ/records/act-now.svg)

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

### 🆚 Why this instead of Search Threads By Keywords?

#### vs other Threads monitors in the same Store search

Their cards and READMEs, 2026-09-28:

| | **This Actor** | [watcher.data Search Threads By Keywords](https://apify.com/watcher.data/search-threads-by-keywords) | [futurizerush/meta-threads-scraper](https://apify.com/futurizerush/meta-threads-scraper) | [lergassy/threads-monitor](https://apify.com/lergassy/threads-monitor) | [burbn/threads-search-scraper](https://apify.com/burbn/threads-search-scraper) | [themineworks/threads-search-scraper](https://apify.com/themineworks/threads-search-scraper) |
|---|---|---|---|---|---|---|
| **Price** | $0.0035 · $0.009 AI per qualified mention, 25 free | $0.008 per post | $0.0025 per row + $0.02 per run | $0.01 per new post | $0.02 per post + $0.04 start | $0.001 per post + $0.005 start |
| **100 clean mentions** | $1.87 rules only · $2.92 AI (search included) | $2.40 for ≈ 300 raw posts, 200 off-topic | $0.77 for 300 raw rows, same reading | ≈ $3.00, every new post billed | ≈ $6.04 | ≈ $0.31, no relevance check |
| **Relevance / sentiment / type** | yes — rules, AI on top | no — raw keyword hits | no | no (its README) | no | no (its README) |
| **Only new mentions** | yes | no — the same posts again | no | yes | no | yes (monitor mode) |

A raw keyword monitor is cheaper when every hit is about you; this pays off when your name is a common word.

<details><summary>vs running a Threads scraper yourself — the sources, failed runs and users</summary>

| | [`watcher.data/search-threads-by-keywords`](https://apify.com/watcher.data/search-threads-by-keywords) | [`futurizerush/meta-threads-scraper`](https://apify.com/futurizerush/meta-threads-scraper) | **This Actor** |
|---|---|---|---|
| **Price** | $0.008 per post · 388 users · rating 3.44 | $0.0025 per row + $0.02 per run · 1,253 users | $0.0035 / $0.009 AI per qualified mention, 25 free |
| **Same 100 mentions, all in** | $2.40 for ≈ 300 raw posts | $0.77 for 300 raw rows, same reading | ranked, junk dropped: $1.87 rules only · $2.92 AI; $1.12 / $2.17 on the futurizerush source |
| **Failed runs, 30 days** | 0.28 % | 3.1 % (Store API, 2026-09-28) | a failed search says why, nothing charged here |

Our default source: `automation-lab/threads-scraper` (1,040 users, rating 4.24, $0.005 per post + $0.02 per run, 0 %
failed runs); `igview-owner` (454 users) charges $0.02 per row.

</details>

**💸 Hootsuite Listening alternative — no seat.** Hootsuite starts at $99/user/month, Threads only on its Listening
upgrade ([hootsuite.com/plans](https://www.hootsuite.com/plans), checked 2026-09-28); Brand24 ($199/month,
[brand24.com/prices](https://brand24.com/prices/)), Awario ($29/month, [awario.com/pricing](https://awario.com/pricing/))
and Syften ($29.95/month, [syften.com](https://www.syften.com/)) do not list Threads (checked 2026-09-28). A weekly
Threads monitor here: ≈ $4.40 a month rules only, ≈ $6.80 with the AI, search included.

**The free Threads in-app search** wins for a one-off look at one keyword; it has no export, schedule, memory,
off-topic filter, sentiment or priority.

### 💵 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, type, sentiment, priority, action, quote | **$0.0035** |
| `qualified-mention-ai` | AI on — plus the AI brand check, insight, reply draft | **$0.009** |
| `client-report` | opt-in (white-label report per client): one page per client watchlist with new mentions | **$0.05** |

**One free tier:** your first 25 qualified mentions are free, whatever the tier.

**Never charged by us:** off-topic posts, homonyms, spam, reposts, your own posts, mentions below the minimum
relevance or priority, unselected types or sentiments, repeats from earlier runs, the digest, alerts, demo rows. No
start fee. The Threads search bills your Apify account per post it returns — capped by Max source spend.

**How that compares** — below the $0.004 Store median: 0.88× the median of the 7 Threads Actors in the same Store
search (and of 13 researched Threads scrapers), and one mention replaces ≈ 3 raw posts: ≈ $0.0012 per raw-row
equivalent.

**Worked example** — 1 term × 80 posts: the source (automation-lab Threads Scraper) $0.42 on your account → ≈ 27
qualified (1 in 3, estimate) × $0.0035 = $0.09 → **$0.51 total, ≈ $0.019 all-in per qualified mention**. AI on: 27 ×
$0.009 + ≈ $0.14 tokens → **$0.80 total, ≈ $0.030 all-in per mention**. The futurizerush source cuts the search to
$0.22; the watcher.data deep search costs $0.64. The **first run** of a search looks back 30 days instead of 7 (up to
240 posts per term), still stopped at your $0.50 cap: ≈ 96 posts → ≈ 32 mentions, 25 of them free — a month of
signal at once; the weekly runs after it bill only what is new.

**AI tier, all in:** ≈ $0.014 per mention ($0.009 + ≈ $0.005 tokens: 1,744 in / 620 out measured on the AI example,
priced at Claude Haiku 4.5 rates) — 4× the basic price, billed via Apify's model access or your own key.

**At volume** — an agency, 10 client watchlists weekly, 120 posts each: ≈ $6.02 search + 400 × $0.014 + 10 client
reports × $0.05 ≈ $12.12 a week (≈ $53 a month, AI on); ≈ $9.12 a week on the futurizerush source.

### 🤖 What the AI tier adds

<details><summary>The same mention as JSON — AI off vs AI on</summary>

The same mention, AI **off** (the demo run):

```json
{"authorHandle": "maya.builds", "ruleScore": 70, "fitScore": null, "score": 70, "label": "hot",
 "mentionType": "complaint", "priority": "high", "suggestedAction": "escalate_support", "insight": null,
 "replyDraft": null, "assessedBy": "rules"}
```

AI **on** — the AI example's row (run 2026-09-28 with an own Gemini key, google:gemini-3.8-flash; a buyer's run uses
anthropic/claude-haiku-4.5 — wording varies by model, fields and grounding do not):

```json
{"authorHandle": "maya.builds", "ruleScore": 70, "fitScore": 95, "score": 95, "label": "hot", "isAboutBrand": true,
 "mentionType": "complaint", "sentiment": "negative", "priority": "high", "suggestedAction": "escalate_support",
 "insight": "Author reports Notion crashes on iPad after the recent update, resulting in lost meeting notes, and asks if it is a known bug.",
 "evidenceQuote": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes.",
 "replyDraft": "We're so sorry to hear about the crashes and lost notes! Please reach out to our team at notion.so/help so we can look into this iPad bug right away and help see if page history can recover your notes.",
 "assessedBy": "ai"}
```

</details>

The AI confirms it is your product, says what went wrong and drafts the reply — ≈ 3 minutes per mention by hand
(timed: reading, labelling and answering the 8 demo posts, 2026-09-28).

**Try the AI on any plan:** the demo shows labelled sample AI verdicts; on a plan without model access your first 25
real mentions (your free ones) get live AI verdicts on our trial key — when it is busy the status says "Trial AI busy"
and those rows keep their rule score, billed as basic. After that, pick "My own API key" under AI model access — a free
Gemini key ([aistudio.google.com/apikey](https://aistudio.google.com/apikey)) assesses a few mentions per run before
its rate limit (the rest keep their rule score, billed as basic rows); a paid Gemini / Groq key (billing on) assesses
every mention.

### ⚙️ 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 post; your brand next to the sample = live search |
| `sourceMode` | `actor` | `dataset` | `list` | `actor` | Live search, a post dataset, or pasted posts; with nothing to search (`{}`) the free demo runs, nothing charged, the source never started |
| `brandBrief` | string | — | What your brand is — the AI's homonym check and reply voice |
| `minScore` | 0–100 | `50` | Relevance below it = not delivered, not charged |
| `maxQualified` | integer | `100` | Cap on output and on this Actor's charge |
| `maxDiscoveryChargeUsd` | number | `0.5` | Cap on the Threads search's spend on your account |
| `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 |
| `maxPostsPerTerm` | integer | `80` | Posts per term — the source cost driver |
| `discoveryActorId` | enum | `automation-lab/threads-scraper` | Or `watcher.data/search-threads-by-keywords` (deep search) / `futurizerush/meta-threads-scraper` |
| `clientReports` | boolean | `false` | A white-label report per client watchlist, $0.05 each |
| `alertMinPriority` | enum | `high` | Which mentions the webhook alerts on |

In the **Input** tab: `handles`, `hashtags`, `watchlists`, `negativeTerms`, `contextTerms`, `mentionTypes`,
`sentiments`, `minPriority`, `languages`, `maxAgeDays`, `postedAfter`, `minAuthorFollowers`, `excludeReposts`,
`excludeReplies`, `excludeOwnHandles`, `targetFlags`, `suppressionList` (post URLs / handles to skip),
`includeReplyDraft`, `sortBy`, the model, `slackWebhookUrl`, `discordWebhookUrl`, `teamsWebhookUrl`,
`googleChatWebhookUrl`, `webhookUrl` / `webhookHeaders` / `webhookBatchSize`, `resetState`, `dedupeStoreName`,
`historyDatasetName`.

</details>

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

| Flag (`targetFlags` value) | Meaning |
|---|---|
| `complaint` | complains: broken, bug, crash, refund, cancel, outage |
| `question` | asks a question about the brand or its product |
| `buying_intent` | looking to buy / switch: "any recommendations?", "alternative to", "worth it?" |
| `comparison` | compares: "X vs Y", "better than", "instead of" |
| `feature_request` | asks for a feature: "I wish it had", "please add" |
| `praise` | praises or recommends |
| `news_share` | shares news: launch, announcement, release |
| `negative` | negative sentiment toward the brand |
| `competitor_mentioned` | one of your competitorTerms is named |
| `brand_tagged` | your brand is @-tagged or used as a #hashtag |
| `links_to_brand` | links to your brand's domain |
| `high_reach` | ≥ 10,000 views (or followers when views are missing) |
| `verified_author` | the author is verified |
| `recent` | posted in the last 24 hours |
| `unanswered` | no replies yet — the first answer gets seen |
| `ambiguous_term` | a common-word brand without product context (lower relevance) |

</details>

### 📤 Output

One dataset item per qualified mention. **Views**: `Mentions (best first)` (with when it was posted and its reach),
`Act now` (action, quote, draft, profile) and `Competitor mentions`.

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

```json
{
  "itemId": "10f368f39912", "postId": "3456789012345678901", "name": "@maya.builds: Notion keeps crashing on my iPad since the last update and I lost a whole page o",
  "url": "https://www.threads.com/@maya.builds/post/DQa1Notion01", "platform": "threads",
  "text": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes. Support, is this a known bug? Seriously frustrating.",
  "postedAt": "2026-09-27T08:12:00Z", "authorHandle": "maya.builds", "authorName": "Maya R.",
  "authorProfileUrl": "https://www.threads.com/@maya.builds", "authorVerified": false, "authorFollowers": 12400,
  "likes": 184, "replies": 0, "reposts": 12, "quotes": 3, "views": 21400, "engagementRate": 0.0093, "reach": 21400,
  "watchlist": "default", "watchTerm": "Notion", "watchTermKind": "brand", "matchedTerms": ["Notion"],
  "isAboutBrand": true, "sentiment": "negative", "mentionType": "complaint",
  "evidenceQuote": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes.",
  "competitorsMentioned": [], "priority": "high", "suggestedAction": "escalate_support", "assessedBy": "ai",
  "flags": ["complaint", "negative", "high_reach", "unanswered"], "ruleScore": 70, "fitScore": 95, "score": 95,
  "label": "hot", "sourceActor": "list", "chargedEvent": "demo", "billedAs": "qualified-mention-ai",
  "dedupeKey": "threads:3456789012345678901"
}
```

| Field | Description |
|---|---|
| `itemId`, `postId`, `dedupeKey` | Identity: short hash, the source's post id, `<platform>:<postId>` |
| `name`, `url`, `platform`, `text`, `postedAt` | The post: a display line, the canonical link, threads / x / reddit / instagram, text (≤ 2,000 chars), time |
| `authorHandle`, `authorName`, `authorId`, `authorProfileUrl`, `authorVerified`, `authorFollowers`, `authorFollowing` | The author; `authorProfileUrl` is where you reply or DM |
| `likes`, `replies`, `reposts`, `quotes`, `views`, `engagementRate`, `reach` | Engagement (null when the source lacks it — never a guessed 0); reach = views, else followers, null when neither |
| `hashtags`, `mentionedHandles`, `links`, `mediaUrls`, `language`, `isReply`, `isRepost` | As the source published them; `isReply` / `isRepost` null when it does not say |
| `watchlist`, `watchTerm`, `watchTermKind`, `matchedTerms` | Which of your terms matched (brand / handle / hashtag / competitor), and the client watchlist |
| `relevanceReasons`, `isAboutBrand` | Why the relevance (`score`) is what it is (AI when assessed, else rules) |
| `sentiment`, `mentionType`, `priority`, `suggestedAction`, `actionReason` | How they feel, what it is, what to do and why |
| `insight`, `evidenceQuote`, `competitorsMentioned`, `replyDraft` | AI insight, verbatim sentence, competitors named, reply draft |
| `assessedBy`, `aiModel`, `flags`, `targetFlagsMatched` | rules / ai, the model, rule flags |
| `ruleScore`, `fitScore`, `score`, `label` | Rule relevance, AI relevance (null on basic), ranking score, hot / warm / cold |
| **Canonical fields** | `url` and `score` (the relevance 0–100) are the fields to map |
| **Which score to trend on** | `ruleScore` — the same rule scale on every row and every run; `score` is the AI relevance where `aiModel` is set, so sort one run on `score` but threshold and trend across runs on `ruleScore` |
| `sourceActor`, `sourceKeyword`, `firstSeenAt`, `chargedEvent`, `billedAs`, `scrapedAt` | Source, the search term it reported, first delivery, billing (`billedAs` = the price tier, also on free rows) |

</details>

**Upsert key for a CRM or Sheet:** `dedupeKey` — platform + post id (`threads:3456789012345678901`), the cross-run
memory's key; `itemId` is its short hash.

**Which record to read:** `OUTPUT` is the full run record; `RUN_SUMMARY` is the same record. It holds the funnel,
`chargedEvents`, `aiCoverage` and `digest` — per watchlist the counts by type / sentiment / priority, share of voice,
a negative-spike flag and the 3 mentions to act on first, plus `suggestedTerms`, `scanCapHit` and `clientReports`. The
**`DIGEST`** record (Markdown, plus `DIGEST-<client>`), a client-ready **`REPORT`** page (`OUTPUT.reportUrl`) and,
with `clientReports`, one white-label `REPORT-<client>` per client sit next to it.

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

### 🔁 Run it weekly — a Threads monitor on a schedule

1. **Open the saved task and click Schedule** after your first real run (its status links it) with your address in
   `notifyEmail` — every run with new mentions e-mails the digest, no Slack or Zapier needed.
2. Leave `dedupeAcrossRuns: true` — you pay **only for what is new**, remembered per watch term: adding a competitor
   later keeps the others' memory. The digest says what changed: "vs last run: mentions 41 → 55, complaints 3 → 6".
3. A scheduled run widens `maxAgeDays` to the days since its last run and doubles `maxPostsPerTerm` — raise
   `maxDiscoveryChargeUsd` to $1. Chat webhooks post the digest; `historyDatasetName` keeps one log across months; the
   Google Sheets integration pushes every new mention into your copy of the [tracker sheet](https://api.apify.com/v2/key-value-stores/6BxPX9Kwf9XuSRPcQ/records/mentions-tracker.csv)
   (`dedupeKey` first to upsert on, your status / next action / owner columns next to it).
4. **Busy brand?** A run that fills `maxPostsPerTerm` says so (`OUTPUT.scanCapHit`): schedule it **daily** with the
   `busy-brand-daily` preset (30 posts per term, last 24 h) instead of missing most of the week.

Weekly cost is the new mentions only: 1 brand term × 160 posts ≈ $0.82 search → ≈ 53 new (1 in 3, estimate) ≈ $1.01
a week rules only, ≈ $1.56 with the AI. From week two the memory drops repeats — new mentions follow that week's posts.

#### 🎯 Try it for your niche

Pick one in **Start from a ready niche search** (`preset`) and press Start — your own values win.

<details><summary>The seven ready searches</summary>

| Niche | What it looks for | Preset |
|---|---|---|
| SaaS brand watch | Linear vs Jira / Asana, "linear algebra" excluded | `saas-brand-watch` |
| Support complaint queue | complaints, questions, feature requests, reply drafts | `support-complaint-queue` |
| Competitor buying intent | Canva vs Figma — buying intent, comparisons | `competitor-buying-intent` |
| Agency, 3 clients in one run | Linear, Duolingo, Canva — a digest and memory each | `agency-watchlists` |
| Busy brand, daily | Starbucks, last 24 h, 30 posts per term | `busy-brand-daily` |
| PR crisis watch, every 3 hours | United Airlines, last day, 20 posts per term, alerts from medium | `crisis-watch` |
| Competitor leads | HubSpot vs Salesforce / Pipedrive — buyers to follow up | `competitor-leads` |

</details>

### 🔌 Integrations, automation and API

- **Webhook alerts** — `webhookUrl` POSTs each mention at or above `alertMinPriority` (default `high`); a watchlist's
  own `webhookUrl` gets its client's mentions. **Zendesk / Linear**: a Make / n8n step turns `escalate_support` into a
  ticket, `dedupeKey` as the external id.
- **HubSpot / Pipedrive (CRM)** — a Make / Zapier "create or update" step on `sales_follow_up` rows: contact =
  `authorName` + `authorProfileUrl`, note = `text` + `insight` + `replyDraft`, **upsert on `dedupeKey`**.
- **Google Sheets / Slack / MCP** — the **Integrations** tab, `slackWebhookUrl`, or any MCP client; `{}` runs the demo.

<details><summary>Python, JavaScript, MCP and the webhook payload</summary>

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/threads-brand-monitoring-ai").call(
    run_input={
        # free first call instead: {} (the demo) or {"sourceMode": "list", "itemsList": [{"url": "…", "text": "…"}]}
        "brandTerms": ["Acme"], "competitorTerms": ["Globex"],
        "brandBrief": "Acme — the CRM for small agencies.",
        "maxQualified": 50,
        "maxDiscoveryChargeUsd": 0.5,  # spend cap on your account for the Threads search
    },
    timeout_secs=3600,  # the AI path with your own key can take minutes (FAQ)
    # build="0.1.4",  # pin the build number your pipeline was tested with (Changelog below); omit for the latest
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["score"], item["label"], item["priority"], item["url"])
```

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('rich_minds/threads-brand-monitoring-ai').call({
    // free first call instead: {} (the demo)
    brandTerms: ['Acme'], competitorTerms: ['Globex'], brandBrief: 'Acme — the CRM for small agencies.',
    maxQualified: 50, maxDiscoveryChargeUsd: 0.5, // spend cap for the Threads search
}, { timeout: 3600 /* , build: '0.1.4' — pin the build number your pipeline was tested with */ });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((i) => [i.score, i.label, i.url]));
```

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

Then ask: *"Run threads-brand-monitoring-ai with `{}` first (free), then for `brandTerms: ["Acme"]` with
`maxDiscoveryChargeUsd: 0.5`; list the high-priority complaints and buying questions."*

**Minimal agent input:** `{"brandTerms": ["Acme"], "competitorTerms": ["Globex"], "brandBrief": "Acme — the CRM for small agencies.", "maxQualified": 20, "maxDiscoveryChargeUsd": 0.5}`

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

</details>

#### Which call runs what — demo, live search or your own rows

<details><summary>Input shape → <code>OUTPUT.mode</code> → can it charge</summary>

| Input shape | `OUTPUT.mode` | Can it charge? |
|---|---|---|
| `{}` or the untouched form (the sample posts) | `demo` | no — sample rows are `chargedEvent: demo` |
| the sample posts + your own `brandTerms` typed next to them | `live` | yes — per qualified mention; the Threads search on your account, capped by `maxDiscoveryChargeUsd` |
| `brandTerms` (or `competitorTerms`, `handles`, `watchlists`) with `sourceMode: "actor"` | `live` | yes — as above |
| `sourceMode: "list"` + your own `itemsList` posts | `list` | yes — per qualified mention, no search run |
| `sourceMode: "dataset"` + `datasetId` | `dataset` | yes — per qualified mention, no search run |

</details>

#### List-mode rows — what a pasted record needs

`sourceMode: "list"` runs on any Apify plan: paste posts you already have into `itemsList` (Threads, X, Reddit or
Instagram rows in the source's own field names).

<details><summary>The fields of a pasted post and what each switches on</summary>

| Field | Needed? | What it enables |
|---|---|---|
| `url` | required | the row's link, `platform` and the dedupe key |
| `text` | required | every rule and the AI (`text_content`, `fullText`, `caption`, `body` work too) |
| `id` | optional | a stable `postId` / `dedupeKey` (else the URL's last segment) |
| `author` | optional | `authorHandle` and `authorProfileUrl` |
| `created_at` | optional | `postedAt`, recency, the `postedAfter` filter |
| `like_count`, `reply_count`, `repost_count`, `quote_count`, `view_count` | optional | engagement, `reach`, priority |
| `follower_count`, `verified` | optional | reach without views, `minAuthorFollowers`, `verified_author` |
| `lang`, `is_reply`, `is_repost`, `hashtags`, `mentions`, `urls` | optional | the language / reply / repost filters, tag and domain matches |

</details>

#### Run outcomes — what your integration sees

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

| 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 | — |
| Nothing matched (the demo too) | SUCCEEDED | empty | `qualified: 0` | no | loosen `minScore` / filters |
| Demo text still in place | SUCCEEDED | empty | `inputNeeded` | no | replace `brandTerms` with your brand |
| Invalid input | FAILED | empty | — | no | fix the field the status message names |
| Your plan cannot run the Threads search (a Store Actor) | SUCCEEDED | empty | `sourceError`, `sourceRefused: "plan"` | no | on any plan paste [list-mode rows](#list-mode-rows--what-a-pasted-record-needs), or a plan that runs Store Actors |
| Source failed (nothing loaded: crash, timeout) | FAILED | empty | `sourceError` | no | follow the reason in the status message |
| Source partial (the search timed out / was aborted after scraping) | SUCCEEDED | qualified mentions from the posts scraped | `sourceStatus` (`status`, `partial: true`) | per qualified mention | raise `discoveryTimeoutSecs` or lower `maxPostsPerTerm` |
| AI unavailable | SUCCEEDED | rule-scored mentions (the free demo: labelled sample AI verdicts, `aiModel: sample`) | `aiError`, `freeAiReserve`, `aiCoverage.sampleVerdicts` | 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`) and how
many the second pass rescued.

</details>

### 👥 Who is it for?

| You are… | You run it to… | Start with |
|---|---|---|
| Brand / social media manager | every post really about you, the complaint to answer first | `brandTerms`, `handles`, `notifyEmail` |
| Customer-support lead | complaints and bug reports to support within the hour | `mentionTypes`, `webhookUrl` |
| Founder / growth team | people asking for a tool like yours or comparing you with a rival | `competitorTerms`, `includeReplyDraft` |
| PR / agency | several clients in one run, a digest, webhook and white-label report each, negative spikes flagged | `watchlists`, `clientReports` |
| Developer / AI agent | typed, deduped Threads mentions via API / MCP | the minimal agent input |

### 🧠 How the AI works

One typed call per mention, grounded in the post; counts always come from code.

<details><summary>What the model sees, the grounding rules and the fallback</summary>

- **One typed call per mention** (post, reach, your brief, the rule baseline) for the verdict and the reply draft; one
  per watchlist for the digest's themes — counts always come from code.
- **Grounded** — a quote not found verbatim falls back to the rule sentence, competitors must appear in the text, an
  invalid label falls back to the rule label, `isAboutBrand: false` is dropped free.
- **Tokens where they matter** — the best rule-scored candidates first, up to `aiCandidateMultiplier` × `maxQualified`;
  default `anthropic/claude-haiku-4.5`. A model error never fails the run: the rule verdict stays, at the basic price.

</details>

### 🔒 Data, compliance and limits

Public Threads posts only — no login, no private accounts, no contact enrichment; missing counts stay null. Rule
sentiment and type are tuned on English, the AI reads any language. Use the output within Threads' terms and GDPR / CCPA.

### ❓ FAQ

**What will my first real search cost?** 1 brand term × `maxPostsPerTerm` 80 ≈ $0.42 in the source, capped by
`maxDiscoveryChargeUsd` ($0.50, form and API); ≈ 27 mentions qualify (1 in 3, estimate) — your 25 free ones and 2 paid.

**Is this a Search Threads By Keywords scraper?** It runs `automation-lab/threads-scraper` by default, or
`watcher.data/search-threads-by-keywords` (deep search) / futurizerush, for you; a dataset from any of them works in
`dataset` mode.

**How do I find customers on Threads with buying signals?** Add your rivals to `competitorTerms` and start from the
`competitor-leads` preset: "any recommendations?" and a rival's unhappy users arrive as `sales_follow_up` rows.

**Is it a Threads keyword scraper too?** Yes — text, author, counts and links per post, off-topic posts dropped.

**How do I track brand mentions on Threads every week?** Schedule the saved task — only new mentions.

**Can I monitor Threads for keywords other than my brand?** Yes: `hashtags`, `handles`, `competitorTerms`.

**Is this a Hootsuite Listening alternative?** For Threads, yes — per mention instead of a seat; X / Reddit /
Instagram datasets work in `dataset` mode; native X and Reddit searches are planned for 2026-11-30.

**Why pay when the Threads app search is free?** It adds the schedule, memory, off-topic filter, priority and alerts.

**How long does a run take?** One row per mode — size your `timeoutSecs` from it:

<details><summary>Run time per mode, with the <code>timeoutSecs</code> to set</summary>

| Mode | Time | `timeoutSecs` |
|---|---|---|
| Free demo (8 sample posts) | 0.1 s measured | 120 |
| Own posts (`list` / `dataset`), rules only | < 1 s per 100 posts (estimate) | 300 |
| Live search, rules only | ≈ 1–2 min per 80 posts (estimate) | 600 |
| AI via Apify's model access, or a paid own key | ≈ 5–10 s per mention, 8 at a time (estimate) | 1200 |
| AI with a free own key (`byok`) | measured 2026-09-28: ≈ 12.9–62 s per mention (free Gemini key ≈ 12.9–39.6 s, 6 of 6; free Groq `openai/gpt-oss-120b` key ≈ 62 s, 1 of 6) | 3600 |

Own-key throughput, measured 2026-09-28: a free Gemini key ≈ 1.5–4.6 mentions per minute (calls spaced 30 s after
the first rate limit); measured 2026-09-28, a free Groq key ≈ 1 per minute, 1 of 6 assessed before its rate limit. Size 50
own-key mentions at ≈ 3300 s (from the slowest pace, Groq). A rate-limited run stops the AI after 2 minutes of waiting and every row is still pushed; `OUTPUT.timing` has
every phase.

</details>

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

**Do rule-scored mentions use my free ones?** Yes, while the AI is unavailable — except the last 5 (the AI reserve),
kept so your first AI-assessed mentions are free too (`OUTPUT.chargeSplit.freeKeptForAi`).

**What does "qualified" mean?** It names your term, passed every free filter, is about you 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?** Not for the same watch term — delivered posts are remembered on your
account per term, so adding a competitor or a handle keeps the others' memory; only the new term starts its own
(`OUTPUT.dedupeStore.newTerms`). Each set of type filters keeps its own memory (`mentionTypes`, `sentiments`,
`languages`, `minPriority`, `targetFlags`): a daily complaints-only task and a weekly all-types task on the same brand
each receive every mention that passes their filters. `resetState` forgets it on purpose.

### 🧩 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:

- **[Reddit Brand Monitoring](https://apify.com/rich_minds/reddit-brand-monitoring-ai)** — watch the same brand on Reddit, the thread to answer first.
- **[Twitter Lead Generation](https://apify.com/rich_minds/twitter-lead-generation-ai)** — catch people on X asking for a tool like yours, with a reply draft, every week.
- **[LinkedIn Buying Intent Leads](https://apify.com/rich_minds/linkedin-intent-leads)** — catch the same "any recommendations?" buyers on LinkedIn.
- **[Google Reviews Analysis AI](https://apify.com/rich_minds/google-reviews-insights)** — see what your customers complain about in your Google reviews, and which to answer first.
- **[Website Change Monitor](https://apify.com/rich_minds/website-change-monitor-ai)** — see when a competitor you track changes its pricing pages.

### 🆘 Support

Open an issue on the Actor's page — buyer requests ship first.

### 📝 Changelog

- **0.1.4** (2026-09-28) — a plan that cannot run the Threads search ends as a successful, free run that says what to
  do; the first run of a search looks back 30 days; a task with type filters keeps its own memory; "Trial AI busy"
  when the free AI trial is out of quota; a crisis-watch preset; the source choice moved to the advanced section.
- **0.1.3** (2026-09-28) — own-key run time re-measured (a free Gemini key ≈ 12.9 s per mention); the card names the
  plan the live search needs.
- **0.1.2** (2026-09-28) — cheaper default Threads source, memory per watch term, white-label client reports,
  suggested exclude words, agency / busy-brand / competitor-leads presets; `reach` and `isReply` are null when Threads
  does not report them; the duplicate `relevanceScore` column is gone (use `score`).
- **0.1.1** (2026-09-28) — first release: Threads mentions from three sources, relevance / sentiment / type / priority
  rules, AI verdict with reply draft, watchlists, digest and alerts.

# Actor input Schema

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

The names to watch on Threads, e.g. <code>Acme</code> — searched and required in the post. Your brand replaces the sample: a live search on your account, capped at $0.50 (Max source spend), on any Apify plan that runs Store Actors — otherwise paste your posts under <b>Other sources</b>. Left as the sample, Start runs the free demo.

## `preset` (type: `string`):

Pick a niche and press Start: it fills the fields you left empty and runs the live search (spend-capped by <code>maxDiscoveryChargeUsd</code>). Your own values always win. <b>Custom</b> = fill the fields yourself.

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

What the brand is, its products and its voice. The AI uses it to tell your brand from a homonym and to write reply drafts in your voice — only facts from here are ever used.

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

The field that decides what you pay: mentions scoring below this relevance are discarded and <b>not charged</b>. Raise it to pay only for posts clearly about you.

## `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.0035 with AI off), e.g. 100 × $0.009 = $0.90; the source's own spend has its cap right below. The best mentions are delivered first.

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

Hard cap on what the Threads search 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, so a first real search can never cost more. Raise it for more terms.

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

The AI confirms each mention is about you, labels sentiment and type, quotes the proof and drafts a reply. <b>On = $0.009 per qualified mention + AI tokens; off = $0.0035</b> (rule-based relevance, sentiment, type and priority).

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

After every run with at least one new mention, the digest (counts, share of voice, the 3 to act on first, links) is e-mailed here. Schedule it weekly and only new mentions reach your inbox. Never sent for the free demo.

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

Competitors to watch too — searched like your brand. Their unhappy or shopping users become <code>sales\_follow\_up</code> mentions; the digest shows share of voice. Searched live on your Apify plan (the demo does not search it).

## `handles` (type: `array`):

Your accounts, e.g. <code>@acme</code> — posts that @-tag them are mentions even when the brand name is not written out. Searched live on your Apify plan (the demo does not search it).

## `hashtags` (type: `array`):

Campaign or brand hashtags, e.g. <code>#acmelaunch</code>. Searched live on your Apify plan (the demo does not search it).

## `negativeTerms` (type: `array`):

A post containing one of these is dropped free — e.g. <code>notion of</code>, <code>linear algebra</code> for a brand that is also a common word.

## `contextTerms` (type: `array`):

Words that show a post is about your product, e.g. <code>app</code>, <code>template</code>, <code>workspace</code> — each adds relevance.

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

Keep only these types (empty = all): <code>complaint</code>, <code>question</code>, <code>buying\_intent</code>, <code>praise</code>, <code>comparison</code>, <code>feature\_request</code>, <code>news\_share</code>, <code>other</code>.

## `sentiments` (type: `array`):

Keep only these sentiments toward your brand (empty = all).

## `minPriority` (type: `string`):

Keep mentions at or above this priority (type + sentiment + reach + recency).

## `languages` (type: `array`):

Keep posts in these languages (empty = all). A post whose language the source did not report is kept.

## `maxAgeDays` (type: `integer`):

Date window of the live search and the dataset (0 = no window). A scheduled run widens it to the days since its last run. Pasted posts are never dropped by it.

## `postedAfter` (type: `string`):

A fixed start date (YYYY-MM-DD) instead of the rolling window; applies to pasted posts too.

## `minAuthorFollowers` (type: `integer`):

Drop posts from accounts with fewer followers (0 = keep all). An author whose follower count is unknown is kept.

## `excludeReposts` (type: `boolean`):

Reposts repeat someone else's post — skipped free.

## `excludeReplies` (type: `boolean`):

Keep only top-level posts.

## `excludeOwnHandles` (type: `array`):

Posts BY these accounts are not mentions — e.g. <code>@acme</code>, <code>@acme\_support</code>.

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

Only deliver mentions that have at least one of these flags, e.g. <code>complaint</code>, <code>high\_reach</code> (<code>highReach</code> works too); an unknown name stops the run at once with the list of valid ones.

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

Post URLs, post ids or author handles to never output. Skipped before any processing and never charged.

## `includeReplyDraft` (type: `boolean`):

For complaints, questions, buying-intent posts and comparisons the AI drafts a reply (≤ 280 characters) in your brand voice — from your brief only, never posted for you.

## `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> — your OpenAI / Anthropic / Gemini / Groq key instead; a free-tier key assesses only a few mentions per run — expect 1–3 AI checks (2 calls at a time, one after a rate limit, then the 3 borderline mentions retried one by one) — and the rest keep their rule score; measured 2026-09-28: ≈ 12.9–62 s per mention (free Gemini key ≈ 12.9–39.6 s, free Groq openai/gpt-oss-120b key ≈ 62 s), so give 50 own-key mentions a <code>timeoutSecs</code> of ≈ 3300; a paid Groq / Gemini key (billing on) assesses every mention.

## `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-4.1-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 best rule-scored candidates get the AI pass, best first, up to this multiple of <b>Max mentions to deliver</b>. Higher = more thorough, slower, more tokens.

## `watchlists` (type: `array`):

For agencies: one entry per client, e.g. <code>\[{"name": "Client A", "brandTerms": \["Acme"], "competitorTerms": \["Globex"], "negativeTerms": \[], "brandBrief": "Acme — …", "webhookUrl": "https://…", "logoUrl": "https://…/logo.png"}]</code>. Each gets its own digest record, webhook and memory; every post goes to the watchlist whose brand it names. Searched live on your Apify plan (the demo does not search it).

## `clientReports` (type: `boolean`):

On = every watchlist with new mentions gets its own client-ready page (<code>REPORT-\<client></code>: the client's name and <code>logoUrl</code>, counts, share of voice, negative spike, the 3 to act on first, the mentions — no Apify branding) to forward, <b>$0.05 per client per run with new mentions</b>. Off = one DIGEST per client, free. The free demo shows a sample (<code>REPORT-sample-client</code>).

## `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 is posted to that channel as a readable message. Never sent for the free demo.

## `discordWebhookUrl` (type: `string`):

A Discord channel webhook URL (<code>https://discord.com/api/webhooks/…</code>). The same digest as Slack. Never sent for the free demo.

## `teamsWebhookUrl` (type: `string`):

A Teams Workflows webhook URL (channel ⋯ → Workflows → <i>Post to a channel when a webhook request is received</i>). The same digest as a card. Never sent for the free demo.

## `googleChatWebhookUrl` (type: `string`):

A Google Chat space webhook URL (<code>https://chat.googleapis.com/v1/spaces/…</code>). The same digest as Slack. Never sent for the free demo.

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

Mentions at or above <b>Alert priority</b> are POSTed here as JSON the moment they are ready (Zapier, Make, n8n, your helpdesk or CRM). Stored encrypted — Zapier / Make hook URLs carry their secret in the path.

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

Which mentions the webhook receives: <b>high</b> (default) = urgent ones only, <b>low</b> = every delivered mention.

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

Extra HTTP headers for the webhook, e.g. <code>{"Authorization": "Bearer …"}</code>. Stored encrypted by Apify, never logged.

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

1 = one POST per mention the moment it is ready. Higher = one POST per N mentions.

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

Remembers every mention you received (in a named key-value store on your account) and skips it in future runs — never re-delivered, never re-charged.

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

Key-value store for the cross-run memory. Left at the default, the memory is kept per watch term: adding a competitor or a handle to a scheduled search keeps every other term's memory (the new term starts its own, <code>OUTPUT.dedupeStore.newTerms</code>), and rewording <code>brandBrief</code> keeps it. Several clients on one account: use <code>watchlists</code>, or type one name per client.

## `resetState` (type: `boolean`):

On = this run forgets the mentions this search already delivered and delivers (and charges) them again. Leave off for schedules.

## `historyDatasetName` (type: `string`):

Optional. Type a name (e.g. <code>threads-mentions-log</code>) and every run appends its new mentions with the date to that named dataset on your account — one list across months for Google Sheets or your BI tool. Empty = off.

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

<b>actor</b> — search Threads live on your account. <b>dataset</b> — an existing post dataset. <b>list</b> — posts you paste in. The mode you choose always runs as chosen; only the untouched sample posts next to a brand you typed switch to the live search (spend-capped). <code>{}</code> over the API runs the free demo — nothing charged.

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

Only for <b>dataset</b> mode: a dataset of Threads posts from any of the three sources, or X / Reddit / Instagram posts. Pick it so the Actor is granted read access.

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

Only for <b>list</b> mode. JSON array of posts with at least <code>url</code> and <code>text</code>, optionally <code>author</code>, <code>created\_at</code>, <code>like\_count</code>, <code>reply\_count</code>, <code>view\_count</code>, <code>follower\_count</code> (see the README's List-mode rows).

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

The Store Actor that searches Threads in <b>actor</b> mode, on your account: <b>automation-lab Threads Scraper</b> (default — $0.005 per post + $0.02 per run, 0 % failed runs), <b>Search Threads by Keywords</b> (deep search — $0.008 per post, no start fee, up to 2,000 posts per keyword) or <b>futurizerush Threads Scraper</b> ($0.0025 per post + $0.02 per run — cheapest per post, 3 % failed runs). All three map to the same output.

## `maxPostsPerTerm` (type: `integer`):

How many posts the source returns per watch term — the main driver of the source cost (terms × posts × its price per post: 1 term × 80 on the default source ≈ $0.42, under the $0.50 spend cap, ≈ 27 qualified mentions — past your 25 free ones). A scheduled run doubles it unless you set it; a run that fills it says so (schedule it daily).

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

<b>recent</b> — the newest posts (monitoring); <b>top</b> — the most relevant / popular.

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

Only for <b>actor</b> mode: extra input for the source Actor, merged over the fields built from your watch terms (e.g. <code>{"maxPosts": 150}</code>). Runs on your Apify plan — if your plan cannot run Store Actors, paste your own posts in <b>list</b> mode (any plan); <b>dataset</b> only for a dataset you already have.

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

Upper bound on how many posts are scored in one run (controls run time). Default = 3 × max mentions.

## Actor input object example

```json
{
  "brandTerms": [
    "Notion"
  ],
  "preset": "custom",
  "brandBrief": "Notion — the connected workspace app for docs, wikis, projects and databases. Friendly, helpful voice; support at notion.so/help.",
  "minScore": 50,
  "maxQualified": 100,
  "maxDiscoveryChargeUsd": 0.5,
  "enableAi": true,
  "minPriority": "low",
  "maxAgeDays": 7,
  "minAuthorFollowers": 0,
  "excludeReposts": true,
  "excludeReplies": false,
  "includeReplyDraft": true,
  "llmProvider": "apify",
  "aiCandidateMultiplier": 2,
  "clientReports": false,
  "alertMinPriority": "high",
  "webhookBatchSize": 1,
  "dedupeAcrossRuns": true,
  "dedupeStoreName": "threads-brand-monitoring-ai-seen",
  "resetState": false,
  "historyDatasetName": "",
  "sourceMode": "list",
  "itemsList": [
    {
      "id": "3456789012345678901",
      "url": "https://www.threads.com/@maya.builds/post/DQa1Notion01",
      "text": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes. Support, is this a known bug? Seriously frustrating.",
      "author": "maya.builds",
      "author_id": "63310001",
      "author_name": "Maya R.",
      "created_at": "2026-09-27T08:12:00Z",
      "like_count": 184,
      "reply_count": 0,
      "repost_count": 12,
      "quote_count": 3,
      "view_count": 21400,
      "follower_count": 12400,
      "following_count": 410,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678902",
      "url": "https://www.threads.com/@ops.dan/post/DQa1Notion02",
      "text": "Looking for an alternative to Notion for our 12-person agency — we need offline mode and faster databases. Any recommendations? Obsidian? Coda?",
      "author": "ops.dan",
      "author_id": "63310002",
      "author_name": "Dan K.",
      "created_at": "2026-09-27T14:40:00Z",
      "like_count": 57,
      "reply_count": 23,
      "repost_count": 2,
      "quote_count": 1,
      "view_count": 6800,
      "follower_count": 3100,
      "following_count": 920,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678903",
      "url": "https://www.threads.com/@studio.lin/post/DQa1Notion03",
      "text": "The new Notion calendar + database templates are a game changer for my content planning ❤️ Highly recommend to any creator.",
      "author": "studio.lin",
      "author_id": "63310003",
      "author_name": "Lin Studio",
      "created_at": "2026-09-26T19:05:00Z",
      "like_count": 412,
      "reply_count": 31,
      "repost_count": 40,
      "quote_count": 6,
      "view_count": 48200,
      "follower_count": 88000,
      "following_count": 1210,
      "verified": true,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678904",
      "url": "https://www.threads.com/@phil.thinks/post/DQa1Notion04",
      "text": "The notion of free will is overrated, change my mind.",
      "author": "phil.thinks",
      "author_id": "63310004",
      "created_at": "2026-09-27T10:00:00Z",
      "like_count": 9,
      "reply_count": 4,
      "view_count": 700,
      "follower_count": 450,
      "following_count": 300,
      "lang": "en"
    },
    {
      "id": "3456789012345678905",
      "url": "https://www.threads.com/@deals4u/post/DQa1Notion05",
      "text": "GIVEAWAY 🎁 free crypto airdrop for Notion users, DM to claim #notion #crypto #airdrop #free #win #giveaway #nft #web3 #money",
      "author": "deals4u",
      "author_id": "63310005",
      "created_at": "2026-09-27T11:00:00Z",
      "like_count": 2,
      "reply_count": 0,
      "view_count": 90,
      "follower_count": 30,
      "following_count": 4800,
      "lang": "en"
    },
    {
      "id": "3456789012345678906",
      "url": "https://www.threads.com/@pm.sara/post/DQa1Notion06",
      "text": "How do I share a Notion database with a client without giving them access to the whole workspace?",
      "author": "pm.sara",
      "author_id": "63310006",
      "author_name": "Sara P.",
      "created_at": "2026-09-27T16:20:00Z",
      "like_count": 14,
      "reply_count": 0,
      "repost_count": 0,
      "quote_count": 0,
      "view_count": 1900,
      "follower_count": 860,
      "following_count": 540,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678907",
      "url": "https://www.threads.com/@founder.kai/post/DQa1Notion07",
      "text": "Switched our team wiki from Confluence to Notion last month: onboarding docs finally get read. Notion vs Confluence isn't even close for a startup.",
      "author": "founder.kai",
      "author_id": "63310007",
      "author_name": "Kai M.",
      "created_at": "2026-09-25T09:30:00Z",
      "like_count": 96,
      "reply_count": 11,
      "repost_count": 5,
      "quote_count": 2,
      "view_count": 9100,
      "follower_count": 5400,
      "following_count": 760,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678908",
      "url": "https://www.threads.com/@tech.digest/post/DQa1Notion08",
      "text": "Notion announces an AI meeting-notes feature for all paid plans, rolling out this week. https://www.notion.so/releases",
      "author": "tech.digest",
      "author_id": "63310008",
      "author_name": "Tech Digest",
      "created_at": "2026-09-26T07:45:00Z",
      "like_count": 233,
      "reply_count": 18,
      "repost_count": 51,
      "quote_count": 9,
      "view_count": 60300,
      "follower_count": 150000,
      "following_count": 95,
      "verified": true,
      "lang": "en",
      "urls": [
        "https://www.notion.so/releases"
      ],
      "is_reply": false,
      "is_repost": false
    }
  ],
  "discoveryActorId": "automation-lab/threads-scraper",
  "maxPostsPerTerm": 80,
  "sortBy": "recent",
  "discoveryInput": {}
}
```

# 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, 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"
    ],
    "brandBrief": "Notion — the connected workspace app for docs, wikis, projects and databases. Friendly, helpful voice; support at notion.so/help.",
    "maxDiscoveryChargeUsd": 0.5,
    "sourceMode": "list",
    "itemsList": [
        {
            "id": "3456789012345678901",
            "url": "https://www.threads.com/@maya.builds/post/DQa1Notion01",
            "text": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes. Support, is this a known bug? Seriously frustrating.",
            "author": "maya.builds",
            "author_id": "63310001",
            "author_name": "Maya R.",
            "created_at": "2026-09-27T08:12:00Z",
            "like_count": 184,
            "reply_count": 0,
            "repost_count": 12,
            "quote_count": 3,
            "view_count": 21400,
            "follower_count": 12400,
            "following_count": 410,
            "verified": false,
            "lang": "en",
            "is_reply": false,
            "is_repost": false
        },
        {
            "id": "3456789012345678902",
            "url": "https://www.threads.com/@ops.dan/post/DQa1Notion02",
            "text": "Looking for an alternative to Notion for our 12-person agency — we need offline mode and faster databases. Any recommendations? Obsidian? Coda?",
            "author": "ops.dan",
            "author_id": "63310002",
            "author_name": "Dan K.",
            "created_at": "2026-09-27T14:40:00Z",
            "like_count": 57,
            "reply_count": 23,
            "repost_count": 2,
            "quote_count": 1,
            "view_count": 6800,
            "follower_count": 3100,
            "following_count": 920,
            "verified": false,
            "lang": "en",
            "is_reply": false,
            "is_repost": false
        },
        {
            "id": "3456789012345678903",
            "url": "https://www.threads.com/@studio.lin/post/DQa1Notion03",
            "text": "The new Notion calendar + database templates are a game changer for my content planning ❤️ Highly recommend to any creator.",
            "author": "studio.lin",
            "author_id": "63310003",
            "author_name": "Lin Studio",
            "created_at": "2026-09-26T19:05:00Z",
            "like_count": 412,
            "reply_count": 31,
            "repost_count": 40,
            "quote_count": 6,
            "view_count": 48200,
            "follower_count": 88000,
            "following_count": 1210,
            "verified": true,
            "lang": "en",
            "is_reply": false,
            "is_repost": false
        },
        {
            "id": "3456789012345678904",
            "url": "https://www.threads.com/@phil.thinks/post/DQa1Notion04",
            "text": "The notion of free will is overrated, change my mind.",
            "author": "phil.thinks",
            "author_id": "63310004",
            "created_at": "2026-09-27T10:00:00Z",
            "like_count": 9,
            "reply_count": 4,
            "view_count": 700,
            "follower_count": 450,
            "following_count": 300,
            "lang": "en"
        },
        {
            "id": "3456789012345678905",
            "url": "https://www.threads.com/@deals4u/post/DQa1Notion05",
            "text": "GIVEAWAY 🎁 free crypto airdrop for Notion users, DM to claim #notion #crypto #airdrop #free #win #giveaway #nft #web3 #money",
            "author": "deals4u",
            "author_id": "63310005",
            "created_at": "2026-09-27T11:00:00Z",
            "like_count": 2,
            "reply_count": 0,
            "view_count": 90,
            "follower_count": 30,
            "following_count": 4800,
            "lang": "en"
        },
        {
            "id": "3456789012345678906",
            "url": "https://www.threads.com/@pm.sara/post/DQa1Notion06",
            "text": "How do I share a Notion database with a client without giving them access to the whole workspace?",
            "author": "pm.sara",
            "author_id": "63310006",
            "author_name": "Sara P.",
            "created_at": "2026-09-27T16:20:00Z",
            "like_count": 14,
            "reply_count": 0,
            "repost_count": 0,
            "quote_count": 0,
            "view_count": 1900,
            "follower_count": 860,
            "following_count": 540,
            "verified": false,
            "lang": "en",
            "is_reply": false,
            "is_repost": false
        },
        {
            "id": "3456789012345678907",
            "url": "https://www.threads.com/@founder.kai/post/DQa1Notion07",
            "text": "Switched our team wiki from Confluence to Notion last month: onboarding docs finally get read. Notion vs Confluence isn't even close for a startup.",
            "author": "founder.kai",
            "author_id": "63310007",
            "author_name": "Kai M.",
            "created_at": "2026-09-25T09:30:00Z",
            "like_count": 96,
            "reply_count": 11,
            "repost_count": 5,
            "quote_count": 2,
            "view_count": 9100,
            "follower_count": 5400,
            "following_count": 760,
            "verified": false,
            "lang": "en",
            "is_reply": false,
            "is_repost": false
        },
        {
            "id": "3456789012345678908",
            "url": "https://www.threads.com/@tech.digest/post/DQa1Notion08",
            "text": "Notion announces an AI meeting-notes feature for all paid plans, rolling out this week. https://www.notion.so/releases",
            "author": "tech.digest",
            "author_id": "63310008",
            "author_name": "Tech Digest",
            "created_at": "2026-09-26T07:45:00Z",
            "like_count": 233,
            "reply_count": 18,
            "repost_count": 51,
            "quote_count": 9,
            "view_count": 60300,
            "follower_count": 150000,
            "following_count": 95,
            "verified": true,
            "lang": "en",
            "urls": [
                "https://www.notion.so/releases"
            ],
            "is_reply": false,
            "is_repost": false
        }
    ],
    "maxPostsPerTerm": 80,
    "discoveryInput": {}
};

// Run the Actor and wait for it to finish
const run = await client.actor("rich_minds/threads-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"],
    "brandBrief": "Notion — the connected workspace app for docs, wikis, projects and databases. Friendly, helpful voice; support at notion.so/help.",
    "maxDiscoveryChargeUsd": 0.5,
    "sourceMode": "list",
    "itemsList": [
        {
            "id": "3456789012345678901",
            "url": "https://www.threads.com/@maya.builds/post/DQa1Notion01",
            "text": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes. Support, is this a known bug? Seriously frustrating.",
            "author": "maya.builds",
            "author_id": "63310001",
            "author_name": "Maya R.",
            "created_at": "2026-09-27T08:12:00Z",
            "like_count": 184,
            "reply_count": 0,
            "repost_count": 12,
            "quote_count": 3,
            "view_count": 21400,
            "follower_count": 12400,
            "following_count": 410,
            "verified": False,
            "lang": "en",
            "is_reply": False,
            "is_repost": False,
        },
        {
            "id": "3456789012345678902",
            "url": "https://www.threads.com/@ops.dan/post/DQa1Notion02",
            "text": "Looking for an alternative to Notion for our 12-person agency — we need offline mode and faster databases. Any recommendations? Obsidian? Coda?",
            "author": "ops.dan",
            "author_id": "63310002",
            "author_name": "Dan K.",
            "created_at": "2026-09-27T14:40:00Z",
            "like_count": 57,
            "reply_count": 23,
            "repost_count": 2,
            "quote_count": 1,
            "view_count": 6800,
            "follower_count": 3100,
            "following_count": 920,
            "verified": False,
            "lang": "en",
            "is_reply": False,
            "is_repost": False,
        },
        {
            "id": "3456789012345678903",
            "url": "https://www.threads.com/@studio.lin/post/DQa1Notion03",
            "text": "The new Notion calendar + database templates are a game changer for my content planning ❤️ Highly recommend to any creator.",
            "author": "studio.lin",
            "author_id": "63310003",
            "author_name": "Lin Studio",
            "created_at": "2026-09-26T19:05:00Z",
            "like_count": 412,
            "reply_count": 31,
            "repost_count": 40,
            "quote_count": 6,
            "view_count": 48200,
            "follower_count": 88000,
            "following_count": 1210,
            "verified": True,
            "lang": "en",
            "is_reply": False,
            "is_repost": False,
        },
        {
            "id": "3456789012345678904",
            "url": "https://www.threads.com/@phil.thinks/post/DQa1Notion04",
            "text": "The notion of free will is overrated, change my mind.",
            "author": "phil.thinks",
            "author_id": "63310004",
            "created_at": "2026-09-27T10:00:00Z",
            "like_count": 9,
            "reply_count": 4,
            "view_count": 700,
            "follower_count": 450,
            "following_count": 300,
            "lang": "en",
        },
        {
            "id": "3456789012345678905",
            "url": "https://www.threads.com/@deals4u/post/DQa1Notion05",
            "text": "GIVEAWAY 🎁 free crypto airdrop for Notion users, DM to claim #notion #crypto #airdrop #free #win #giveaway #nft #web3 #money",
            "author": "deals4u",
            "author_id": "63310005",
            "created_at": "2026-09-27T11:00:00Z",
            "like_count": 2,
            "reply_count": 0,
            "view_count": 90,
            "follower_count": 30,
            "following_count": 4800,
            "lang": "en",
        },
        {
            "id": "3456789012345678906",
            "url": "https://www.threads.com/@pm.sara/post/DQa1Notion06",
            "text": "How do I share a Notion database with a client without giving them access to the whole workspace?",
            "author": "pm.sara",
            "author_id": "63310006",
            "author_name": "Sara P.",
            "created_at": "2026-09-27T16:20:00Z",
            "like_count": 14,
            "reply_count": 0,
            "repost_count": 0,
            "quote_count": 0,
            "view_count": 1900,
            "follower_count": 860,
            "following_count": 540,
            "verified": False,
            "lang": "en",
            "is_reply": False,
            "is_repost": False,
        },
        {
            "id": "3456789012345678907",
            "url": "https://www.threads.com/@founder.kai/post/DQa1Notion07",
            "text": "Switched our team wiki from Confluence to Notion last month: onboarding docs finally get read. Notion vs Confluence isn't even close for a startup.",
            "author": "founder.kai",
            "author_id": "63310007",
            "author_name": "Kai M.",
            "created_at": "2026-09-25T09:30:00Z",
            "like_count": 96,
            "reply_count": 11,
            "repost_count": 5,
            "quote_count": 2,
            "view_count": 9100,
            "follower_count": 5400,
            "following_count": 760,
            "verified": False,
            "lang": "en",
            "is_reply": False,
            "is_repost": False,
        },
        {
            "id": "3456789012345678908",
            "url": "https://www.threads.com/@tech.digest/post/DQa1Notion08",
            "text": "Notion announces an AI meeting-notes feature for all paid plans, rolling out this week. https://www.notion.so/releases",
            "author": "tech.digest",
            "author_id": "63310008",
            "author_name": "Tech Digest",
            "created_at": "2026-09-26T07:45:00Z",
            "like_count": 233,
            "reply_count": 18,
            "repost_count": 51,
            "quote_count": 9,
            "view_count": 60300,
            "follower_count": 150000,
            "following_count": 95,
            "verified": True,
            "lang": "en",
            "urls": ["https://www.notion.so/releases"],
            "is_reply": False,
            "is_repost": False,
        },
    ],
    "maxPostsPerTerm": 80,
    "discoveryInput": {},
}

# Run the Actor and wait for it to finish
run = client.actor("rich_minds/threads-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"
  ],
  "brandBrief": "Notion — the connected workspace app for docs, wikis, projects and databases. Friendly, helpful voice; support at notion.so/help.",
  "maxDiscoveryChargeUsd": 0.5,
  "sourceMode": "list",
  "itemsList": [
    {
      "id": "3456789012345678901",
      "url": "https://www.threads.com/@maya.builds/post/DQa1Notion01",
      "text": "Notion keeps crashing on my iPad since the last update and I lost a whole page of meeting notes. Support, is this a known bug? Seriously frustrating.",
      "author": "maya.builds",
      "author_id": "63310001",
      "author_name": "Maya R.",
      "created_at": "2026-09-27T08:12:00Z",
      "like_count": 184,
      "reply_count": 0,
      "repost_count": 12,
      "quote_count": 3,
      "view_count": 21400,
      "follower_count": 12400,
      "following_count": 410,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678902",
      "url": "https://www.threads.com/@ops.dan/post/DQa1Notion02",
      "text": "Looking for an alternative to Notion for our 12-person agency — we need offline mode and faster databases. Any recommendations? Obsidian? Coda?",
      "author": "ops.dan",
      "author_id": "63310002",
      "author_name": "Dan K.",
      "created_at": "2026-09-27T14:40:00Z",
      "like_count": 57,
      "reply_count": 23,
      "repost_count": 2,
      "quote_count": 1,
      "view_count": 6800,
      "follower_count": 3100,
      "following_count": 920,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678903",
      "url": "https://www.threads.com/@studio.lin/post/DQa1Notion03",
      "text": "The new Notion calendar + database templates are a game changer for my content planning ❤️ Highly recommend to any creator.",
      "author": "studio.lin",
      "author_id": "63310003",
      "author_name": "Lin Studio",
      "created_at": "2026-09-26T19:05:00Z",
      "like_count": 412,
      "reply_count": 31,
      "repost_count": 40,
      "quote_count": 6,
      "view_count": 48200,
      "follower_count": 88000,
      "following_count": 1210,
      "verified": true,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678904",
      "url": "https://www.threads.com/@phil.thinks/post/DQa1Notion04",
      "text": "The notion of free will is overrated, change my mind.",
      "author": "phil.thinks",
      "author_id": "63310004",
      "created_at": "2026-09-27T10:00:00Z",
      "like_count": 9,
      "reply_count": 4,
      "view_count": 700,
      "follower_count": 450,
      "following_count": 300,
      "lang": "en"
    },
    {
      "id": "3456789012345678905",
      "url": "https://www.threads.com/@deals4u/post/DQa1Notion05",
      "text": "GIVEAWAY 🎁 free crypto airdrop for Notion users, DM to claim #notion #crypto #airdrop #free #win #giveaway #nft #web3 #money",
      "author": "deals4u",
      "author_id": "63310005",
      "created_at": "2026-09-27T11:00:00Z",
      "like_count": 2,
      "reply_count": 0,
      "view_count": 90,
      "follower_count": 30,
      "following_count": 4800,
      "lang": "en"
    },
    {
      "id": "3456789012345678906",
      "url": "https://www.threads.com/@pm.sara/post/DQa1Notion06",
      "text": "How do I share a Notion database with a client without giving them access to the whole workspace?",
      "author": "pm.sara",
      "author_id": "63310006",
      "author_name": "Sara P.",
      "created_at": "2026-09-27T16:20:00Z",
      "like_count": 14,
      "reply_count": 0,
      "repost_count": 0,
      "quote_count": 0,
      "view_count": 1900,
      "follower_count": 860,
      "following_count": 540,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678907",
      "url": "https://www.threads.com/@founder.kai/post/DQa1Notion07",
      "text": "Switched our team wiki from Confluence to Notion last month: onboarding docs finally get read. Notion vs Confluence isn'\''t even close for a startup.",
      "author": "founder.kai",
      "author_id": "63310007",
      "author_name": "Kai M.",
      "created_at": "2026-09-25T09:30:00Z",
      "like_count": 96,
      "reply_count": 11,
      "repost_count": 5,
      "quote_count": 2,
      "view_count": 9100,
      "follower_count": 5400,
      "following_count": 760,
      "verified": false,
      "lang": "en",
      "is_reply": false,
      "is_repost": false
    },
    {
      "id": "3456789012345678908",
      "url": "https://www.threads.com/@tech.digest/post/DQa1Notion08",
      "text": "Notion announces an AI meeting-notes feature for all paid plans, rolling out this week. https://www.notion.so/releases",
      "author": "tech.digest",
      "author_id": "63310008",
      "author_name": "Tech Digest",
      "created_at": "2026-09-26T07:45:00Z",
      "like_count": 233,
      "reply_count": 18,
      "repost_count": 51,
      "quote_count": 9,
      "view_count": 60300,
      "follower_count": 150000,
      "following_count": 95,
      "verified": true,
      "lang": "en",
      "urls": [
        "https://www.notion.so/releases"
      ],
      "is_reply": false,
      "is_repost": false
    }
  ],
  "maxPostsPerTerm": 80,
  "discoveryInput": {}
}' |
apify call rich_minds/threads-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/threads-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/OZxliDO3o7l0mAohM/builds/LgLyaXbiHyTTp2NUD/openapi.json
