SerpBase

Respuestas y errores

Cada respuesta es JSON con el mismo sobre. El éxito o el fallo está en el campo status, no en el estado HTTP: comprueba status y luego lee el resultado.

Respuesta comun

Las respuestas exitosas devuelven la misma metadata superior. Los datos especificos viven en organic, images, news, videos, places o place.

status
requerido
number

requerido

Codigo de estado de negocio. 0 significa exito.

request_id
requerido
string

requerido

ID estable para soporte, reintentos y correlacion de logs.

elapsed_ms
requerido
number

requerido

Duracion observada por gateway en milisegundos.

credits_charged
requerido
number | null

requerido

Creditos cobrados despues de aplicar reembolsos.

search_type
opcional
string

opcional

Tipo de respuesta del producto, si se devuelve.

Errores
error
requerido
string

requerido

Mensaje de error legible.

0
SUCCESS

Solicitud completada. Revisa los campos del producto; no_results no prueba HTTP 404.

Cobrado

1000
INVALID_REQUEST

Cuerpo o parámetros ausentes o inválidos.

Sin cobroCorrige la solicitud antes

1001
UNAUTHORIZED

Clave ausente, inválida o revocada.

Sin cobroCorrige la solicitud antes

1004
NOT_FOUND

Recurso no encontrado en rutas o catálogo del gateway.

Sin cobroCorrige la solicitud antes

1020
INSUFFICIENT_CREDITS

Saldo insuficiente.

Sin cobroCorrige la solicitud antes

1029
RATE_LIMITED

Límite QPS o de concurrencia excedido.

Sin cobroSe puede reintentar

1500
INTERNAL_ERROR

Error interno inesperado.

Sin cobroSe puede reintentar

1502
UPSTREAM_FAILED

El worker devolvió error de obtención o análisis del origen.

Sin cobroSe puede reintentar

1503
SERVICE_UNAVAILABLE

No hay sesión de worker disponible.

Sin cobroSe puede reintentar

1504
UPSTREAM_TIMEOUT

El gateway agotó el tiempo esperando al worker.

Sin cobroSe puede reintentar

JSON
{
  "status": 1001,
  "error": "unauthorized",
  "request_id": "0f3576b2-6e2e-4f1e-bb0e-8cb0d4a60195",
  "elapsed_ms": 0,
  "credits_charged": 0
}
Cabeceras de respuesta

Cada respuesta incluye estas cabeceras para que tu cliente regule el ritmo y decida si reintentar sin analizar el mensaje.

X-RateLimit-Limit
Solicitudes por segundo que permite tu cuenta.
X-RateLimit-Remaining
Solicitudes que aún caben en el segundo actual.
Retry-After
Si se rechaza, segundos a esperar antes de reenviar.
X-SerpBase-Retryable
true si reenviar la misma solicitud puede funcionar; false si hay que cambiarla.
Al contactar con soporte
Incluye el request_id de la respuesta (lo tienen todas, con éxito o error) y la hora de la llamada. Con él localizamos la solicitud en segundos.
Privacidad y retencion
Las consultas pueden registrarse para facturacion, depuracion, prevencion de abuso y logs de cuenta. Revisa la pagina de privacidad.

Tiempos de espera

Configura el tiempo de espera de tu cliente HTTP en 60 segundos; los ejemplos de código de esta documentación ya lo hacen. Cada solicitud termina de nuestro lado en 30 segundos como máximo, con un resultado o un error, así que 60 segundos dejan margen para la red.

  • La mayoría de las solicitudes responden en pocos segundos, pero algunas tardan 15–20 segundos: cuando Google va lento o pide verificación, reintentamos por otras rutas dentro de esos 30 segundos. Un tiempo de espera más corto corta justo las solicitudes que estaban a punto de tener éxito.
  • Si tu cliente se rinde antes, detenemos la solicitud y la reembolsamos, pero no recibes ni resultado ni un error con el que actuar. No pongas el tiempo de espera de tu cliente por debajo de 30 segundos.
  • Si necesitas responder más rápido, indícalo con el parámetro timeout (1–30 segundos) en los endpoints de búsqueda de Google: los reintentos empiezan antes para ajustarse a tu presupuesto y, cuando se agota, recibes status 1504 al instante, sin cobro. Mantén el tiempo de espera de tu cliente HTTP por encima.
  • Si aun así una solicitud falla o se agota el tiempo, vuelve a enviarla; solo se cobra el intento que tiene éxito.