Skip to content

Brand monitoring for Reddit and X: build a mention monitor

Build brand monitoring for Reddit and X: one API call finds posts, comments and tweets that name your brand, then a script sends a daily digest to Slack.

Piyushh · October 14, 2026 · 6 min read

Brand monitoring on Reddit and X means finding every post, comment and tweet that names your brand, including the ones that never tag your account, and putting them in front of someone who can respond. You can buy it from a suite like Brand24 or Mention. Or you can build it yourself: one API call that searches Reddit posts, Reddit comments and X at once, plus a short script that sends a daily digest to Slack. This guide builds that second version.

Still choosing a tool? Our best social listening tools comparison covers the hosted options. If you want the mentions in your own code, read on.

What brand monitoring on Reddit and X needs to catch

There are three kinds of mention to catch, and most quick setups miss at least one:

  • Reddit posts, like someone asking "has anyone used Acme?" in a subreddit you've never heard of.
  • Reddit comments, which are the bigger share. A reply deep in a thread says "we moved off Acme last month", and post search alone never sees it.
  • Tweets that don't tag you. X's Mentions notifications only show posts that mention your username, so a tweet saying "acme's new pricing is wild" won't appear there.

You also need to leave some things out: your own posts, your team's replies, and anything where your brand name means something else. A good monitor handles spellings, exclusions and your own accounts in one place.

Brand monitoring tools versus building it

A hosted tool gets you started faster. As listed on Oct 14, 2026, Brand24 starts at $199 a month billed annually, Octolens at $159 a month billed annually, and Awario at $29 a month billed annually. All three list Reddit and X as sources, and they add sentiment, charts and team inboxes on top. For X specifically, our Twitter monitoring tools list goes deeper.

Build it yourself when you want the mentions somewhere a dashboard can't reach: a Slack channel with your own format, a support queue, a CRM, or an AI agent that drafts the reply for a human to check. Building also fits a small budget, since you pay per call rather than per seat.

Brand mention monitoring in one request

ChatterAPI's GET /v1/mentions searches Reddit posts, Reddit comments and X for a brand name and merges the results newest first. A page costs up to 7 credits: 2 for Reddit posts, 2 for Reddit comments and 3 for X, charged only for the sources it calls.

curl -s -G "https://api.chatterapi.com/v1/mentions" \
  --data-urlencode "q=acme" \
  --data-urlencode "aliases=acmehq,acme.io" \
  --data-urlencode "exclude=wile,coyote" \
  --data-urlencode "excludeAuthors=acmehq,acme_team" \
  --data-urlencode "time=day" \
  -H "Authorization: Bearer $CHATTERAPI_KEY"

Spellings, exclusions and your own accounts

The parameters handle the filtering a suite would otherwise do for you. Each one takes a comma-separated list:

  • aliases: up to 5 other spellings, such as a domain (acme.io), a handle or a common misspelling.
  • exclude: up to 10 words that disqualify a mention. For a brand called Acme, that's the cartoon.
  • excludeAuthors: up to 20 of your own Reddit usernames or X handles, so your team's posts stay out of the results. The docs recommend this directly: "add your own handles to excludeAuthors so you only see what others say."
  • time: day, week (the default) or month.
  • strict: keeps only items whose text contains one of your terms.

The response

Every item has the same shape whichever platform it came from. Below is a real response, trimmed. We ran it with a test key, which returns one recorded real response per endpoint regardless of input, so the brand in it is "crm" rather than "acme" and charged is 0. A live key charges up to 7 credits.

{
  "data": [
    {
      "platform": "reddit",
      "kind": "post",
      "id": "t3_1whokz5",
      "url": "https://www.reddit.com/r/CRMSoftware/comments/1whokz5/best_logistics_crm_for_email_sms_and_customer/",
      "text": "Best logistics CRM for email, SMS, and customer management?…",
      "author": "L1994ala_1264",
      "community": "CRMSoftware",
      "score": 5,
      "createdAt": "2026-09-16T05:54:13.000Z"
    },
    {
      "platform": "x",
      "kind": "tweet",
      "id": "2099495333231288346",
      "url": "https://x.com/HesomParhizkar/status/2099495333231288346",
      "text": "meta ads: how important is the “connect to your crm” recommendation?…",
      "author": "HesomParhizkar",
      "community": null,
      "score": 2,
      "createdAt": "2026-09-14T13:47:48.000Z"
    }
  ],
  "page": { "nextCursor": null, "hasMore": false },
  "credits": { "charged": 0, "remaining": 719 },
  "requestId": "req_01M4X1HDDBJFMW8ECPNN",
  "cached": true
}

platform and kind tell you where each item came from (post, comment or tweet), and community holds the subreddit for Reddit items. If you want to see results before writing any code, the free brand mentions tool runs the same search over the past week with no signup.

A daily brand mention digest

People stop reading instant alerts for every mention pretty quickly. In an r/socialmedia thread on monitoring X, one manager said "if you alert on everything you start ignoring the channel inside a week," and moved everything except the urgent terms into a digest. This script works the same way. It runs once a day, collects the previous day's mentions, groups them by platform and type, and posts one message to Slack.

import json, os, pathlib, requests
from collections import defaultdict

API = "https://api.chatterapi.com/v1/mentions"
HEADERS = {"Authorization": f"Bearer {os.environ['CHATTERAPI_KEY']}"}
BRAND = {
    "q": "acme",
    "aliases": "acmehq,acme.io",          # up to 5 other spellings
    "exclude": "wile,coyote,looney",      # up to 10 words that disqualify a mention
    "excludeAuthors": "acmehq,acme_team", # your own Reddit usernames and X handles
    "time": "day",
}
WEBHOOK = os.environ.get("SLACK_WEBHOOK_URL")
STATE = pathlib.Path("mentions_seen.json")
MAX_PAGES = 5  # up to 7 credits per page

