The Problem
An r/n8n thread asked for a search API that integrates search plus content extraction for LLM workflows. Most APIs return raw HTML that breaks token limits, or stripped snippets that lose meaning.
The Scavio Solution
Wire Scavio's search and extract endpoints directly into n8n HTTP Request nodes. Search returns 10 typed snippets; extract converts the top 1-2 results to markdown. Both share one x-api-key and one credit pool.
Before
Two-vendor stack (Tavily for search + Firecrawl for extract) at ~$60/mo combined.
After
One vendor at $30/mo, same workflow shape, plus Reddit and YouTube as bonus surfaces.
Who It Is For
n8n users running LLM workflows, RevOps teams building research pipelines, automation engineers.
Key Benefits
- One vendor for search + extract
- $30/mo vs $60/mo for combined Tavily + Firecrawl
- Reddit and YouTube as bonus surfaces
- Drop-in n8n HTTP Request nodes
- Predictable per-query cost
Python Example
import os, requests
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def research(q):
s = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': q}).json()
out = []
for r in s.get('organic_results', [])[:5]:
e = requests.post('https://api.scavio.dev/api/v1/extract', headers=H, json={'url': r['link'], 'format': 'markdown'}).json()
out.append({'url': r['link'], 'md': e.get('markdown', '')[:3000]})
return outJavaScript Example
// In n8n use HTTP Request nodes. The TS equivalent:
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function research(q) {
const s = await fetch('https://api.scavio.dev/api/v1/search', { method:'POST', headers:H, body: JSON.stringify({ query: q }) }).then(r => r.json());
return s;
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit