Install
openclaw skills install @scavio-ai/scavio-googleopenclaw skills install @scavio-ai/scavio-googleSearch Google and return the full structured SERP as JSON — no HTML parsing required. One call returns organic results, ads, knowledge graph, AI overview, related questions, related searches, top stories, videos, and pagination.
Use this skill when the user asks to:
Do not answer from memory when current information is needed. Search first.
Get a free API key at https://scavio.dev (50 free credits to get started, no card required):
export SCAVIO_API_KEY=sk_live_your_key
POST https://api.scavio.dev/api/v2/google
Authorization: Bearer $SCAVIO_API_KEY
Every request costs 1 credit.
query. Add gl/hl to localize by country and language.start (0 = page 1, 10 = page 2, 20 = page 3, ...).time_period when the user wants fresh results.organic_results for the main links; check ai_overview, knowledge_graph, and related_questions for richer answers.| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search query (1-500 chars) |
device | string | desktop | desktop or mobile (SERP layout) |
start | number | 0 | Result offset: 0 = page 1, 10 = page 2, ... (max 990) |
gl | string | -- | Geo country, ISO 3166-1 alpha-2 (e.g. us, gb, de) |
hl | string | -- | UI language, ISO 639-1 (e.g. en, fr, es) |
google_domain | string | google.com | Regional Google domain |
location | string | -- | Canonical location name, auto-UULE (e.g. New York,New York,United States) |
uule | string | -- | Pre-encoded UULE (takes priority over location) |
lr | string | -- | Language restrict (lang_en) |
cr | string | -- | Country restrict (countryUS) |
safe | string | -- | active filters adult content (SafeSearch) |
nfpr | boolean | false | Set true to disable spelling autocorrection |
filter | string | 1 | 0 disables similar/omitted-results filtering |
time_period | string | -- | last_hour, last_day, last_week, last_month, last_year |
resolve_ai_overview | boolean | true | Inline the full AI Overview when Google defers it; set false to skip the extra upstream call |
include_html | boolean | false | Include raw Google HTML in the html field |
import os, requests
response = requests.post(
"https://api.scavio.dev/api/v2/google",
headers={"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"},
json={"query": "langchain agents tutorial", "gl": "us", "hl": "en"},
)
data = response.json()
for r in data["organic_results"]:
print(r["position"], r["title"], r["link"])
{
"search_information": {
"page_title": "langchain agents tutorial - Google Search",
"organic_results_state": "Results for exact spelling"
},
"organic_results": [
{
"position": 1,
"title": "Result title",
"link": "https://example.com",
"displayed_link": "https://example.com › docs",
"snippet": "Snippet text..."
}
],
"related_questions": [],
"related_searches": [],
"response_time": 812,
"credits_used": 1,
"credits_remaining": 999,
"cached": false
}
The response is a faithful passthrough of the SERP. Depending on the query it may also include: ai_overview, knowledge_graph, top_ads, bottom_ads, top_stories, video_results, discussions_and_forums, local_results, local_map, and pagination.
organic_results[].link and result order is position.400 means an invalid parameter — report the message and fix the request.401 means the API key is invalid or missing. Prompt the user to check their SCAVIO_API_KEY.429 means rate or usage limit exceeded. Wait before retrying. See https://scavio.dev/docs/rate-limits.502 / 503 mean upstream is temporarily unavailable. Wait a few seconds before retrying.SCAVIO_API_KEY is not set, prompt the user to export it before continuing.pip install langchain-scavio
from langchain_scavio import ScavioSearchTool
tool = ScavioSearchTool(engine="google")