Monitore menções à marca e à concorrência com a API do Google News

Consulte um conjunto de termos de busca em um cronograma, elimine duplicados pelo link do artigo, e veja só o que mudou desde a última execução. Testado com uma resposta real em agosto de 2026.

Você quer saber quando sua empresa, seu produto ou um concorrente é mencionado nas notícias. O Google Alerts já faz algo parecido, mas chega como e-mail no cronograma do próprio Google, misturado na sua caixa de entrada com todos os outros alertas que você já tem rodando, e não tem nada ali para conectar a um script. O que você realmente quer é uma busca que você controla, no seu próprio cronograma, que te avisa só o que mudou desde a última vez que você checou.

O que o /v1/news te dá

Mande uma query para o /v1/news e você recebe de volta news_results, uma lista de artigos com title, snippet, source (o nome da publicação, não um domínio), url, e um campo chamado lastUpdated. Rodamos isso com a frase “web scraping api” enquanto escrevíamos este post, em agosto de 2026, e recebemos 10 artigos por 5 créditos, de fontes incluindo 24-7 Press Release Newswire, HackerNoon e KDnuggets. No seu caso, a busca é o nome da sua marca, do seu produto, ou o nome de um concorrente.

A pegadinha do “desde a última execução”

A forma óbvia de achar artigos novos é comparar o lastUpdated com a última vez que você consultou. Não construa assim. Na nossa amostra, o lastUpdated voltou como “2 days ago” para um artigo e “May 12, 2026” para outro, na mesma resposta. O Google News mistura formatos relativos e absolutos dependendo de quão recente é o artigo, e fazer o parsing correto de “2 days ago” significa saber exatamente quando a requisição rodou, em qual fuso horário, e refazer essa conta toda vez.

O campo url funciona melhor como chave de deduplicação, mesmo não sendo o link puro do site de origem. É um caminho relativo de redirecionamento do Google, começando com /goto?url=, não é algo que você mostraria ao leitor como está, mas cada artigo na resposta recebe um valor diferente, que é exatamente o que uma chave de deduplicação precisa. Mantenha em disco um conjunto de valores de url que você já viu, e trate qualquer coisa fora desse conjunto como novidade.

Consulte como um job agendado

import json
import requests

API_KEY = "faf_live_..."  # sua chave FastAF
SEEN_FILE = "seen_articles.json"

def fetch_news(query):
    resp = requests.get(
        "https://api.fastaf.co/v1/news",
        params={"query": query, "results": 10},
        headers={"Authorization": f"Bearer {API_KEY}"},
        timeout=60,
    )
    resp.raise_for_status()
    return resp.json()["news_results"]

def load_seen():
    try:
        with open(SEEN_FILE) as f:
            return set(json.load(f))
    except FileNotFoundError:
        return set()

def save_seen(seen):
    with open(SEEN_FILE, "w") as f:
        json.dump(sorted(seen), f)

seen = load_seen()
new_articles = []

for term in ["Acme Robotics", "Acme Robotics recall"]:
    for article in fetch_news(term):
        link = article["url"]
        if link in seen:
            continue
        seen.add(link)
        new_articles.append((term, article))

save_seen(seen)

for term, a in new_articles:
    print(f'[{term}] {a["source"]} ({a["lastUpdated"]}): {a["title"]}')

Rode isso pelo cron, ou qualquer agendador que você já use, uma vez por hora ou uma vez por dia. A primeira execução imprime tudo, porque o seen_articles.json ainda não existe. Toda execução seguinte imprime só os artigos cujo url ainda não estava no arquivo: sem reler as menções de ontem, sem e-mail resumo para escanear, só o que é novo.

O que isso não faz

Isso consulta o índice de notícias do Google, não uma torrente de tudo que é publicado em qualquer lugar. Se um veículo não está indexado pelo Google News, uma menção lá não vai aparecer não importa com que frequência você consulte, porque o endpoint vê o mesmo índice que uma pessoa veria na página de resultados. Consultar com mais frequência reduz o intervalo entre a publicação e o Google indexá-la; isso não adiciona fontes que o Google News ainda não tem.

Quanto custa

Uma chamada custa 5 créditos. Monitorar três termos de hora em hora dá 72 chamadas por dia, 360 créditos por dia, cerca de 10.800 créditos por mês: os 20.000 créditos do pacote Starter de $10 cobrem quase dois meses disso, e os 75.000 do pacote Growth de $29 quase sete. Requisições com falha não são cobradas, então errar os termos de busca algumas vezes não custa nada.

Comece com o plano gratuito, 500 créditos e sem cartão, o que dá 100 chamadas: suficiente para rodar alguns termos por um dia e ver como o seu mercado realmente aparece no Google News antes de se comprometer com um cronograma.