google-search — Claude Code skill: what it does, how to install
Fetches raw Google search results as JSON via fetcher.sh with native operators like site: and filetype:. Useful for SERP tracking and research without Google Custom Search quotas.
npx skills add fetcher-sh/fetcher-skills --skill google-search -a claude-codeWhat google-search does
The skill sends an HTTP GET request to https://google.fetcher.sh/api/search and returns parsed JSON. Google search operators pass through without changes. The agent can isolate domains via site:, target document formats using filetype:, or match phrases in quotes. Requests also accept pagination parameter page and regional filter country.
Each call costs $0.005. Users authenticate with prepaid credits via FETCHER_API_KEY in the Authorization: Bearer header, or pay per call via the x402 protocol in USDC across Base, Polygon, Arbitrum, Monad, or Solana. Unpaid queries return an HTTP 402 code.
Fetcher imposes no rate limits on calls. Because settlement happens before upstream delivery, the provider issues no refunds if Google fails upstream. Teams can also connect directly using the remote MCP endpoint at https://google.fetcher.sh/mcp, which exposes the google_search tool.
What it helps with
- fetch clean Google search results in structured JSON
- filter search queries using
site:,filetype:, andintitle:operators - track search engine ranking positions without Google Custom Search quotas
- scope web search queries to specific countries and languages
Example prompts for the agent
- Search Google for all PDF reports on 'agentic commerce filetype:pdf'
- Query Google for 'site:github.com x402 payments' scoped to region GB
- Find exact phrase matches in Google for 'pay per call api'
How to install google-search
1Skills CLI (Vercel)
npx skills add fetcher-sh/fetcher-skills --skill google-search -a claude-code2Manually: put the files in place
~/.claude/skills/google-search/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/google-search/
1Skills CLI (Vercel)
npx skills add fetcher-sh/fetcher-skills --skill google-search -a codex2Manually: put the files in place
.agents/skills/google-search/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add fetcher-sh/fetcher-skills --skill google-search -a cursor2Manually: put the files in place
.cursor/skills/google-search/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install fetcher-sh/fetcher-skills google-search2Manually: put the files in place
.github/skills/google-search/SKILL.md1Skills CLI (Vercel)
npx skills add fetcher-sh/fetcher-skills --skill google-search -a gemini-cli2Platform CLI
gemini skills install https://github.com/fetcher-sh/fetcher-skills --path skills/google-searchManually: put the files in place
.devin/skills/google-search/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add fetcher-sh/fetcher-skills --skill google-search -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about google-search
How do I install google-search in Claude Code?
Run npx skills add fetcher-sh/fetcher-skills --skill google-search -a claude-code. The skill definition will be stored at ~/.claude/skills/google-search/SKILL.md.
What does the google-search skill do?
It queries https://google.fetcher.sh/api/search and returns Google SERP results as clean JSON. The endpoint natively accepts operators like site:, filetype:, and quotes.
How is usage priced and billed?
Each API call costs $0.005. You can pay via prepaid balance using a FETCHER_API_KEY Bearer token or per call in USDC using the x402 protocol.
Source text
SKILL.md · MIT
---
name: google-search
description: >-
A 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.
keywords:
- google-search
- serp-api
- serp-api-alternative
- google-search-api
- web-search
- web-search-api
- x402
- ai-agent
---
# Google Search API
Google'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`
## Authentication
Two ways to pay, same data — full mechanics in the [`fetcher`
skill](../fetcher/SKILL.md):
```bash
# 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 ($0.005/call)
| 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).
## Scenarios
**Restrict to one site:**
```bash
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=site:github.com x402 payments" -G \
"https://google.fetcher.sh/api/search"
```
**PDFs only:**
```bash
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=agentic commerce filetype:pdf" -G \
"https://google.fetcher.sh/api/search"
```
**Exact phrase:**
```bash
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:**
```bash
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:**
```bash
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=intitle:pricing site:x402.org" -G \
"https://google.fetcher.sh/api/search"
```
## MCP
```json
{
"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](../fetcher/SKILL.md) for the full flow.
## Errors
- `400` — missing/invalid parameter (message names it)
- `401` — unknown or rotated key
- `402` — payment required (x402 challenge) or `topup_required` (credits
exhausted)
- `404` — not a priced path
- No rate limits; no refunds on upstream failures (settlement precedes
delivery)
## Reference
- Full agent setup: <https://google.fetcher.sh/skill.md>
- OpenAPI 3.1 contract: <https://google.fetcher.sh/openapi.json>
- Condensed catalog: <https://google.fetcher.sh/llms.txt>
- Payment, credits, and MCP deep dive: [`fetcher` skill](../fetcher/SKILL.md)
- Site: <https://google.fetcher.sh>
© fetcher-sh · MIT · fetcher-sh/fetcher-skills