An r/SideProject thread with 421 comments debated whether to validate before building. The consensus: search Reddit for people actively asking for what you plan to build. If nobody is asking, reconsider. This tutorial automates that validation step using the Scavio Reddit endpoint.
Prerequisites
- Scavio API key
- Python 3.8+
- A side project idea to validate
Walkthrough
Step 1: Define demand signal queries
Create search queries that would indicate demand for your idea.
idea = 'invoice generator for freelancers'
demand_queries = [
f'{idea}',
'need invoice tool freelancer',
'invoice software recommendation',
'tired of manual invoices',
'looking for invoice generator',
]Step 2: Search Reddit via Scavio
Query the Reddit endpoint for each demand signal.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def search_reddit_demand(query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'reddit', 'query': query}).json()
return data.get('results', [])Step 3: Score demand intensity
Count posts, upvotes, and comments as demand signals.
def score_demand(results):
if not results:
return {'score': 0, 'posts': 0}
total_engagement = sum(
r.get('upvotes', 0) + r.get('comments', 0)
for r in results
)
return {
'score': len(results) * 10 + total_engagement,
'posts': len(results),
'engagement': total_engagement,
'top_subreddits': list(set(r.get('subreddit', '') for r in results[:10]))
}Step 4: Generate a demand report
Combine all query results into a go/no-go recommendation.
def demand_report(idea, queries):
total_score = 0
all_subreddits = set()
for q in queries:
results = search_reddit_demand(q)
score = score_demand(results)
total_score += score['score']
all_subreddits.update(score.get('top_subreddits', []))
print(f'Query: "{q}" -> {score["posts"]} posts, score {score["score"]}')
print(f'\nTotal demand score: {total_score}')
print(f'Active subreddits: {", ".join(all_subreddits)}')
if total_score > 200:
print('Verdict: Strong demand. Consider building.')
elif total_score > 50:
print('Verdict: Moderate demand. Narrow the niche.')
else:
print('Verdict: Weak demand. Pivot or find a different angle.')Python Example
import os, requests
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def scan_demand(idea):
queries = [idea, f'need {idea}', f'{idea} recommendation', f'looking for {idea}']
for q in queries:
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'reddit', 'query': q}).json()
posts = data.get('results', [])
print(f'{q}: {len(posts)} posts')
scan_demand('invoice generator for freelancers')JavaScript Example
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'reddit', query: 'need invoice tool freelancer'})
});
const data = await res.json();
console.log(`Found ${data.results?.length || 0} demand signals`);Expected Output
Reddit demand report: post count, engagement score, active subreddits, and go/no-go recommendation. 5 queries = $0.025 total cost.