SerpHubAPI
Configuración

Instala SerpHubAPI

Cuatro formas de empezar, según cómo lo uses: en un agente, desde código, para probarlo o por lotes. Las cuatro usan la misma clave y el mismo monedero.

Primero, consigue una clave en /dashboard/keys (los usuarios nuevos reciben 1.000 créditos gratis). El servidor MCP es el paquete local serphubapi-mcp (versión 0.1.0, stdio): no es un endpoint alojado, así que tu clave se queda en la configuración de tu propio cliente.

En tu agente: MCP

Una línea para Claude Code y el mismo bloque stdio para cualquier otro cliente: comando uvx, argumento serphubapi-mcp y tu clave en el entorno.

Claude Code

claude mcp add serphubapi -e SERPHUBAPI_API_KEY=shapi_xxxxxxxx -- uvx serphubapi-mcp

Esa es toda la instalación: tu agente obtiene list_services, search, batch y fetch. El servidor necesita tener uv instalado (proporciona uvx) y se comunica con https://api.serphubapi.com.

Cursor

Archivo: ~/.cursor/mcp.json (o .cursor/mcp.json en un proyecto).

{
  "mcpServers": {
    "serphubapi": {
      "command": "uvx",
      "args": ["serphubapi-mcp"],
      "env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
    }
  }
}

VS Code

Archivo: .vscode/mcp.json. VS Code usa servers en lugar de mcpServers como clave de nivel superior.

{
  "servers": {
    "serphubapi": {
      "command": "uvx",
      "args": ["serphubapi-mcp"],
      "env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
    }
  }
}

Windsurf

Archivo: ~/.codeium/windsurf/mcp_config.json.

{
  "mcpServers": {
    "serphubapi": {
      "command": "uvx",
      "args": ["serphubapi-mcp"],
      "env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
    }
  }
}

Cline

En Cline, abre los ajustes de MCP Servers y añade el mismo bloque.

{
  "mcpServers": {
    "serphubapi": {
      "command": "uvx",
      "args": ["serphubapi-mcp"],
      "env": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
    }
  }
}

OpenCode

Archivo: opencode.json. OpenCode describe un servidor local con type local y una lista de comandos.

{
  "mcp": {
    "serphubapi": {
      "type": "local",
      "command": ["uvx", "serphubapi-mcp"],
      "environment": { "SERPHUBAPI_API_KEY": "shapi_xxxxxxxx" }
    }
  }
}

Herramientas y precios: list_services es gratis; search cuesta el precio del servicio (p. ej., google/web 10 créditos, cache_first la mitad, 0 con acierto de caché) más 3 por cada página de contenido; fetch cuesta 5 créditos por página, 0 si falla; batch cobra cada elemento como una búsqueda. Referencia completa: Documentación de MCP →

Skill: para agentes que llaman a la API directamente

Si tu agente llama a HTTP directamente en lugar de usar MCP, dale el SKILL.md de la raíz del repositorio. Explica cuándo buscar, cuándo pedir una respuesta con citas, cuándo extraer una página y cómo agrupar búsquedas en lotes.

# In your agent's skills folder, or pasted into its instructions:
# https://github.com/sou2026x/serp/blob/main/SKILL.md

Los mismos endpoints, sin MCP: POST /v1/search, POST /v1/ai-search, POST /v1/fetch y POST /v1/batch, todos con la cabecera X-API-Key.

Si las herramientas no aparecen

  • Ejecuta uvx serphubapi-mcp en una terminal: si arranca, el paquete está bien y el problema está en la configuración del cliente.
  • Revisa la clave: empieza por shapi_ (las claves antiguas empiezan por fapi_ y siguen funcionando).
  • Reinicia el cliente después de editar su configuración y revisa tu gasto en /dashboard/logs.

Desde código: REST directamente

No hace falta un agente. Cada llamada es un POST con tu clave en la cabecera X-API-Key; las llamadas fallidas, vacías y con acierto de caché son gratis. Referencia completa: Documentación de la 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"])

Otros endpoints con la misma clave: POST /v1/ai-search para una respuesta con citas, POST /v1/fetch para convertir una página en Markdown y POST /v1/batch para hasta 5 búsquedas en una llamada.

Pruébalo primero: Playground

Regístrate y prueba sin configurar nada: inicia sesión y lanza búsquedas en el Playground de la consola, con la tarifa estándar. Las cuentas nuevas reciben 1.000 créditos gratis.

Abrir el Playground →

Por lotes: búsqueda por lotes

Para pipelines de datos y comparativas: hasta 5 búsquedas independientes en una llamada. Cada elemento se cobra como una búsqueda individual, y si uno falla no bloquea a los demás.

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"}]}'

La respuesta siempre es JSON, con resultados por elemento y meta.total_credits_charged para toda la llamada.

Haz tu primera llamada en cinco minutos

1.000 créditos gratis al registrarte. Sin tarjeta de crédito.