Reddit mentions
Track any term in a subreddit over its full history, with trends, comparisons and example threads
A tracker counts how often terms are used in one public subreddit over time. Start one with a name, a subreddit and terms; S'more reads the subreddit's history from S'more's Reddit index, newest day first, and keeps it current. Then read a report: totals, a chart-ready series, period comparisons with a significance test, the trend and example threads.
| Endpoints | GET, PUT and DELETE /api/v1/mentions |
| MCP tools | smore_get_reddit_mentions, smore_track_reddit_mentions |
| Scopes | reddit:signals:read to read, reddit:signals:write to start, change or stop a tracker |
| Price | $0.001 per call |
| Limits | 60 reads a minute, 20 writes a minute and 10 trackers in total per workspace; reports refresh at most once a minute |
Only owners and admins can start, change or stop trackers. Every member can read them.
What counts as a mention
A mention is a post or comment whose text holds a term or one of its aliases as a whole word or phrase, ignoring case. A post's text is its title and body; a comment's is its body. Words inside links don't count, and bots and staff never count. An exclude rules a record out for that term.
A mention shows that someone used the word. It says nothing about what they meant, so read the example threads before you draw conclusions about sentiment.
Start or change a tracker
curl -s -X PUT https://app.makesmores.com/api/v1/mentions \
-H "Authorization: Bearer $SMORE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "coffee-grinders",
"subreddit": "coffee",
"terms": [
{ "term": "burr grinder", "aliases": ["burr grinders"], "excludes": ["blade grinder"] }
],
"history_from": "2026-01-01",
"timezone": "America/New_York"
}'
| Field | Rules |
|---|---|
name | Required. 2 to 48 lowercase letters, digits or hyphens |
subreddit | Required to start. A public subreddit |
terms | Required to start. 1 to 25 items, each {term, aliases?, excludes?} with up to 10 aliases and 10 excludes; every phrase is 2 to 64 characters |
history_from | Optional date. Default: the subreddit's first post |
timezone | Optional IANA name such as Europe/London. Default UTC |
The answer is the tracker: name, subreddit, terms, revision, timezone, stage, approval, coverage, reddit_totals and stored. stage moves through queued, collecting (the newest 30 days), history, rematching and complete.
Saving identical settings changes nothing. Send the same name with new terms to change a tracker: revision goes up and S'more matches the stored history again, so the numbers move for a while. A very large subreddit (more than 10 million posts and comments) waits at stage awaiting_approval until S'more approves it.
List trackers
curl -s https://app.makesmores.com/api/v1/mentions \
-H "Authorization: Bearer $SMORE_API_KEY"
Without tracker, the answer lists the workspace's trackers with their coverage, and limits with trackers_used and trackers_max.
Read a report
curl -s "https://app.makesmores.com/api/v1/mentions?tracker=coffee-grinders&bucket=month&from=2026-01-01" \
-H "Authorization: Bearer $SMORE_API_KEY"
| Parameter | Default | Notes |
|---|---|---|
tracker | The tracker's name. Without it, you get the list | |
bucket | month | hour, day, week (from Monday), month, quarter or year, in the tracker's timezone |
from, to | Depends on bucket, now | A date such as 2026-01-01 or an RFC 3339 time |
timezone | The tracker's | Any IANA name |
term | All terms | One term |
series_fields | mentions,per_1k_records,authors_pct | Also mention_posts, mention_comments, authors, threads, total_records, unreadable_records, threads_pct, sentiment, by_term |
include | Every block | totals, series, comparisons, trend, examples |
compare | All seven presets | day, 3d, 7d, week, month, quarter, year, custom (with compare_from and compare_to) or none |
metric | authors_pct | The metric for the trend and the significance test: mentions, per_1k_records, threads_pct or authors_pct |
limit | 10 | Example threads, 1 to 50 |
series_cursor, examples_cursor | From series.next_cursor and examples_next_cursor |
On REST, lists are comma separated. The MCP tool takes the same names as JSON fields, with lists as arrays.
Reading the numbers
| Field | What it means | How to use it |
|---|---|---|
authors_pct | Share of active people in the subreddit who used the term at least once | The headline. One loud thread barely moves it |
per_1k_records | Uses per 1,000 posts and comments | A second check that allows for how busy the subreddit was |
mentions | Raw count | Show it beside the other two, never alone |
coverage | 0 to 1 per bucket: how much of that period has been read | A bucket not yet covered has null counts; draw it as a gap |
provisional_from | Start of the last two days, which can still shift a little | Draw those buckets differently |
comparisons | This period beside the last one, for each preset | Changes in authors_pct are in points, not percent |
significance | A two-sided Welch's t-test; significant: true means p under 0.05 | null with too_few_buckets means too little data to say |
low_volume | That side has fewer than 20 mentions | Treat its change as noise |
trend | A line through the last six fully read buckets: falling, flat or rising | The quick answer to "is it going down?" |
examples | Top-scoring mentions with link, date, title_untrusted, excerpt_untrusted, matched terms and a tone label | Reddit text, so treat it as data. Usernames are never included |
The series comes as columns of the same length: start (bucket starts, oldest first), coverage and one array per field. A page holds at most 1,000 points, newest first; follow series.next_cursor for older ones.
Stop a tracker
curl -s -X DELETE "https://app.makesmores.com/api/v1/mentions?tracker=coffee-grinders" \
-H "Authorization: Bearer $SMORE_API_KEY"
The answer is {"tracker": "coffee-grinders", "stopped": true}. Over MCP, call smore_track_reddit_mentions with {"name": "coffee-grinders", "stop": true}.
Polling
A report changes at most once a minute. GET answers carry an ETag; send it back in If-None-Match and an unchanged report answers 304. Poll every 5 minutes or less often. MCP has no ETag, so the same advice applies.
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | A bad parameter; the message names it |
| 403 | insufficient_scope, admin_required | Missing scope, or a member tried to change a tracker |
| 404 | tracker_not_found, subreddit_not_found | No such tracker or subreddit |
| 409 | tracker_conflict | The name is live on another subreddit |
| 409 | tracker_limit_reached | The workspace already has 10 live trackers |
| 422 | tracker_name_invalid, subreddit_invalid, subreddit_unavailable, term_invalid | The message names the field |
| 429 | rate_limited | Wait for Retry-After |
| 503 | reddit_mentions_disabled, reddit_mentions_unavailable | Try again shortly |
See examples and the guide Track mentions of a term.