SEO Técnico

Search Console API e BigQuery: como passar do limite de 1.000 linhas

O Search Console exporta só 1.000 linhas. Veja como usar a Search Console API (até 50 mil linhas por dia) e a exportação em massa para o BigQuery, com SQL pronto.

Neste artigo
TL;DRResumo em 30 segundos

A interface do Search Console mostra e exporta no máximo 1.000 linhas por relatório. Há dois caminhos para ir além: a Search Console API, que devolve até 25 mil linhas por chamada e até 50 mil linhas por dia por tipo de busca, e a exportação de dados em massa para o BigQuery, que manda todos os dados de desempenho todo dia, menos as consultas anônimas. A API é melhor para puxar histórico e relatórios pontuais; o BigQuery, para análise contínua e sites grandes.

  • 1A exportação para o BigQuery não traz histórico: ela começa no dia em que é configurada. Para os 16 meses anteriores, use a API.
  • 2No BigQuery, a posição média é SUM(sum_top_position) / SUM(impressions) + 1, porque a posição começa em zero.
  • 3Configure a validade das partições e sempre filtre por data_date nas consultas, para controlar o custo.

Por que o Search Console limita a 1.000 linhas?

Porque a interface foi feita para leitura rápida, não para análise completa: cada relatório de desempenho mostra e exporta no máximo 1.000 linhas. Para um site pequeno, isso basta. Para um site com milhares de páginas ou de consultas, 1.000 linhas são uma amostra do topo.

O problema aparece em tarefas comuns de SEO:

  • Encontrar a cauda longa: as consultas com poucas impressões, que somadas costumam ser a maior parte do tráfego, ficam de fora.
  • Cruzar consulta e página: a combinação das duas dimensões explode o número de linhas.
  • Analisar seções do site: blog, categorias e produtos, cada um com centenas de URLs.
  • Guardar histórico: o Search Console guarda 16 meses. O que passa disso some.

Há dois caminhos oficiais para ir além, e eles se complementam.

Search Console APIExportação em massa para o BigQuery
VolumeAté 25 mil linhas por chamada e 50 mil por dia, por tipo de buscaTodos os dados de desempenho, exceto as consultas anônimas
HistóricoOs últimos 16 mesesSó a partir da configuração, sem dados anteriores
FrequênciaQuando você chamarAutomática, todo dia
Precisa programar?Sim (ou uma ferramenta que use a API)Não para exportar; SQL para analisar
CustoGrátis, dentro das cotasArmazenamento e consultas do BigQuery
Melhor paraHistórico, relatórios pontuais, integraçõesSites grandes e análise contínua

Como usar a Search Console API?

Crie uma conta de serviço no Google Cloud, adicione o e-mail dela como usuário da propriedade no Search Console e chame o método searchanalytics.query, paginando de 25 mil em 25 mil linhas. O mesmo método alimenta o relatório de desempenho da interface.

Os limites que importam

  • Até 25 mil linhas por chamada, controladas pelo parâmetro rowLimit.
  • Paginação pelo startRow: repita a mesma consulta somando 25 mil ao startRow, até a resposta vir sem linhas.
  • Até 50 mil linhas por dia, por tipo de busca, ordenadas por cliques. Para ir além, consulte dia a dia e tipo a tipo (web, image, video, news, discover).
  • Parte dos dados pode ser descartada quando você agrupa por página e consulta ao mesmo tempo, segundo a documentação, para o cálculo terminar em tempo razoável.

O passo a passo

  1. Crie um projeto no Google Cloud e ative a Google Search Console API.
  2. Crie uma conta de serviço e baixe a chave em JSON.
  3. Adicione o e-mail da conta de serviço como usuário da propriedade, no Search Console, em Configurações > Usuários e permissões.
  4. Faça a consulta, dia a dia, paginando.

Um exemplo em Python, que puxa consultas e páginas de um dia inteiro:

search_console.py
from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    "chave.json", scopes=["https://www.googleapis.com/auth/webmasters.readonly"]
)
gsc = build("searchconsole", "v1", credentials=creds)

