reddit
The deterministic read path for public Reddit data through UnifAPI. This is a
Data Skill: it does not run a marketing job on its own — it names the
concrete reddit/... operations, response shapes, and the real coverage limits
so any community-first workflow (social listening, voice-of-customer) reads from
one known, honest recipe instead of rediscovering the surface each time.
Read-only — eyes, not hands. It researches public Reddit data and returns
cited records; it never posts, comments, or votes, and UnifAPI never holds
Reddit credentials.
Use the unifapi skill for live evidence
Connect once through the shared unifapi skill (OAuth MCP), then call the
operations below. Reddit's public surface has no keyword search, so discovery
is seed-driven — say so in the output. Keep any billing metadata so the output
can state record cost.
Response contract
Single-entity endpoints return the object in data:
{
"request_id": "unif_...",
"data": {},
"billing": { "records_charged": 1, "balance_remaining": 99 }
}
List endpoints return an array in data plus pagination:
{
"request_id": "unif_...",
"data": [],
"pagination": { "has_more": false, "next_cursor": null },
"billing": { "records_charged": 1 }
}
When pagination.has_more is true, pass pagination.next_cursor as the next
request's cursor. Always preserve billing when reporting cost.
Core operations
| Need |
Operation |
| Subreddit profile + rules |
reddit/subreddits/{name} |
| Discover threads |
reddit/feed/popular · reddit/feed/news · reddit/feed/home |
| Trending searches |
reddit/trending-searches |
| Post by id |
reddit/posts/{id} |
| Comment tree on a thread |
reddit/posts/{id}/comments |
| User profile + karma |
reddit/users/{username} |
| User posts / comments |
reddit/users/{username}/posts · .../comments |
Need a field not listed here? Use the unifapi skill's get_operation to read
the exact schema before calling — but pick the operation from this table, don't
discover blind.
Workflow
The deterministic recipes. Pick the one that matches the job; each names exactly
what to call.
- Seed the communities. Reddit has no keyword search, so name the subreddits
the audience lives in and call
reddit/subreddits/{name} for
subscribers_count, active_count, is_nsfw, and the rules in
description.
- Discover threads. Scan
reddit/feed/popular, reddit/feed/news, and
reddit/feed/home, plus reddit/trending-searches, and keep the posts whose
subreddit field matches your seeds — that is how you find community threads
without a per-subreddit feed.
- Mine a thread. With a post id, call
reddit/posts/{id} for the post and
reddit/posts/{id}/comments for the comment tree; capture the upvoted
(score) verbatim language. Page via next_cursor.
- Track power users. Call
reddit/users/{username} for karma, then
.../posts and .../comments for what an active member contributes across
the niche.
- Flag outreach safety. Read each subreddit's rules from
description and
is_nsfw before suggesting any participation.
- Cite everything. Every quote ties back to its thread or comment; state
plainly that coverage is seed-driven, not exhaustive, and report
billing.records_charged.
Shape notes
RedditSubreddit — keyed by {name}. subscribers_count,
active_count, is_nsfw, description (carries rules), prefixed_name
(r/...).
RedditPost — title, url, text, created_at, subreddit,
is_stickied, is_locked, is_nsfw. Use the subreddit field to filter
feed results back to a community.
RedditComment — text, score (upvotes), author_name, is_locked.
RedditUser — name, karma_total, karma_from_posts,
karma_from_comments, is_verified, is_employee.
Gotchas
- No keyword search. You cannot query Reddit by term — discovery comes from
the global
feed/* endpoints, trending-searches, and the subreddits/users
you already name. Say so in the brief.
- No per-subreddit post feed.
reddit/subreddits/{name} returns the profile
and rules only; to read a community's threads, filter the global feeds by the
subreddit field, start from a known post id, or read active users' posts.
- A low balance can silently truncate list pages: check
billing.truncated_due_to_balance — when true the page is partial.
Output
Return the records the calling workflow needs, each cited to its thread or
comment, plus a one-line cost note (records_charged). When this skill is used
directly, a compact community brief is the default:
**r/{subreddit}** — {subscribers} subscribers, {active} active. Recurring questions: {themes}. Verbatim: "{quote}" ({score} upvotes). Outreach rules: {note}. Coverage: seed-driven. Evidence: {URLs}. Records: ~{N}.
Related skills
- reddit-community-research (Lead & Company Research) — turns this read path into a structured community map.
- social-listening-brief (Social Listening), customer-research — listening and voice-of-customer work on top of Reddit reads.
- unifapi — the shared data skill: connect MCP and look up exact schemas with
get_operation.
1---
2name: reddit
3description: When a workflow needs public Reddit data through UnifAPI — subreddit profiles and rules, thread comment trees, user activity and karma, the home/news/popular feeds, or trending searches. Also use on "research this subreddit," "what does r/... discuss," "pull this Reddit thread," "Reddit user activity," or when another skill (community research, social listening, customer research) needs the deterministic Reddit read path. Reddit has no keyword search — discovery is seed-driven. Connect via the `unifapi` skill first. Read-only research, never posts.
4license: MIT
5metadata:
6 author: UnifAPI
7 version: "1.0.0"
8 homepage: https://unifapi.com/agents/reddit
9 source: https://github.com/unifapi-agent/agents
10---
11
12# reddit
13
14The deterministic read path for public **Reddit** data through UnifAPI. This is a
15**Data Skill**: it does not run a marketing job on its own — it names the
16concrete `reddit/...` operations, response shapes, and the real coverage limits
17so any community-first workflow (social listening, voice-of-customer) reads from
18one known, honest recipe instead of rediscovering the surface each time.
19
20Read-only — **eyes, not hands**. It researches public Reddit data and returns
21cited records; it never posts, comments, or votes, and UnifAPI never holds
22Reddit credentials.
23
24## Use the `unifapi` skill for live evidence
25
26Connect once through the shared **`unifapi`** skill (OAuth MCP), then call the
27operations below. Reddit's public surface has **no keyword search**, so discovery
28is seed-driven — say so in the output. Keep any `billing` metadata so the output
29can state record cost.
30
31## Response contract
32
33Single-entity endpoints return the object in `data`:
34
35```json
36{
37 "request_id": "unif_...",
38 "data": {},
39 "billing": { "records_charged": 1, "balance_remaining": 99 }
40}
41```
42
43List endpoints return an array in `data` plus `pagination`:
44
45```json
46{
47 "request_id": "unif_...",
48 "data": [],
49 "pagination": { "has_more": false, "next_cursor": null },
50 "billing": { "records_charged": 1 }
51}
52```
53
54When `pagination.has_more` is true, pass `pagination.next_cursor` as the next
55request's `cursor`. Always preserve `billing` when reporting cost.
56
57## Core operations
58
59| Need | Operation |
60| ------------------------- | --------------------------------------------------------------- |
61| Subreddit profile + rules | `reddit/subreddits/{name}` |
62| Discover threads | `reddit/feed/popular` · `reddit/feed/news` · `reddit/feed/home` |
63| Trending searches | `reddit/trending-searches` |
64| Post by id | `reddit/posts/{id}` |
65| Comment tree on a thread | `reddit/posts/{id}/comments` |
66| User profile + karma | `reddit/users/{username}` |
67| User posts / comments | `reddit/users/{username}/posts` · `.../comments` |
68
69Need a field not listed here? Use the `unifapi` skill's `get_operation` to read
70the exact schema before calling — but pick the operation from this table, don't
71discover blind.
72
73## Workflow
74
75The deterministic recipes. Pick the one that matches the job; each names exactly
76what to call.
77
781. **Seed the communities.** Reddit has no keyword search, so name the subreddits
79 the audience lives in and call `reddit/subreddits/{name}` for
80 `subscribers_count`, `active_count`, `is_nsfw`, and the rules in
81 `description`.
822. **Discover threads.** Scan `reddit/feed/popular`, `reddit/feed/news`, and
83 `reddit/feed/home`, plus `reddit/trending-searches`, and keep the posts whose
84 `subreddit` field matches your seeds — that is how you find community threads
85 without a per-subreddit feed.
863. **Mine a thread.** With a post id, call `reddit/posts/{id}` for the post and
87 `reddit/posts/{id}/comments` for the comment tree; capture the upvoted
88 (`score`) verbatim language. Page via `next_cursor`.
894. **Track power users.** Call `reddit/users/{username}` for karma, then
90 `.../posts` and `.../comments` for what an active member contributes across
91 the niche.
925. **Flag outreach safety.** Read each subreddit's rules from `description` and
93 `is_nsfw` before suggesting any participation.
946. **Cite everything.** Every quote ties back to its thread or comment; state
95 plainly that coverage is seed-driven, not exhaustive, and report
96 `billing.records_charged`.
97
98## Shape notes
99
100- **`RedditSubreddit`** — keyed by `{name}`. `subscribers_count`,
101 `active_count`, `is_nsfw`, `description` (carries rules), `prefixed_name`
102 (`r/...`).
103- **`RedditPost`** — `title`, `url`, `text`, `created_at`, `subreddit`,
104 `is_stickied`, `is_locked`, `is_nsfw`. Use the `subreddit` field to filter
105 feed results back to a community.
106- **`RedditComment`** — `text`, `score` (upvotes), `author_name`, `is_locked`.
107- **`RedditUser`** — `name`, `karma_total`, `karma_from_posts`,
108 `karma_from_comments`, `is_verified`, `is_employee`.
109
110## Gotchas
111
112- **No keyword search.** You cannot query Reddit by term — discovery comes from
113 the global `feed/*` endpoints, `trending-searches`, and the subreddits/users
114 you already name. Say so in the brief.
115- **No per-subreddit post feed.** `reddit/subreddits/{name}` returns the profile
116 and rules only; to read a community's threads, filter the global feeds by the
117 `subreddit` field, start from a known post id, or read active users' posts.
118- A low balance can silently truncate list pages: check
119 `billing.truncated_due_to_balance` — when true the page is partial.
120
121## Output
122
123Return the records the calling workflow needs, each cited to its thread or
124comment, plus a one-line cost note (`records_charged`). When this skill is used
125directly, a compact community brief is the default:
126
127```markdown
128**r/{subreddit}** — {subscribers} subscribers, {active} active. Recurring questions: {themes}. Verbatim: "{quote}" ({score} upvotes). Outreach rules: {note}. Coverage: seed-driven. Evidence: {URLs}. Records: ~{N}.
129```
130
131## Related skills
132
133- **reddit-community-research** (Lead & Company Research) — turns this read path into a structured community map.
134- **social-listening-brief** (Social Listening), **customer-research** — listening and voice-of-customer work on top of Reddit reads.
135- **unifapi** — the shared data skill: connect MCP and look up exact schemas with `get_operation`.