Instale o SerpHubAPI
Quatro formas de usar, conforme o seu caso — em um agente, no código, para testar ou em lote. Todas usam a mesma chave e a mesma carteira.
Primeiro, gere uma chave em /dashboard/keys (contas novas ganham 1.000 créditos grátis). O servidor MCP é o pacote local serphubapi-mcp (versão 0.1.0, stdio) — não é um endpoint hospedado, então sua chave fica na configuração do seu próprio cliente.
1. No seu agente
Servidor MCP ou SKILL.md — para Claude Code, Cursor, VS Code e outros.
2. No seu código
REST simples: curl ou qualquer cliente HTTP, sem agente.
3. Teste antes
Playground no console, depois de entrar.
4. Em lote
Até 5 buscas por chamada com /v1/batch.
No seu agente: MCP
Uma linha para o Claude Code, o mesmo bloco stdio para todos os outros clientes — comando uvx, argumento serphubapi-mcp, sua chave no ambiente.
Claude Code
claude mcp add serphubapi -e SERPHUBAPI_API_KEY=shapi_xxxxxxxx -- uvx serphubapi-mcp
A instalação é só isso: seu agente ganha list_services, search, batch e fetch. O servidor precisa do uv instalado (ele fornece o uvx) e se comunica com https://api.serphubapi.com.
Cursor
Arquivo: ~/.cursor/mcp.json (ou .cursor/mcp.json em um projeto).
{
"mcpServers": {
"serphubapi": {
"command": "uvx",
"args": ["serphubapi-mcp"],
"env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
}
}
}VS Code
Arquivo: .vscode/mcp.json. O VS Code usa servers em vez de mcpServers como chave de nível superior.
{
"servers": {
"serphubapi": {
"command": "uvx",
"args": ["serphubapi-mcp"],
"env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
}
}
}Windsurf
Arquivo: ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"serphubapi": {
"command": "uvx",
"args": ["serphubapi-mcp"],
"env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
}
}
}Cline
No Cline, abra as configurações de MCP Servers e adicione o mesmo bloco.
{
"mcpServers": {
"serphubapi": {
"command": "uvx",
"args": ["serphubapi-mcp"],
"env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
}
}
}OpenCode
Arquivo: opencode.json. O OpenCode descreve um servidor local com type local e uma lista em command.
{
"mcp": {
"serphubapi": {
"type": "local",
"command": ["uvx", "serphubapi-mcp"],
"environment": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
}
}
}Ferramentas e preços: list_services é grátis; search custa o preço do serviço (ex.: google/web 10 créditos, cache_first metade, 0 em acerto de cache) mais 3 por página de conteúdo; fetch custa 5 créditos por página, 0 em caso de falha; batch cobra cada item como uma busca. Referência completa: Documentação do MCP →
Skill: para agentes que chamam a API diretamente
Se o seu agente chama HTTP diretamente em vez de usar MCP, entregue a ele o SKILL.md da raiz do repositório. Ele explica quando buscar, quando pedir uma resposta com citações, quando extrair uma página e como fazer buscas em lote.
# In your agent's skills folder, or pasted into its instructions: # https://github.com/sou2026x/serp/blob/main/SKILL.md
Os mesmos endpoints, sem MCP: POST /v1/search, POST /v1/ai-search, POST /v1/fetch e POST /v1/batch, todos com o header X-API-Key.
Se as ferramentas não aparecerem
- Rode uvx serphubapi-mcp em um terminal: se ele iniciar, o pacote está ok e o problema é a configuração do cliente.
- Confira a chave: ela começa com shapi_ (chaves antigas começam com fapi_ e continuam funcionando).
- Reinicie o cliente depois de editar a configuração e acompanhe seus gastos em /dashboard/logs.
No código: REST simples
Não precisa de agente. Toda chamada é um POST com sua chave no header X-API-Key; chamadas com falha, vazias ou com acerto de cache são grátis. Referência completa: Documentação da API →
curl -s https://api.serphubapi.com/v1/search \
-H "X-API-Key: shapi_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"q": "best espresso machine 2026", "engine": "google", "num": 5}'import json, urllib.request
req = urllib.request.Request(
"https://api.serphubapi.com/v1/search",
data=json.dumps({"q": "best espresso machine 2026", "engine": "google", "num": 5}).encode(),
headers={"X-API-Key": "shapi_xxxxxxxx", "Content-Type": "application/json"},
)
with urllib.request.urlopen(req) as r:
print(json.load(r)["results"])Outros endpoints com a mesma chave: POST /v1/ai-search para uma resposta com citações, POST /v1/fetch para transformar uma página em Markdown, POST /v1/batch para até 5 buscas em uma chamada.
Teste antes: Playground
Cadastre-se e teste sem configurar nada: entre e faça buscas no Playground do console, cobradas pela tarifa padrão. Contas novas ganham 1.000 créditos grátis.
Em lote: busca em lote
Para pipelines de dados e comparações: até 5 buscas independentes em uma chamada. Cada item é cobrado como uma busca individual, e a falha de um item não bloqueia os demais.
curl -s https://api.serphubapi.com/v1/batch \
-H "X-API-Key: shapi_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"queries": [{"q": "espresso", "engine": "google"}, {"q": "espresso", "engine": "xiaohongshu", "type": "notes"}]}'A resposta sempre retorna JSON, com resultados por item e meta.total_credits_charged para a chamada inteira.
Faça sua primeira chamada em cinco minutos
1.000 créditos grátis no cadastro. Sem cartão de crédito.