seen = dict.fromkeys(json.loads(STATE.read_text())) if STATE.exists() else {}
groups, cursor = defaultdict(list), None

for _ in range(MAX_PAGES):
    params = {**BRAND, **({"cursor": cursor} if cursor else {})}
    r = requests.get(API, params=params, headers=HEADERS, timeout=60)
    if r.status_code != 200:
        print(f"HTTP {r.status_code} {r.text[:200]}")  # failed calls cost 0 credits
        break
    body = r.json()
    for m in body["data"]:
        key = f"{m['platform']}:{m['id']}"
        if key in seen:
            continue
        seen[key] = None
        where = f"r/{m['community']}" if m["community"] else "X"
        groups[f"{m['platform']} {m['kind']}"].append(
            f"• {where} · {m['author'] or 'deleted'} · score {m['score']}\n  {m['text'][:180].replace(chr(10), ' ')}\n  {m['url']}")
    if not body["page"]["hasMore"]:
        break
    cursor = body["page"]["nextCursor"]

total = sum(len(v) for v in groups.values())
digest = f"*{BRAND['q']}: {total} new mentions in the last day*\n\n" + "\n\n".join(
    f"*{name}* ({len(items)})\n" + "\n".join(items) for name, items in sorted(groups.items()))

if WEBHOOK and total:
    requests.post(WEBHOOK, json={"text": digest}, timeout=10)
else:
    print(digest)
STATE.write_text(json.dumps(list(seen)[-5000:]))

We ran it against the API before publishing. It keeps paging until the results run out (five pages at most), skips anything it has already sent, and prints the digest if no webhook is set. Schedule it for the start of your day:

0 8 * * * cd /opt/brand-digest && CHATTERAPI_KEY=... SLACK_WEBHOOK_URL=... python3 brand_digest.py >> digest.log 2>&1

To track a competitor too, run a second copy with their name in q. Their mentions tell you what people dislike about the alternatives. For faster alerts during a launch week, run the same script hourly with time=day. The seen-file prevents repeats, so each message carries only what's new.

What keyword-based brand monitoring misses

This approach finds mentions that contain your brand's name or one of its spellings, and misses the ones that don't. The founder of Octolens, a listening tool, made the point in r/AskMarketing: "What can still be challenging are short comments. 'we switched last month,' there you need to take the context of the original post into consideration" (comment). A reply like that only makes sense next to its parent post, and no keyword search will catch it.

Brand names that are common words cause the other problem. If your brand is also a dictionary word, exclude and strict help, but you'll still get false matches. You can handle both problems in two ways:

  • For threads that matter, pull the whole conversation with GET /v1/reddit/threads/{id} (3 credits) and read the replies in context.
  • Pass each mention to an LLM along with a sentence describing your product, ask whether the mention is about you, and forward only the yes answers.

Suites have the same limit because they match keywords too, though some add their own AI filtering on top. If you need brand-safety coverage of news, reviews and podcasts, that's a reason to pay for one.

What brand monitoring costs with an API

GET /v1/mentions charges for the sources it calls, up to 7 credits a page. Here is one brand over a 30-day month:

SchedulePages per monthCredits per monthPlan
Daily digest, 1 page30210100 free credits cover two weeks
Daily digest, up to 5 pagesup to 150up to 1,050Starter ($19/mo, 25,000)
Every hour, 1 page7205,040Starter ($19/mo, 25,000)
Every hour, brand and 3 competitors2,88020,160Starter ($19/mo, 25,000)

Failed calls cost 0 credits. Repeat calls with the same input within 10 minutes come from cache at the same price, so running hourly is about as often as a mention digest needs. To watch only Reddit or only X on a tighter loop, use the single-platform versions in our guides to monitoring Reddit for keywords and Twitter keyword alerts. If you're a developer comparing data sources, see our social listening APIs comparison.

Set up your brand monitor

ChatterAPI gives your code and your agents Reddit and X data through one key, over REST or MCP, and you don't have to apply for a developer account. Sign up with Google to get 100 free credits without a card, enough for about two weeks of the daily digest above. Plans start at $19/month for 25,000 credits. ChatterAPI is independent of Reddit and X, and its Reddit endpoints are read-only.

FAQ

What is brand monitoring?
Brand monitoring is tracking where people mention your brand or product online, so you can answer questions, catch complaints early and see what people compare you with. On Reddit and X, that means posts, comments and tweets that name your brand, whether or not they tag your account.
How do I track brand mentions on Reddit and X for free?
Search X with your brand name in quotes and save the search, use Reddit Pro (free from Reddit) for Reddit keywords, or set up F5Bot for free Reddit email alerts. The free ChatterAPI brand mentions tool also searches Reddit posts, comments and X for the past week without signup.
How do I stop my own posts showing up in brand mentions?
Pass your own accounts in excludeAuthors. ChatterAPI's GET /v1/mentions accepts up to 20 Reddit usernames or X handles there and drops anything they wrote, so the digest only shows what other people say.
How much does a daily brand mention digest cost?
Each page of GET /v1/mentions costs up to 7 credits: 2 for Reddit posts, 2 for Reddit comments and 3 for X. A daily digest that reads one page a day uses about 210 credits a month. Checking every hour uses about 5,040, which fits the $19 Starter plan.

More from the blog

Make your first call on 100 free credits.

Sign up with Google, no card. One key for Reddit and X, over REST or MCP.