Overview
This workflow guides you through evaluating SERP API options by running standardized test queries across vendors and comparing pricing, platform coverage, response latency, and data quality. It produces a decision matrix that procurement can use to select the right vendor for your specific query volume and platform requirements.
Trigger
Manual trigger when evaluating new SERP API vendors
Schedule
Manual trigger during vendor evaluation
Workflow Steps
Define evaluation criteria
List your monthly query volume, required platforms, latency requirements, and budget ceiling. These parameters drive the comparison.
Run test queries on each vendor
Send the same 10 test queries to each vendor API and record response time, result count, and data quality.
Normalize pricing to cost-per-1k queries
Convert each vendor's billing model to a common unit: cost per 1,000 queries at your projected monthly volume.
Score platform coverage
Check which platforms each vendor supports (Google, YouTube, Amazon, Walmart, Reddit, TikTok) and flag gaps against your requirements.
Generate decision matrix
Compile all results into a ranked matrix showing cost, latency, coverage, and quality for each vendor.
Python Implementation
import requests
import time
import json
# Test against Scavio - repeat pattern for other vendors
API_KEY = "your_scavio_api_key"
TEST_QUERIES = [
{"query": "best CRM software 2026", "platform": "google"},
{"query": "wireless earbuds under 100", "platform": "amazon"},
{"query": "python tutorial for beginners", "platform": "youtube"},
{"query": "paper towels bulk", "platform": "walmart"},
{"query": "best project management tool recommendation", "platform": "reddit"},
]
def evaluate_vendor(name: str, api_key: str) -> dict:
results = []
for test in TEST_QUERIES:
start = time.time()
try:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": api_key},
json={"platform": test["platform"], "query": test["query"]},
timeout=15,
)
latency_ms = round((time.time() - start) * 1000)
if res.status_code == 200:
data = res.json()
result_count = len(data.get("organic", []))
results.append({
"query": test["query"],
"platform": test["platform"],
"status": "ok",
"latency_ms": latency_ms,
"result_count": result_count,
"has_metadata": bool(data.get("ai_overview") or data.get("related_searches")),
})
else:
results.append({"query": test["query"], "platform": test["platform"], "status": f"error_{res.status_code}", "latency_ms": latency_ms})
except Exception as e:
results.append({"query": test["query"], "platform": test["platform"], "status": f"exception: {str(e)}"})
ok_results = [r for r in results if r["status"] == "ok"]
avg_latency = sum(r["latency_ms"] for r in ok_results) // max(len(ok_results), 1)
avg_results = sum(r["result_count"] for r in ok_results) // max(len(ok_results), 1)
return {
"vendor": name,
"queries_tested": len(TEST_QUERIES),
"success_rate": f"{len(ok_results)}/{len(TEST_QUERIES)}",
"avg_latency_ms": avg_latency,
"avg_result_count": avg_results,
"platforms_tested": list(set(t["platform"] for t in TEST_QUERIES)),
"details": results,
}
# Evaluate Scavio
# Verified pricing: $0.005/credit, 1 credit per request
# Plans: Free 250/mo, Project $30/7k, Bootstrap $100/28k, Startup $250/85k, Growth $500/200k
evaluation = evaluate_vendor("scavio", API_KEY)
print(f"Vendor: {evaluation['vendor']}")
print(f"Success: {evaluation['success_rate']}, Avg latency: {evaluation['avg_latency_ms']}ms")
print(f"Avg results: {evaluation['avg_result_count']}")
print(f"Platforms: {', '.join(evaluation['platforms_tested'])}")JavaScript Implementation
const API_KEY = "your_scavio_api_key";
const TEST_QUERIES = [
{ query: "best CRM software 2026", platform: "google" },
{ query: "wireless earbuds under 100", platform: "amazon" },
{ query: "python tutorial for beginners", platform: "youtube" },
{ query: "paper towels bulk", platform: "walmart" },
{ query: "best project management tool recommendation", platform: "reddit" },
];
async function evaluateVendor(name, apiKey) {
const results = [];
for (const test of TEST_QUERIES) {
const start = Date.now();
try {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": apiKey, "content-type": "application/json" },
body: JSON.stringify({ platform: test.platform, query: test.query }),
});
const latencyMs = Date.now() - start;
if (res.ok) {
const data = await res.json();
results.push({ query: test.query, platform: test.platform, status: "ok", latencyMs, resultCount: (data.organic ?? []).length });
} else {
results.push({ query: test.query, platform: test.platform, status: `error_${res.status}`, latencyMs });
}
} catch (err) {
results.push({ query: test.query, platform: test.platform, status: "exception" });
}
}
const ok = results.filter((r) => r.status === "ok");
const avgLatency = Math.round(ok.reduce((s, r) => s + r.latencyMs, 0) / Math.max(ok.length, 1));
const avgResults = Math.round(ok.reduce((s, r) => s + r.resultCount, 0) / Math.max(ok.length, 1));
console.log(`${name}: ${ok.length}/${results.length} success, ${avgLatency}ms avg, ${avgResults} avg results`);
return { vendor: name, successRate: `${ok.length}/${results.length}`, avgLatency, avgResults, details: results };
}
await evaluateVendor("scavio", API_KEY);Platforms Used
Web search with knowledge graph, PAA, and AI overviews
YouTube
Video search with transcripts and metadata
Amazon
Product search with prices, ratings, and reviews
Walmart
Product search with pricing and fulfillment data
Community, posts & threaded comments from any subreddit