def puxar_dia(site, dia, tipo="web"):
    linhas, inicio = [], 0
    while True:
        resp = gsc.searchanalytics().query(siteUrl=site, body={
            "startDate": dia, "endDate": dia,
            "dimensions": ["query", "page"],
            "type": tipo,
            "rowLimit": 25000,
            "startRow": inicio,
        }).execute()
        lote = resp.get("rows", [])
        if not lote:
            return linhas
        linhas += lote
        inicio += 25000

dados = puxar_dia("sc-domain:seusite.com.br", "2026-10-01")
print(len(dados), "linhas")

Para uma propriedade de domínio, o siteUrl é sc-domain:seusite.com.br; para uma propriedade de prefixo de URL, é o endereço completo, com a barra no final.

Como configurar a exportação em massa para o BigQuery?

Prepare um projeto do Google Cloud com faturamento, dê permissão à conta de serviço do Search Console e ative a exportação em Configurações > Exportação de dados em massa. A partir daí, o Google manda os dados de desempenho para o BigQuery todo dia, sem código.

  1. Projeto com faturamento: o BigQuery precisa de uma conta de faturamento, mesmo que o uso fique dentro da faixa gratuita.
  2. Ative as APIs BigQuery e BigQuery Storage, em APIs e serviços.
  3. Dê permissão à conta do Search Console: em IAM e administrador, adicione [email protected] com as funções Usuário de jobs do BigQuery e Editor de dados do BigQuery.
  4. No Search Console, abra Configurações > Exportação de dados em massa e informe o ID do projeto (não o número).
  5. Escolha o nome do conjunto de dados, que sempre começa com searchconsole, e a região. A região não muda com facilidade depois.
  6. Confirme. A primeira exportação chega em até 48 horas.

O que chega no BigQuery

TabelaO que tem
searchdata_site_impressionDesempenho agregado por propriedade, com consulta, país, dispositivo e tipo de busca
searchdata_url_impressionDesempenho por URL, com as mesmas dimensões e a página
ExportLogRegistro das exportações que deram certo

As colunas mais usadas: data_date (a data, no horário do Pacífico), query, is_anonymized_query, url, country (código do país com três letras, no padrão ISO 3166-1), device, search_type, impressions, clicks e sum_top_position ou sum_position (soma das posições, começando em zero).

Que consultas SQL fazer primeiro?

Comece pelas que a interface não responde: cauda longa completa, consultas por página e evolução por seção do site. Troque seu_projeto.searchconsole pelo seu projeto e conjunto de dados.

Posição média do jeito certo

A posição na exportação começa em zero, então a conta é a soma das posições dividida pelas impressões, mais um:

sql
SELECT
  query,
  SUM(clicks) AS cliques,
  SUM(impressions) AS impressoes,
  SAFE_DIVIDE(SUM(clicks), SUM(impressions)) AS ctr,
  SAFE_DIVIDE(SUM(sum_top_position), SUM(impressions)) + 1 AS posicao_media
FROM `seu_projeto.searchconsole.searchdata_site_impression`
WHERE data_date BETWEEN '2026-09-01' AND '2026-09-30'
  AND LOWER(search_type) = 'web'
  AND NOT is_anonymized_query
GROUP BY query
ORDER BY impressoes DESC

Consultas quase na primeira página

Consultas entre as posições 8 e 20, com muitas impressões, são as mais fáceis de subir:

sql
SELECT
  url,
  query,
  SUM(impressions) AS impressoes,
  SUM(clicks) AS cliques,
  SAFE_DIVIDE(SUM(sum_position), SUM(impressions)) + 1 AS posicao_media
FROM `seu_projeto.searchconsole.searchdata_url_impression`
WHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY)
  AND LOWER(search_type) = 'web'
  AND NOT is_anonymized_query
GROUP BY url, query
HAVING posicao_media BETWEEN 8 AND 20 AND impressoes > 100
ORDER BY impressoes DESC

Desempenho por seção do site

Agrupe as URLs pelo primeiro diretório para comparar blog, produtos e categorias:

sql
SELECT
  REGEXP_EXTRACT(url, r'^https?://[^/]+(/[^/]*)') AS secao,
  SUM(clicks) AS cliques,
  SUM(impressions) AS impressoes
FROM `seu_projeto.searchconsole.searchdata_url_impression`
WHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY secao
ORDER BY cliques DESC

