The Problem
Most SERP APIs were designed in 2018 for SEO dashboards, not for tool-using agents. They return HTML fragments, inconsistent field names, or optional keys that only exist when the planet aligns. An agent that has to guess whether to call item.link or item.url or item.href for every result is an agent that fails ten percent of the time in production. Function-calling models need a schema they can trust on every call, and they need fields named in ways that map cleanly to what the LLM has already seen in pretraining data.
The Scavio Solution
Scavio was built with function calling in mind. Every response conforms to a documented schema, required fields are always present, and optional fields use stable names. Positions are integers, snippets are plain text, and rich answers like AI Overviews or Knowledge Graph panels arrive in dedicated keys with typed subfields. The whole response can be pasted directly into a JSON mode tool definition with no reshaping. Your agent gets deterministic structure, which means deterministic behavior.
Before
Before Scavio, agent teams wrote a Zod or Pydantic adapter for every SERP vendor and spent release weeks debugging why the agent hallucinated a missing field.
After
After Scavio, the vendor response is the tool response. The agent ingests structured JSON, the function call resolves, and the agent moves to the next step without a repair loop.
Who It Is For
Agent developers using OpenAI tool calling, Anthropic tool use, LangChain, LlamaIndex, or custom ReAct loops. Anyone who has debugged a hallucinated field name at two in the morning knows why this matters.
Key Benefits
- Documented JSON schema stable across versions
- Required fields are never missing, even on zero-result queries
- AI Overviews and Knowledge Graph as first-class typed objects
- Field names optimized for LLM tool-calling prompts
- Ready to drop into OpenAI, Anthropic, or Gemini function schemas
Python Example
import requests
import json
API_KEY = "your_scavio_api_key"
def search_tool(query: str) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query},
timeout=10,
)
return r.json()
# Drop the output straight into an LLM tool call
result = search_tool("openai devday 2026 announcements")
print(json.dumps({
"organic": result["organic"][:3],
"ai_overview": result.get("ai_overview"),
"knowledge_graph": result.get("knowledge_graph"),
}, indent=2))JavaScript Example
const API_KEY = "your_scavio_api_key";
async function searchTool(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: {
"x-api-key": API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({ platform: "google", query }),
});
return res.json();
}
const result = await searchTool("openai devday 2026 announcements");
console.log(JSON.stringify({
organic: result.organic.slice(0, 3),
ai_overview: result.ai_overview,
knowledge_graph: result.knowledge_graph,
}, null, 2));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