Install
openclaw skills install @fetcher-sh/google-searchA Google Search API alternative and SERP API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no API key application. Use when the user wants programmatic Google search results as clean JSON, including Google's own operators — site:, filetype:, intitle:, and quoted exact phrases — plus pagination, language (hl), and country/region scoping. Also covers rank tracking input, competitive research, and search-result monitoring without Google's own Custom Search API quota and billing.
openclaw skills install @fetcher-sh/google-searchGoogle's own search results as clean JSON — one plain HTTP GET per call, paid
as you go. Google's search operators pass straight through: site:,
filetype:, intitle:, and quoted exact phrases all work exactly as they do
in the browser. No Custom Search Engine setup, no per-day query quota, no
billing account.
Base URL: https://google.fetcher.sh
Two ways to pay, same data — full mechanics in the fetcher
skill:
# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup
# or via POST /api/credits/topup, see the fetcher skill)
export FETCHER_API_KEY="bby_live_xxxxxxxxxxxx"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://google.fetcher.sh/api/search?query=hello"
# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402
# with machine-readable payment requirements (USDC on Base, Polygon,
# Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.
Every response is { "status": number, "message": string, "data": ... }; the
HTTP status mirrors status.
| Endpoint | What it returns |
|---|---|
/api/search | Google web search results for a query |
Required: query. Optional: safe (SafeSearch), page (pagination), hl
(UI language, e.g. en), country (region scope), count (results per
page — currently 10), noEncode (skip query re-encoding for pre-formatted
operator strings).
Restrict to one site:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=site:github.com x402 payments" -G \
"https://google.fetcher.sh/api/search"
PDFs only:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=agentic commerce filetype:pdf" -G \
"https://google.fetcher.sh/api/search"
Exact phrase:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode 'query="pay per call api"' -G \
"https://google.fetcher.sh/api/search"
Localized results (UK, French UI) and pagination:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=agentic commerce" -G \
--data-urlencode "country=GB" \
--data-urlencode "hl=fr" \
--data-urlencode "page=2" \
"https://google.fetcher.sh/api/search"
Combine operators — title match plus site restriction:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=intitle:pricing site:x402.org" -G \
"https://google.fetcher.sh/api/search"
{
"mcpServers": {
"google-search": {
"url": "https://google.fetcher.sh/mcp",
"headers": { "Authorization": "Bearer bby_live_..." }
}
}
}
Free: search_endpoints, describe_endpoint, check_balance. Paid:
fetch_data (any endpoint above), topup_credits, plus the named shortcut
google_search. Drop the headers block to pay per call with x402 instead —
see the fetcher skill for the full flow.
400 — missing/invalid parameter (message names it)401 — unknown or rotated key402 — payment required (x402 challenge) or topup_required (credits
exhausted)404 — not a priced pathfetcher skill