O mesmo filtro por LOWER(search_type) = 'discover' mostra o desempenho no feed, que tem lógica própria, explicada no post sobre o Google Discover.

Quanto custa?

A exportação não é cobrada pelo Search Console; o BigQuery cobra armazenamento e consultas, e tem uma faixa gratuita mensal. Para sites pequenos e médios, o uso costuma ficar dentro dela.

O que mantém a conta baixa:

  • Validade nas partições, para não acumular anos de dados que ninguém consulta.
  • Filtro de data em toda consulta, para ler só as partições necessárias.
  • Tabelas resumidas para os painéis: em vez de o Looker Studio consultar a tabela bruta a cada abertura, agende uma consulta que gera uma tabela agregada por dia e conecte o painel nela.
  • Alerta de orçamento no faturamento do Google Cloud, para saber se algo saiu do esperado.

API, BigQuery ou os dois?

Os dois, para quem leva dados a sério: a API para o histórico e integrações, o BigQuery para o dia a dia. A escolha depende do tamanho do site e de quem vai usar os dados.

SituaçãoCaminho
Site pequeno, relatório mensalInterface do Search Console, com filtros
Precisa de mais de 1.000 linhas de vez em quandoSearch Console API ou uma ferramenta que use a API
Site grande, muitas páginas e consultasExportação em massa para o BigQuery
Painel no Looker Studio com dados completosBigQuery com tabelas resumidas
Quer os 16 meses anteriores à exportaçãoAPI, uma vez, salvando no BigQuery

O relatório de IA do Search Console, que mostra as impressões nos AI Overviews e no Modo IA, tem regras próprias de leitura, explicadas no guia do relatório de IA.

Quais erros evitar?

ErroO que fazer no lugar
Tirar a média da coluna de posiçãoSUM(sum_top_position) / SUM(impressions) + 1
Esperar histórico na exportaçãoPuxar os 16 meses anteriores pela API
Consultar sem filtro de dataFiltrar sempre por data_date
Validade na tabela inteiraValidade nas partições
Mudar o esquema das tabelas exportadasCriar views ou tabelas novas para os ajustes
Painel lendo a tabela brutaTabela agregada, atualizada por consulta agendada
Somar as linhas sem cuidadoAgregar as métricas, porque a exportação traz chaves repetidas

Checklist rápido

0 de 8 itens marcados

FAQ

Perguntas frequentes

É um limite da interface: cada relatório de desempenho mostra e exporta no máximo 1.000 linhas, como consultas ou páginas. Os dados completos existem, mas só saem pela Search Console API ou pela exportação de dados em massa para o BigQuery.

Até 25 mil linhas por chamada, com paginação pelo parâmetro startRow. A documentação informa que a API expõe no máximo 50 mil linhas por dia, por tipo de busca (web, imagem, vídeo, notícias, Discover), ordenadas por cliques.

Não. A exportação em massa começa a partir do dia em que é configurada, e a primeira carga chega em até 48 horas. Para os dados anteriores, que o Search Console guarda por 16 meses, use a Search Console API.

A exportação em si não é cobrada pelo Search Console, mas o BigQuery cobra armazenamento e consultas. O Google Cloud tem uma faixa gratuita mensal de armazenamento e de dados processados que costuma cobrir sites pequenos e médios. Filtrar as consultas por data e definir a validade das partições mantém o custo baixo.

Não. Consultas raras são anonimizadas por privacidade: na exportação, elas aparecem com is_anonymized_query verdadeiro e a consulta vazia. As impressões e os cliques delas continuam somados nos totais.

Fontes e referências

  1. Google for Developers: Getting all your data from the Search Analytics API
  2. Ajuda do Search Console: iniciar uma nova exportação de dados em massa
  3. Ajuda do Search Console: diretrizes e referência das tabelas da exportação
  4. Ajuda do Search Console: sobre a exportação de dados em massa
Patrick Perdigão
Escrito por
Patrick Perdigão
Especialista de SEO na Omie · Instrutor na Alura · Professor na EducaSEO

Mais de 8 anos em SEO técnico e crescimento orgânico. Formado em Marketing Digital & Data Science pela FIAP.