An r/Perplexity user reported Sonar API credits wiped. An r/ComplexWebScraping user praised HasData because it never drops. How do you know which API is reliable? Build your own uptime benchmark.
Prerequisites
- API keys for 2-3 SERP APIs to compare
- Python 3.8+
- SQLite or PostgreSQL for logging
Walkthrough
Step 1: Define the benchmark queries
Use the same queries across all APIs for fair comparison.
benchmark_queries = [
'best crm software 2026',
'python web framework comparison',
'machine learning deployment',
'competitor analysis tools',
'api pricing comparison',
]Step 2: Build the test harness
Call each API with timing and error tracking.
import requests, time, sqlite3
def test_api(name, url, headers, payload):
start = time.time()
try:
r = requests.post(url, headers=headers, json=payload, timeout=30)
return {'api': name, 'status': r.status_code, 'latency': time.time()-start, 'success': r.status_code==200}
except Exception as e:
return {'api': name, 'status': 0, 'latency': time.time()-start, 'success': False, 'error': str(e)}Step 3: Log results to database
Store each test result with timestamp.
conn = sqlite3.connect('api_uptime.db')
conn.execute('CREATE TABLE IF NOT EXISTS results (ts TEXT, api TEXT, query TEXT, status INT, latency REAL, success INT)')
def log_result(result, query):
conn.execute('INSERT INTO results VALUES (datetime("now"), ?, ?, ?, ?, ?)',
(result['api'], query, result['status'], result['latency'], int(result['success'])))
conn.commit()Step 4: Run on a cron schedule
Test every 15 minutes for a week to get meaningful data.
# crontab: */15 * * * * python benchmark.py
# After 1 week: 672 data points per API
# Compare: uptime %, P50/P95 latency, error patternsStep 5: Generate a comparison report
SQL queries to compare uptime and latency.
SELECT api,
COUNT(*) as total,
SUM(success)*100.0/COUNT(*) as uptime_pct,
AVG(latency) as avg_latency,
MAX(latency) as p100_latency
FROM results
GROUP BY apiPython Example
# Full benchmark harness:
import requests, time, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def bench_scavio(query):
start = time.time()
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query})
return {'latency': time.time()-start, 'status': r.status_code}JavaScript Example
const start = Date.now();
const resp = 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: 'google', query: 'test query'})
});
console.log(`Latency: ${Date.now() - start}ms`);Expected Output
SQLite database with uptime and latency data for multiple SERP APIs. Weekly report showing uptime %, P50/P95 latency, and error patterns.