SerpBase

Respostas e erros

Cada resposta é JSON com o mesmo envelope. Sucesso ou falha está no campo status, não no status HTTP: verifique status e depois leia o resultado.

Resposta comum

Respostas bem-sucedidas retornam a mesma metadata superior. Os dados especificos ficam em organic, images, news, videos, places ou place.

status
obrigatorio
number

obrigatorio

Codigo de status de negocio. 0 significa sucesso.

request_id
obrigatorio
string

obrigatorio

ID estavel para suporte, retentativas e correlacao de logs.

elapsed_ms
obrigatorio
number

obrigatorio

Duracao observada pelo gateway em milissegundos.

credits_charged
obrigatorio
number | null

obrigatorio

Creditos cobrados apos aplicar reembolsos.

search_type
opcional
string

opcional

Tipo de resposta do produto, quando retornado.

Erros
error
obrigatorio
string

obrigatorio

Mensagem de erro legivel.

0
SUCCESS

Solicitação concluída. Verifique campos do produto; no_results não prova HTTP 404.

Cobrado

1000
INVALID_REQUEST

Corpo ou parâmetros ausentes ou inválidos.

Sem cobrançaCorrija a solicitação antes

1001
UNAUTHORIZED

Chave ausente, inválida ou revogada.

Sem cobrançaCorrija a solicitação antes

1004
NOT_FOUND

Recurso não encontrado nas rotas ou catálogo do gateway.

Sem cobrançaCorrija a solicitação antes

1020
INSUFFICIENT_CREDITS

Saldo insuficiente.

Sem cobrançaCorrija a solicitação antes

1029
RATE_LIMITED

Limite QPS ou de concorrência excedido.

Sem cobrançaPode repetir

1500
INTERNAL_ERROR

Erro interno inesperado.

Sem cobrançaPode repetir

1502
UPSTREAM_FAILED

O worker retornou erro de obtenção ou análise da origem.

Sem cobrançaPode repetir

1503
SERVICE_UNAVAILABLE

Não há sessão de worker disponível.

Sem cobrançaPode repetir

1504
UPSTREAM_TIMEOUT

O gateway excedeu o tempo esperando pelo worker.

Sem cobrançaPode repetir

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

Cada resposta traz estes cabeçalhos para que seu cliente controle o ritmo e decida se repete sem analisar a mensagem.

X-RateLimit-Limit
Solicitações por segundo permitidas na sua conta.
X-RateLimit-Remaining
Solicitações ainda permitidas no segundo atual.
Retry-After
Se recusada, segundos a esperar antes de reenviar.
X-SerpBase-Retryable
true se reenviar a mesma solicitação pode funcionar; false se ela precisa mudar.
Ao falar com o suporte
Inclua o request_id da resposta (todas têm, com sucesso ou erro) e o horário da chamada. Com ele localizamos a solicitação em segundos.
Privacidade e retencao
Consultas podem ser registradas para cobranca, depuracao, prevencao de abuso e logs da conta. Veja a pagina de privacidade.

Tempos limite

Configure o tempo limite do seu cliente HTTP para 60 segundos; os exemplos de código desta documentação já fazem isso. Cada solicitação termina do nosso lado em no máximo 30 segundos, com um resultado ou um erro, então 60 segundos deixam folga para a rede.

  • A maioria das solicitações responde em poucos segundos, mas algumas levam 15–20 segundos: quando o Google está lento ou pede verificação, tentamos de novo por outras rotas dentro desses 30 segundos. Um tempo limite menor corta justamente as solicitações que estavam prestes a dar certo.
  • Se o seu cliente desistir antes, interrompemos a solicitação e reembolsamos, mas você não recebe resultado nem um erro para tratar. Não use um tempo limite do cliente abaixo de 30 segundos.
  • Se precisar responder mais rápido, diga isso com o parâmetro timeout (1–30 segundos) nos endpoints de busca do Google: as novas tentativas começam antes para caber no seu orçamento e, quando ele acaba, você recebe status 1504 na hora, sem cobrança. Mantenha o tempo limite do seu cliente HTTP acima dele.
  • Se mesmo assim uma solicitação falhar ou o tempo esgotar, envie de novo; só a tentativa com sucesso é cobrada.