Monitore o Google AI Overviews com Python: presença e fontes
Checamos 100 consultas do Google em 19/10/2026: quem recebe um AI Overview, o que ele cita, quão estável é, e um tracker em Python que guarda snapshots.

Chame o /v1/serp e procure um objeto ai_overview na resposta. Se ele estiver lá, text_blocks traz o texto do overview e references as páginas citadas; se não estiver, o Google não mostrou nenhum para aquela consulta. Rodamos 100 consultas assim em 19 de outubro de 2026: 57 tinham um overview, eles citavam 7,5 fontes em média, e cerca de dois terços dos sites citados também apareciam ranqueados na mesma página de resultados. Repetir 20 delas com minutos de intervalo mudou as fontes citadas com muito mais frequência do que a presença do overview.
Este post trata dos AI Overviews na página de resultados normal. Para o AI Mode do Google, que é separado, veja o post sobre o AI Mode; para o acompanhamento clássico de posições, veja monitorar o ranking de palavras-chave.
Como é um AI Overview na resposta da API?
É uma chave ai_overview de nível superior ao lado de organic_results. O que vimos em 19 de outubro de 2026:
ai_overview.text_blocks: uma lista de objetos{type, snippet}. Nos 57 overviews que coletamos, todo bloco tinha o tipoparagraph, até os títulos visuais, e o texto teve em média 232 palavras (de 88 a 415).ai_overview.references: as páginas citadas, cada uma comindex,title,source(o nome de exibição do site) elink. Todos os 425 links eram URLs absolutas, e 32 títulos continham uma tag<b>literal, então remova a marcação antes de exibi-los.answer_boxepeopleAlsoAskedForestavam preenchidos exatamente nas 57 respostas com overview, e trazem fragmentos dele (primeira frase, primeira referência). Teste o próprioai_overview, não esses.
A documentação do Google diz que nenhuma marcação especial é necessária para ser citado: a página precisa estar indexada e elegível a snippet, e os cliques caem no tipo normal de pesquisa na Web do Search Console (Search Central, recursos de IA, atualizado pela última vez em dezembro de 2025). A presença, portanto, é algo que você mede de fora, como o tracker abaixo faz.
Com que frequência as consultas mostram um AI Overview?
Montamos 100 consultas, 20 para cada uma de cinco intenções, e rodamos cada uma uma vez com country=us, idioma padrão, desktop (por volta de 18:00 UTC, 19 de outubro de 2026). Cinco workers em paralelo levaram cerca de 85 segundos.
| Intenção | Consulta de exemplo | Com overview | Parcela |
|---|---|---|---|
| Informacional | how do vaccines work | 19 de 20 | 95% |
| Comercial | best crm for small business | 20 de 20 | 100% |
| Navegacional | netflix | 14 de 20 | 70% |
| Local | plumber in austin tx | 2 de 20 | 10% |
| Desenvolvedor | fix cors error | 2 de 20 | 10% |
| Todas | 57 de 100 | 57% |
Consultas “how” e “best” quase sempre recebiam um. Os dois acertos locais foram “things to do in new orleans” e “pharmacy open 24 hours in atlanta”. Os seis erros navegacionais foram buscas de marca (chatgpt, youtube, netflix, linkedin, paypal login, walmart). As consultas de desenvolvedor nos surpreenderam: só “what is a webhook” e “http 429 too many requests” tiveram um. Com 20 consultas por intenção, trate diferenças de menos de 15 pontos como ruído.
Quantas fontes um AI Overview cita, e elas coincidem com o top 10?
Um overview citou 7,5 fontes em média (mediana 7, faixa de 2 a 13). Comparamos cada site citado com os sites em organic_results daquela resposta, que tiveram em média 8,9 resultados, e não dez completos.
| Intenção | Média de fontes | Sites citados também nos resultados orgânicos | URLs exatas citadas também nos resultados orgânicos |
|---|---|---|---|
| Informacional | 9,4 | 70% | 54% |
| Comercial | 7,2 | 66% | 44% |
| Navegacional | 5,8 | 70% | 49% |
| Local (2 overviews) | 5,5 | 90% | 73% |
| Desenvolvedor (2 overviews) | 5,5 | 45% | 36% |
| Todos os 57 overviews | 7,5 | 69% | 50% |
Todo overview compartilhava ao menos um site com os resultados orgânicos, mas só metade das URLs exatas citadas eram URLs orgânicas. Estar na primeira página torna uma citação provável, não certa, e cerca de um terço dos sites citados nem estava na página. Sem o YouTube, a sobreposição é de 68%.
Quais domínios o Google mais cita?
243 sites distintos foram citados nos 57 overviews. O YouTube liderou com folga.
| Site | Overviews que o citam | Parcela dos 57 |
|---|---|---|
| youtube.com | 38 | 67% |
| reddit.com | 12 | 21% |
| wikipedia.org | 8 | 14% |
| facebook.com | 7 | 12% |
| nytimes.com | 6 | 11% |
| cnet.com | 5 | 9% |
| mayoclinic.org, pcmag.com, rtings.com, apple.com | 4 cada | 7% |
O YouTube apareceu em 16 dos 19 overviews informacionais e em 18 dos 20 comerciais, mas só em 3 dos 14 navegacionais. Um vídeo pode ser a citação, e sites de avaliação (nytimes, cnet, pcmag, rtings) se concentram em consultas “best X”.
Quão estável é um AI Overview entre execuções?
Escolhemos 20 das 100 consultas, de todas as intenções (16 com overview na primeira passada, 4 sem), e as rodamos mais duas vezes: cerca de um minuto depois da primeira passada, e depois cinco minutos depois disso.
| Medida | Resultado |
|---|---|
| Overview presente nas 3 execuções | 15 consultas |
| Overview ausente nas 3 execuções | 3 consultas |
| Presença oscilou | 2 consultas (“facebook login” em 2 de 3, “netflix” em 1 de 3) |
| Mesmo texto e mesmas fontes nas 3 execuções | 5 de 16 |
| Sobreposição média de URLs citadas entre execuções | 72% |
| Sobreposição média de sites citados entre execuções | 78% |
| Similaridade média do texto (nível de palavra) | 64% |
As quatro últimas linhas cobrem as 16 consultas com overview em pelo menos duas execuções. Cinco (incluindo “best vpn” e “how do vaccines work”) voltaram palavra por palavra idênticas. Outras mudaram muito: em “what causes inflation” a contagem de fontes foi 10, 10, 8, e entre as duas últimas execuções seis sites saíram enquanto congress.gov e youtube.com entraram. A presença é em grande parte estável ao longo de minutos; fontes e redação não. Crie alertas para aparecer, desaparecer e para o seu próprio domínio entrar ou sair, não para mudanças de texto.
Como acompanhar AI Overviews todo dia em Python?
Este é o script que rodamos para o conjunto de dados. Ele guarda um snapshot por consulta por execução no SQLite e imprime o que mudou desde o anterior. Defina WATCH_DOMAIN para ser avisado quando você ganhar ou perder uma citação.
import difflib, json, os, sqlite3, sys
from datetime import date
from urllib.parse import urlparse
import requests
API = "https://api.fastaf.co/v1"
KEY = os.environ["FASTAF_API_KEY"]
DB = os.environ.get("AIO_DB", "aio.db")
WATCH = os.environ.get("WATCH_DOMAIN", "") # e.g. example.com
def host(url):
return (urlparse(url).hostname or "").removeprefix("www.")
def parse(data):
ao = data.get("ai_overview")
return {
"has_overview": ao is not None,
"text": " ".join(b.get("snippet", "") for b in (ao or {}).get("text_blocks", [])).strip(),
"sources": [{"title": s.get("title"), "source": s.get("source"), "link": s["link"]}
for s in (ao or {}).get("references", [])],
"organic": [o["link"] for o in data.get("organic_results", [])],
}
def cites(domain, sources):
return any(host(x["link"]) == domain or host(x["link"]).endswith("." + domain) for x in sources)
def fetch(query, country="us"):
r = requests.get(f"{API}/serp", params={"query": query, "country": country},
headers={"Authorization": f"Bearer {KEY}"}, timeout=90)
r.raise_for_status()
return parse(r.json())
def init(db=DB):
conn = sqlite3.connect(db)
conn.execute("""CREATE TABLE IF NOT EXISTS snapshots (
snap TEXT, query TEXT, has_overview INTEGER, text TEXT, sources TEXT, organic TEXT,
taken_at TEXT DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (snap, query))""")
return conn
def save(conn, snap, query, s):
conn.execute("INSERT OR REPLACE INTO snapshots (snap, query, has_overview, text, sources, organic) "
"VALUES (?,?,?,?,?,?)",
(snap, query, int(s["has_overview"]), s["text"],
json.dumps(s["sources"]), json.dumps(s["organic"])))
conn.commit()
O relatório compara os dois últimos snapshots:
def report(conn):
snaps = [r[0] for r in conn.execute(
"SELECT snap FROM snapshots GROUP BY snap ORDER BY MIN(taken_at) DESC LIMIT 2")]
if len(snaps) < 2:
return print("Need two snapshots to compare.")
new, old = snaps
q = "SELECT query, has_overview, text, sources FROM snapshots WHERE snap = ?"
a = {r[0]: r[1:] for r in conn.execute(q, (old,))}
b = {r[0]: r[1:] for r in conn.execute(q, (new,))}
print(f"{old} -> {new}")
for query in sorted(a.keys() & b.keys()):
(had, t0, s0), (has, t1, s1) = a[query], b[query]
if not had and has:
print(f"APPEARED {query}")
elif had and not has:
print(f"DISAPPEARED {query}")
elif has:
if WATCH and cites(WATCH, json.loads(s0)) != cites(WATCH, json.loads(s1)):
print(f"{'GAINED' if cites(WATCH, json.loads(s1)) else 'LOST'} CITATION {query}")
d0 = {host(x["link"]) for x in json.loads(s0)}
d1 = {host(x["link"]) for x in json.loads(s1)}
same = difflib.SequenceMatcher(None, t0.split(), t1.split(), autojunk=False).ratio()
if d0 != d1 or same < 0.9:
print(f"CHANGED {query}: text {same:.0%} alike, +{sorted(d1 - d0)} -{sorted(d0 - d1)}")
if __name__ == "__main__":
snap = sys.argv[1] if len(sys.argv) > 1 else date.today().isoformat()
conn = init()
for query in [q.strip() for q in open("queries.txt") if q.strip()]:
s = fetch(query)
save(conn, snap, query, s)
print(f"{query}: {'overview, %d sources' % len(s['sources']) if s['has_overview'] else 'no overview'}")
report(conn)
Trecho da saída real comparando a nossa segunda e terceira execuções com WATCH_DOMAIN=youtube.com:
LOST CITATION best noise cancelling headphones
CHANGED best noise cancelling headphones: text 21% alike, +['audiophileon.com'] -['youtube.com']
DISAPPEARED netflix
GAINED CITATION what causes inflation
O autojunk=False importa: com o padrão, textos longos parecem muito menos parecidos do que são.
Quanto custa acompanhar AI Overviews?
Uma chamada ao /serp custa 5 créditos e o overview vem na mesma resposta, então o acompanhamento não custa nada a mais. Uma passada por 100 consultas são 500 créditos, exatamente a franquia gratuita, e cerca de $0,25 no pacote Starter ($10 por 20.000 créditos). As mesmas 100 consultas por dia durante 30 dias são 15.000 créditos, $7,50 pelos preços do Starter; veja os preços e a página da SERP API. Duas chamadas extras em 19 de outubro de 2026 retornaram HTTP 200 com X-FastAF-Credits-Used: 5, em 3,9 e 14,4 segundos, então use um timeout folgado, como o script faz.
O que esses dados não mostram?
Um país (us), um idioma, desktop, sem location, uma tarde, e 100 consultas que nós mesmos escrevemos, não uma amostra de tráfego real. A sobreposição de local e de desenvolvedor se apoia em 2 overviews cada. O Google decide por usuário e por momento, então o que a API devolve pode diferir do seu navegador, e a execução de volatilidade cobre seis minutos. Repita com as suas próprias consultas antes de montar uma estratégia em cima desses números.
Resumindo
Verifique ai_overview na resposta do /serp, guarde as references todo dia no SQLite e crie alertas para o aparecimento, o desaparecimento e a entrada ou saída do seu domínio nas citações. Nas nossas 100 consultas, as “how” e “best” quase sempre receberam um overview, as locais e de desenvolvedor raramente, as fontes foram reembaralhadas muito mais que a presença, e o YouTube foi citado em dois terços dos overviews. Pegue 500 créditos grátis e rode a sua lista de consultas no script; a documentação lista todos os parâmetros do /serp.