The Problem
LLM agents crawl your site under dozens of user-agents, some declared (chatgpt-user, perplexitybot), many not. Standard analytics bucket them as 'bot traffic' and drop them. You lose the signal that your content is being read by AI agents right now, which is the single most important AEO metric in 2026.
The Scavio Solution
Drop Scavio's 1x1 pixel in your site's layout. Every agent visit fires the pixel; Scavio parses the user-agent, normalizes to an engine label (chatgpt, perplexity, claude, gemini, unknown-llm), and streams events in real time. You get the true AI-agent traffic curve without maintaining a user-agent registry.
Before
Agents buried in 'other bots', no breakdown by LLM provider, no real-time feed.
After
Clean stream of {engine, route, timestamp} events, live dashboard, anomaly alerts.
Who It Is For
Teams who want real-time visibility into LLM-agent traffic on their site.
Key Benefits
- One-line pixel install, no backend changes
- Real-time streaming feed via websocket or HTTP poll
- Normalized engine labels across 50+ known LLM user-agents
- Detects undeclared LLM agents via request fingerprint heuristics
- Stores 30 days of history per site, free tier
Python Example
import os, requests
SCAVIO = os.environ['SCAVIO_API_KEY']
def recent_agent_visits(site):
r = requests.get('https://api.scavio.dev/api/v1/agentic-traffic/recent',
headers={'x-api-key': SCAVIO},
params={'site': site, 'window': '15m'}).json()
return r.get('events', [])
for e in recent_agent_visits('scavio.dev'):
print(e['engine'], e['route'], e['ts'])JavaScript Example
const H = { 'x-api-key': process.env.SCAVIO_API_KEY };
async function recentVisits(site) {
const url = `https://api.scavio.dev/api/v1/agentic-traffic/recent?site=${site}&window=15m`;
const r = await fetch(url, { headers: H });
return (await r.json()).events || [];
}
for (const e of await recentVisits('scavio.dev')) {
console.log(e.engine, e.route, e.ts);
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews