Monitoriza menciones de marca y competidores con la API de Google News

Consulta un conjunto de términos en un horario fijo, deduplica por enlace del artículo, y mira solo lo que cambió desde la última vez. Probado con una respuesta real en agosto de 2026.

Quieres saber cuándo se menciona en las noticias tu empresa, tu producto o un competidor. Google Alerts ya hace algo parecido, pero llega como un email en el horario que decide Google, mezclado en tu bandeja con el resto de tus alertas, y no hay nada a lo que enganchar un script. Lo que de verdad quieres es una consulta que controlas tú, con tu propio horario, que te avise solo de lo que cambió desde la última vez que miraste.

Qué te da /v1/news

Envía una query a /v1/news y recibes news_results, una lista de artículos con title, snippet, source (el nombre de la publicación, no un dominio), url, y un campo llamado lastUpdated. Ejecutamos esto con la frase “web scraping api” mientras escribíamos este post, en agosto de 2026, y obtuvimos 10 artículos por 5 créditos, de fuentes como 24-7 Press Release Newswire, HackerNoon y KDnuggets. En tu caso, la consulta será el nombre de tu marca, tu producto o el de un competidor.

El problema con “desde la última vez”

La forma obvia de encontrar artículos nuevos es comparar lastUpdated con la última vez que consultaste. No lo montes así. En nuestra muestra, lastUpdated venía como “2 days ago” para un artículo y “May 12, 2026” para otro, en la misma respuesta. Google News mezcla formatos relativos y absolutos según lo reciente que sea un artículo, y para interpretar bien “2 days ago” hace falta saber exactamente cuándo se hizo la solicitud, en qué zona horaria, y rehacer esa cuenta cada vez.

El campo url funciona mejor como clave de deduplicación, aunque no sea el enlace directo del medio. Es una ruta de redirección relativa de Google, que empieza por /goto?url=, no algo que le mostrarías tal cual a un lector, pero cada artículo de la respuesta trae una distinta, que es justo lo que necesita una clave de deduplicación. Guarda en disco un conjunto con los valores de url que ya has visto, y trata como nuevo todo lo que no esté en ese conjunto.

Consúltalo como un job programado

import json
import requests

API_KEY = "faf_live_..."  # tu clave de 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"]}')

Ejecuta esto desde cron, o el programador que ya uses, una vez a la hora o una vez al día. La primera ejecución imprime todo, porque seen_articles.json todavía no existe. A partir de ahí, cada ejecución imprime solo los artículos cuyo url no estaba ya en el archivo: nada de releer las menciones de ayer, nada de resumen que hojear, solo lo nuevo.

Lo que esto no hace

Esto consulta el índice de noticias de Google, no una fuente que capte todo lo publicado en cualquier sitio. Si un medio no está indexado por Google News, una mención ahí no va a aparecer por mucho que consultes, porque el endpoint ve el mismo índice que vería una persona en la página de resultados. Consultar con más frecuencia acorta el hueco entre la publicación y que Google la indexe, no añade fuentes que Google News no tenga ya.

Cuánto cuesta

Una llamada cuesta 5 créditos. Vigilar tres términos con una hora de diferencia son 72 llamadas al día, 360 créditos al día, unos 10.800 créditos al mes: los 20.000 créditos del pack Starter de $10 cubren casi dos meses, y los 75.000 del pack Growth de $29 casi siete. Las solicitudes fallidas no se cobran, así que equivocarte con los términos de búsqueda unas cuantas veces no cuesta nada.

Empieza con el plan gratuito, 500 créditos sin tarjeta, que son 100 llamadas: suficiente para probar unos pocos términos durante un día y ver cómo se ve de verdad tu mercado en Google News antes de comprometerte con un horario.