# Formato de resposta da SERP API: cada bloco e campo do JSON

> A resposta da SERP API do SerpCrypto, campo por campo: search_metadata, organic_results, ai_overview, people_also_ask, local pack, anúncios e arrays por engine.

- URL: https://serpcrypto.com/pt/docs/response/
- Última atualização: 2026-10-22
- Editor: SerpCrypto (https://serpcrypto.com)

Um frame em cada engine, depois um bloco por parte da página de resultados. Esta página lista cada bloco, seus campos e seus tipos. Nos exemplos, IDs, contagens, preços e resultados são ilustrativos.

**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.

*engine=google, gl=gb: valores encurtados e ilustrativos*

```json
{
  "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.

*Python: leia blocos opcionais com segurança*

```python
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](https://serpcrypto.com/pt/use-cases/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.

---

SerpCrypto: O SerpCrypto é uma API de SERP para desenvolvedores e agentes de IA que retorna resultados de pesquisa do Google e do Bing em JSON, pago com cripto e sem envio de documento de identidade. Os créditos de pesquisa pré-pagos a partir de US$ 0,30/1K pesquisas nunca expiram. Sem KYC — sem documento, sem selfie, sem documentos. Pague com cripto.
