Reddit reveals what your audience struggles with in their own words. Instead of guessing topics, mine discussions for pain points, FAQs, and product comparisons. This tutorial builds a pipeline that searches Reddit for topic signals, classifies discussions by content angle, and outputs content briefs with user language. Each search costs $0.005.
Prerequisites
- Python 3.8+
- requests library
- A Scavio API key from scavio.dev
- Content topics
Walkthrough
Step 1: Search Reddit for topic signals
Query with different intent suffixes.
import os, requests, json
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def mine(topic):
results = []
for suffix in ['help', 'recommendation', 'vs', 'alternative', 'problem']:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': f'{topic} {suffix}', 'platform': 'reddit', 'country_code': 'us'}).json()
for r in data.get('organic_results', [])[:5]:
results.append({'title': r['title'], 'snippet': r.get('snippet', ''), 'url': r['link']})
print(f'{topic}: {len(results)} discussions (${5 * 0.005:.3f})')
return resultsStep 2: Classify content angles
Sort discussions into comparisons, how-tos, pain points, and recommendations.
def classify(title):
t = title.lower()
if ' vs ' in t or 'alternative' in t: return 'comparison'
if t.startswith('how') or 'tutorial' in t: return 'how_to'
if any(w in t for w in ['problem', 'issue', 'help', 'stuck']): return 'pain_point'
if any(w in t for w in ['recommend', 'best', 'looking for']): return 'recommendation'
return 'discussion'
def analyze(discussions):
angles = Counter()
categorized = {}
for d in discussions:
cat = classify(d['title'])
angles[cat] += 1
categorized.setdefault(cat, []).append(d)
for cat, count in angles.most_common():
print(f' {cat}: {count}')
for d in categorized[cat][:2]: print(f' - {d["title"][:60]}')
return categorizedStep 3: Generate content briefs
Transform classified discussions into briefs.
def briefs(categorized, max=10):
out = []
for cat, discussions in categorized.items():
for d in discussions[:max // 5]:
out.append({'type': cat, 'title': d['title'].rstrip('?').strip(),
'source': d['url'], 'user_language': d['snippet'][:150]})
print(f'\n{len(out)} content briefs:')
for b in out: print(f' [{b["type"]:14}] {b["title"][:55]}')
return outStep 4: Run full pipeline
Mine, classify, and generate briefs.
def run(topics):
all_d = []
for t in topics: all_d.extend(mine(t))
categorized = analyze(all_d)
b = briefs(categorized)
with open('briefs.json', 'w') as f: json.dump(b, f, indent=2)
print(f'Saved to briefs.json')
run(['serp api', 'tiktok analytics'])Python Example
import os, requests
from collections import Counter
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def mine(topic):
results = []
for s in ['help', 'recommendation', 'vs']:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': f'{topic} {s}', 'platform': 'reddit', 'country_code': 'us'}).json()
results.extend(data.get('organic_results', [])[:5])
angles = Counter()
for r in results:
t = r['title'].lower()
if ' vs ' in t: angles['comparison'] += 1
elif 'help' in t: angles['pain_point'] += 1
else: angles['other'] += 1
print(f'{topic}: {len(results)} discussions, {dict(angles)}')
mine('serp api')JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
async function mine(topic) {
const results = [];
for (const s of ['help', 'recommendation', 'vs']) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ query: `${topic} ${s}`, platform: 'reddit', country_code: 'us' })
}).then(r => r.json());
results.push(...(data.organic_results || []).slice(0, 5));
}
console.log(`${topic}: ${results.length} discussions`);
results.slice(0, 3).forEach(r => console.log(` ${r.title.slice(0, 55)}`));
}
mine('serp api').catch(console.error);Expected Output
serp api: 22 discussions ($0.025)
tiktok analytics: 18 discussions ($0.025)
recommendation: 12
- Best SERP API for small startups in 2026
comparison: 9
- Scavio vs SerpAPI vs DataForSEO
pain_point: 7
- SERP API inconsistent results help
10 content briefs:
[recommendation ] Best SERP API for small startups
[comparison ] Scavio vs SerpAPI vs DataForSEO
Saved to briefs.json