Resposta rápida
O que contém uma resposta da SERP API do SerpCrypto?
Cada resposta SerpCrypto é um objeto JSON: search_metadata (status, engine, créditos usados), search_parameters (as configurações aplicadas), search_information, depois um bloco por parte da página de resultados, como organic_results, ai_overview, people_also_ask ou local_results. Partes ausentes simplesmente não aparecem. Uma página custa 1 crédito, a partir de US$ 0,30/1K pesquisas; pago com cripto, sem KYC.
Como é uma resposta completa do Google?
O exemplo abaixo é uma pesquisa no Google por standing desk no Reino Unido, encurtada para um item por array. Uma resposta real tem cerca de dez resultados orgânicos e todos os outros blocos que a página mostrou para essa consulta, localização e dispositivo.
{
"search_metadata": {
"id": "srch_2b81d0c6fa47",
"status": "success",
"engine": "google",
"created_at": "2026-10-22T10:02:31Z",
"credits_used": 1
},
"search_parameters": {
"engine": "google",
"q": "standing desk",
"gl": "gb",
"hl": "en",
"google_domain": "google.co.uk",
"device": "desktop",
"page": 1
},
"search_information": { "total_results": 52400000, "query_displayed": "standing desk" },
"ai_overview": {
"text": "A standing desk lets you work while standing or sitting…",
"references": [
{ "index": 1, "title": "How to choose a standing desk", "link": "https://www.example.co.uk/guide", "source": "Example Guide" }
]
},
"ads": [
{ "position": 1, "block": "top", "title": "Electric Standing Desks", "link": "https://shop.example.com/desks", "displayed_link": "shop.example.com", "description": "Free delivery on…" }
],
"organic_results": [
{
"position": 1,
"title": "Best standing desks 2026, tested",
"link": "https://www.example.co.uk/best-standing-desks",
"displayed_link": "www.example.co.uk › reviews",
"snippet": "We tested 14 electric and manual desks…",
"date": "12 Oct 2026",
"sitelinks": [ { "title": "Budget picks", "link": "https://www.example.co.uk/best-standing-desks#budget" } ]
}
],
"people_also_ask": [
{ "question": "Is it healthy to stand all day at a desk?", "snippet": "…", "title": "Standing at work", "link": "https://www.example.org/standing" }
],
"shopping_results": [
{ "position": 1, "title": "Example Desk Pro 140 cm", "price": "£299.00", "source": "Example Store", "link": "https://shop.example.com/desk-pro" }
],
"related_searches": [ { "query": "standing desk electric" }, { "query": "standing desk converter" } ],
"pagination": { "current": 1, "next_page": 2 }
}Por que alguns blocos estão faltando na minha resposta?
Porque a página de resultados não os mostrou. O Google decide por consulta, local e dispositivo se mostra anúncios, um AI Overview, um local pack ou top stories. SerpCrypto retorna o que a página mostrou e deixa o resto de fora, em vez de enviar placeholders vazios.
Leia cada bloco com um valor padrão, como nas linhas Python abaixo. A mesma regra vale dentro de um bloco: campos opcionais como date ou sitelinks aparecem apenas nos resultados que os têm.
data = response.json()
# A block is present only when the results page shows it: read with a default.
overview = data.get("ai_overview") or {}
organic = data.get("organic_results", [])
questions = [item["question"] for item in data.get("people_also_ask", [])]
if overview:
print("AI Overview sources:", [ref["link"] for ref in overview.get("references", [])])
print(len(organic), "organic results,", len(questions), "questions")O que tem em search_metadata?
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador da pesquisa. Cite-o quando falar com o suporte. |
status | string | success em uma resposta 200. |
engine | string | A engine que executou a pesquisa. |
created_at | string | Horário da pesquisa, ISO 8601 em UTC. |
credits_used | integer | Créditos consumidos por esta pesquisa: 1 em caso de sucesso. |
O que são search_parameters e search_information?
Armazene search_parameters junto com seus resultados: ele registra exatamente de qual país, idioma, local e dispositivo veio um ranking.
| Campo | Tipo | Descrição |
|---|---|---|
search_parameters | object | Os parâmetros aplicados, com os padrões preenchidos: engine, q, gl, hl, location, google_domain, device, page e os demais que você enviou. |
search_information.total_results | integer | A contagem de resultados exibida pelo mecanismo de busca, quando ele exibiu alguma. É uma estimativa, não um número exato. |
search_information.query_displayed | string | A consulta como a página de resultados a mostrou. |
Quais campos organic_results tem?
Resultados orgânicos são os resultados da web não pagos. No Bing, organic_results tem o mesmo formato.
| Campo | Tipo | Descrição |
|---|---|---|
position | integer | Ordem do resultado neste bloco nesta página, começando em 1. |
title | string | O título do link azul. |
link | string | A URL do resultado. |
displayed_link | string | A URL ou breadcrumb como exibida abaixo do título. |
snippet | string | O texto exibido abaixo do título. |
date | string | Data exibida ao lado do snippet, como escrita na página. Opcional. |
sitelinks | array | Links extras exibidos abaixo do resultado, cada um com title e link. Opcional. |
Como o AI Overview é retornado?
ai_overview só está presente quando o Google mostra um AI Overview para essa consulta e local. Muitas consultas não têm nenhum.
| Campo | Tipo | Descrição |
|---|---|---|
ai_overview.text | string | O texto do AI Overview como exibido na página. |
ai_overview.references[].index | integer | Ordem da fonte no overview. |
ai_overview.references[].title | string | Título da página citada. |
ai_overview.references[].link | string | URL da página citada. |
ai_overview.references[].source | string | Nome do site, como exibido. |
O que ads e people_also_ask contêm?
| Campo | Tipo | Descrição |
|---|---|---|
ads[].position | integer | Ordem dentro do seu bloco. |
ads[].block | string | top ou bottom da página. |
ads[].title, link, displayed_link | string | Título, URL de destino e URL exibida do anúncio. |
ads[].description | string | Texto do anúncio. |
people_also_ask[].question | string | A pergunta como aparece. |
people_also_ask[].snippet | string | O texto da resposta exibido quando a pergunta é aberta. |
people_also_ask[].title, link | string | Título e URL da página de onde vem a resposta. |
Quais outros blocos do Google podem aparecer?
| Bloco | Campos | O que é |
|---|---|---|
local_results | position, title, address, rating, reviews, type | O pacote local: empresas em um mapa para consultas com intenção de lugar. |
knowledge_graph | title, type, description, source.name, source.link | O painel de conhecimento sobre uma pessoa, lugar, empresa ou coisa. |
top_stories | title, link, source, date | Artigos de notícias exibidos em um carrossel. |
inline_videos | title, link, source, duration | Resultados de vídeo exibidos dentro dos resultados da web. |
shopping_results | position, title, price, source, link | Anúncios de produtos exibidos dentro dos resultados da web. |
related_searches | query | Pesquisas sugeridas na parte inferior da página. |
pagination | current, next_page | Número da página atual e da próxima, quando houver. |
O que os outros motores retornam?
Cada vertical mantém a mesma estrutura e adiciona seu próprio array. No Google Maps, local_results é mais completo que o pacote local de uma pesquisa na web.
engine | Array principal | Campos |
|---|---|---|
google_news | news_results | position, title, link, source, date, snippet, thumbnail |
google_images | images_results | position, title, original, original_width, original_height, thumbnail, source, link |
google_maps | local_results | position, title, place_id, address, phone, website, rating, reviews, type, hours, gps_coordinates.latitude, gps_coordinates.longitude |
google_shopping | shopping_results | position, title, price, extracted_price, currency, source, link, delivery, rating, reviews |
bing | organic_results, related_searches | Mesmos campos dos resultados orgânicos do Google |
Como preços, avaliações e datas são tipados?
Os valores mantêm a forma que a página usou quando a página os escreveu como texto. price é uma string com o símbolo da moeda, como £299.00, e o Google Shopping adiciona extracted_price como número com currency como código. rating é um número e reviews um inteiro. Datas como date ficam como escritas na página, por exemplo 12 Oct 2026 ou 3 days ago, então faça o parse no seu próprio código se precisar de um timestamp.
Como faço para montar um ranking geral em várias páginas?
Guarde o número da página junto com cada resultado. position dá a ordem dentro do bloco em uma página, e search_parameters.page indica qual página foi. Cerca de 10 resultados orgânicos por página, como o Google vem entregando desde que deixou de respeitar num=100 em setembro de 2025; cada página extra é mais um crédito.
Para rank tracking, a maioria das equipes guarda link, position, page, gl, location, device e created_at por palavra-chave e por dia. Isso basta para traçar um ranking e explicar uma mudança por local ou dispositivo. Veja rank tracking para o método completo.
Dúvidas sobre o formato da resposta
A nomenclatura dos campos é estável?
Sim, dentro da versão 1. Novos blocos ou campos podem ser adicionados, então ignore chaves que você não conhece. Remover ou renomear um campo viria com uma nova versão no caminho, como /api/v2/.
Consigo obter o HTML bruto da página?
Não. A versão 1 retorna apenas JSON já processado. Os blocos processados cobrem o que a maioria das ferramentas precisa: resultados, anúncios, perguntas, o AI Overview, o pacote local e o knowledge panel.
Por que total_results difere do que eu contei?
É a estimativa que o mecanismo exibe, não uma contagem dos resultados que você consegue paginar. As páginas acabam muito antes desse número; use pagination.next_page para saber se existe outra página.
Uma resposta sem resultados orgânicos consome um crédito?
Sim, se a pesquisa foi bem-sucedida: uma página vazia ainda é um resultado. Só os erros são gratuitos. 1 crédito = 1 solicitação de pesquisa bem-sucedida, que retorna uma página de resultados em qualquer engine compatível. Uma solicitação que falha não é cobrada.