Research · Discuss API — Mine Reddit & Forums for Buyer Pain Points and Verbatim Quotes
Crawl Reddit and discussion forums to surface ranked pain points, verbatim buyer quotes, and source-cited insights — structured outputs your content tools can reference for authenticity.
Mine Reddit and other discussion forums for the pain points your buyers are actually voicing. The agent crawls threads, scores them for signal quality, and surfaces structured pain points + verbatim quotes that downstream content tools can cite.
Conceptual overview
A discussion-research run takes a topic, subreddit list, or seed URL and returns:
- Ranked pain points (scored by signal quality, recency, repetition)
- Verbatim quotes (preserved phrasing — useful for content authenticity)
- Source URLs (every claim cites back to the thread it came from)
- Perspective tags (
asker,expert,vendor,complainer)
Findings persist as RedditThreadCache records and can be queried later. The bootstrap_brand skill runs this automatically; you can also fire it standalone.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/research/discuss | Run a discussion-research job |
| GET | /v1/research/discuss | List discussions |
| GET | /v1/research/discuss/{id} | Get one thread |
| GET | /v1/research/discuss/pain-points | Query the pain-point library |
POST /v1/research/discuss
POST /v1/research/discuss HTTP/1.1
Authorization: Bearer sk_live_***
X-Workspace-Id: ws_acme
{
"topic": "engineering team capacity tracking",
"subreddits": ["r/projectmanagement", "r/engineeringmanagers", "r/cscareerquestions"],
"dateRange": { "from": "2025-11-01", "to": "2026-05-24" },
"signalThreshold": 0.6,
"maxThreads": 30,
"perspectives": ["asker", "complainer"]
}| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
topic | string | yes (one of) | — | Free-form topic |
seedUrls | string[] | yes (one of) | — | Specific URLs to dig into |
subreddits | string[] | no | workspace ICPs' channels | If absent, inferred from ICPs |
dateRange.from / dateRange.to | ISO date | no | last 180 days | — |
signalThreshold | number | no | 0.5 | Drop low-signal threads |
maxThreads | number | no | 20 | Cap total threads ingested |
perspectives | enum[] | no | all | Filter by speaker role |
Response (final result)
{
"invocationId": "inv_***",
"agentId": "agt_***",
"skill": "research.discuss",
"status": "SUCCEEDED",
"creditsUsed": 9,
"result": {
"threadsConsidered": 184,
"threadsIngested": 24,
"painPoints": [
{
"id": "pain_***",
"topic": "Cross-team capacity tracking is invisible until it's too late",
"signalScore": 0.91,
"verbatimQuotes": [
"We didn't know we were 30% over until the sprint review",
"I've started keeping my own spreadsheet because the tool doesn't show capacity"
],
"sources": [
"https://reddit.com/r/projectmanagement/comments/abc123/...",
"https://reddit.com/r/engineeringmanagers/comments/xyz789/..."
],
"perspective": "complainer"
},
{
"id": "pain_***",
"topic": "Estimating velocity for distributed teams across time zones",
"signalScore": 0.84,
"verbatimQuotes": ["..."],
"sources": ["..."],
"perspective": "asker"
}
],
"threads": [
{
"id": "thd_***",
"url": "https://reddit.com/r/projectmanagement/comments/abc",
"subreddit": "r/projectmanagement",
"title": "Best way to track capacity in a 12-person engineering team?",
"score": 127,
"comments": 48,
"createdAt": "2026-04-12T...",
"perspective": "asker",
"summary": "Eng manager asking for tooling recommendations ..."
}
]
},
"raw": "Crawled 3 subreddits over 6 months, 184 threads. Filtered to 24 high-signal. Dominant theme: capacity invisibility ...",
"files": ["agent-workspace/threads.md", "agent-output/pain-points.json"]
}GET /v1/research/discuss
curl -G .../v1/research/discuss \
--data-urlencode "topic=capacity tracking" \
--data-urlencode "perspective=complainer" \
--data-urlencode "since=2026-04-01T00:00:00Z"| Param | Notes |
|---|---|
topic | Substring match |
subreddit | Filter |
perspective | enum |
minSignal | Score floor |
since / until | ISO dates |
GET /v1/research/discuss/{id}
curl https://api.citationbench.com/v1/research/discuss/thd_***Returns the full thread + extracted quotes + parent invocation metadata.
GET /v1/research/discuss/pain-points
A first-class query over the pain-point library across all your discussion research.
curl -G .../v1/research/discuss/pain-points \
--data-urlencode "minSignal=0.7" \
--data-urlencode "topicContains=capacity"{
"data": [
{
"id": "pain_***",
"topic": "...",
"signalScore": 0.91,
"lastSeenAt": "..."
}
],
"total": 47
}Useful for content planning: "give me the top 20 pain points this quarter, sort by signal."
MCP
> Research discussions about engineering team capacity tracking on Reddit.Claude calls research.discuss.research.
> Top pain points this month — signal above 0.7.Claude calls research.discuss.pain_points.list.
Errors
| Status | Code | Cause |
|---|---|---|
| 400 | validation_error | Need either topic or seedUrls |
| 503 | reddit_unavailable | Reddit rate limited or down |
Cost
| Action | Credits |
|---|---|
POST /v1/research/discuss | ~10 per topic (varies by maxThreads) |
| GETs | free |
Use cases (string things together)
A. Drive content briefs from pain points
# 1. Research discussions
INV=$(curl -sf -X POST .../v1/research/discuss -d '{
"topic": "engineering team capacity tracking"
}' | jq -r '.invocationId')
# 2. Once complete, pull top pain points
# 3. Create blog post briefs from them
PAIN_TOPICS=$(curl -sf .../v1/research/discuss/pain-points --data-urlencode "minSignal=0.7" \
| jq -r '.data[].topic' | head -5)
# 4. One blog post per top pain
echo "$PAIN_TOPICS" | while read TOPIC; do
curl -X POST .../v1/produce/blog-post -d "{
\"topic\": \"$TOPIC\",
\"mode\": \"with-research\"
}"
doneB. Authentic content with citations
The produce.blog_post and produce.refine skills can read research.discuss.pain_points and weave verbatim quotes into the content (with citations back to the original thread).
C. Cron daily pain-point monitoring
curl -X POST .../v1/agent/invoke -d '{
"skill": "agent.scheduled",
"input": {
"action": "research.discuss.research",
"schedule": "daily:07:00",
"config": {
"topic": "{{ workspace.brand.primaryKeyword }}",
"dateRange": { "from": "{{ today-1 }}", "to": "{{ today }}" }
}
}
}'Surfaces new pain points each morning.
Related
- API: Research · keyword
- API: Production · blog post
- Concept: Agent
- Playbook: Daily Reddit pain-point monitoring
ICP
Generate, edit, and persist Ideal Customer Profile segments from a domain or seed text — heavyweight context that drives keyword labeling, content angles, outreach personalization, and forum selection.
AI citation
CitationBench's AI citation tracking API monitors when ChatGPT, Perplexity, Claude, Gemini, and Google AI Overviews cite your domain or competitors — per prompt, per LLM, per day with variance smoothing.