- Tres opciones: a mano, un scraper propio (proxies, captchas, un parser que mantener) o una API SERP.
- Cuatro trampas en 2026: el fin de num=100, los AI Overviews asíncronos y las SERPs que varían según la ciudad y el dispositivo.
- Con Semscraper: 0,30 € por 1.000 palabras clave en la página 1, 2,10 € por un top 100, sin suscripción.
Qué significa «hacer scraping de Google»
Hacer scraping de Google consiste en recoger automáticamente la página de resultados de una búsqueda (la SERP) para extraer sus datos: resultados orgánicos, anuncios, pack local, preguntas relacionadas, AI Overviews y su posición. Los usos son conocidos: seguimiento de posiciones SEO, vigilancia de la competencia, estudios de mercado, clustering de palabras clave por similitud de SERP y medición de la visibilidad en las respuestas generadas por IA.
Tres formas de hacerlo
1. A mano o con una extensión del navegador
Sirve para unas decenas de palabras clave. Más allá, es demasiado lento, y tu propio historial, tu ubicación y tu cuenta de Google sesgan los resultados.
2. Un scraper propio
Un script que consulta Google por sí mismo. Gratis sobre el papel, pero en la práctica necesitas:
- proxies, idealmente residenciales, y su rotación, porque Google bloquea rápido las direcciones que lo consultan de forma masiva;
- gestión de captchas;
- un navegador headless para renderizar la página, o falta parte del contenido (ver más abajo);
- un parser, que hay que mantener cada vez que Google cambia su diseño;
- la gestión del país, el idioma, la ciudad y el dispositivo.
El coste real son los proxies, los servidores y, sobre todo, el tiempo de mantenimiento.
3. Una API SERP
Un servicio que hace todo esto por ti: envías una palabra clave y sus parámetros, y recibes la SERP estructurada en JSON. La mayoría de las herramientas SEO van por este camino y prefieren pagar por petición antes que mantener una infraestructura de scraping. Para elegir proveedor, consulta nuestras comparativas con SerpApi y DataForSEO.
Qué contiene una SERP en 2026
Una página de resultados ya no es una lista de diez enlaces azules. Según la consulta, Google añade:
- resultados orgánicos;
- anuncios de Google Ads en la parte superior e inferior de la página, y anuncios de Shopping;
- el pack local, con la valoración, el número de reseñas y el rango de precios de cada negocio;
- «Otras preguntas de los usuarios», el fragmento destacado y el Knowledge Graph;
- noticias destacadas, vídeos e imágenes;
- el AI Overview, con las marcas citadas en su texto, sus citas y su panel de fuentes.
Para medir lo que es realmente visible, hay que extraer cada bloque por separado, con la posición de cada uno de sus elementos. La API de Semscraper devuelve cada bloque con su propio tipo: organic, paid_top, local_pack, people_also_ask, ai_overview_citation…
Las cuatro trampas de 2026
El parámetro num=100 ya no funciona
Desde septiembre de 2025, Google ya no muestra 100 resultados en una sola página. Para obtener un top 100 hay que recorrer las páginas una a una. Explicamos el método y su coste en Obtener el top 100 de Google sin num=100.
Los AI Overviews llegan después de cargar la página
En nuestro estudio sobre un millón de palabras clave, el 48% de los AI Overviews carga en asíncrono: no están en el HTML inicial y solo aparecen cuando la página ya se muestra. Un scraper que no renderiza la página se los pierde. Los detalles, en nuestro estudio sobre los AI Overviews en Francia.
La SERP depende de la ciudad
Una búsqueda local, «fontanero» o «restaurante», no devuelve los mismos resultados en dos ciudades distintas. Sin geolocalización, mides una SERP que no ve nadie. Consulta SERPs geolocalizadas.
Escritorio y móvil divergen
Una palabra clave de cada ocho se comporta de forma distinta en los dos dispositivos en cuanto a AI Overviews, y el orden de los bloques cambia. Recoge el dispositivo que importa para tu caso de uso, o los dos.
Ejemplo con la API de Semscraper
Una petición POST crea la recogida, con hasta 1.000 palabras clave por llamada:
curl -X POST 'https://api.semscraper.com/v1/serp' \
-H 'Authorization: Bearer API_KEY' \
-H 'Content-Type: application/json' \
-d '[{"search_engine": "google_search", "keyword": "restaurante", "device": "desktop", "location": "es", "language": "es", "depth": 1, "geolocation": "Madrid, Community of Madrid, Spain"}]'Después recuperas los resultados por ID, en JSON o en HTML, o los recibes directamente en tu URL de callback. Cada resultado incluye su posición dentro de su bloque, su posición en la página, su página de Google y su posición en píxeles. La lista completa de bloques y parámetros está en la página de la API de Google Search.
Los operadores de búsqueda funcionan
Los operadores de Google funcionan tal cual dentro de la palabra clave: site:, inurl:, intitle:, filetype:, comillas o la exclusión de un término con un signo menos. Resulta práctico para listar las páginas indexadas de un sitio o vigilar una marca en un dominio concreto. Una consulta con operador cuesta lo mismo que cualquier otra. Una sola limitación: nada de comas en una palabra clave, ya que la API las usa como separador.
Ejemplo completo en Python
Este script envía tres palabras clave, espera sus resultados y luego muestra para cada una si hay un AI Overview y los tres primeros resultados orgánicos con su posición en píxeles:
import time
import requests
API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}
keywords = ["restaurante madrid", "fontanero barcelona", "abogado divorcio valencia"]
# 1. crear las recogidas, hasta 1.000 palabras clave por llamada
items = [{"search_engine": "google_search", "keyword": k, "device": "desktop",
"location": "es", "language": "es", "depth": 1} for k in keywords]
created = requests.post(API, json=items, headers=HEADERS).json()
ids = [row["id"] for row in created["data"]]
# 2. recuperar los resultados (500 IDs como máximo por llamada), 10 minutos como máximo
done, attempts = {}, 0
while len(done) != len(ids) and attempts < 60:
attempts += 1
time.sleep(10)
res = requests.get(API, params={"ids": ",".join(ids), "output": "json"}, headers=HEADERS).json()
for row in res["data"]:
if row["status"] == "done":
done[row["id"]] = row
# 3. leer cada SERP: AI Overview y después los 3 primeros resultados orgánicos
for row in done.values():
aio = row["serp_info"].get("ai_overview")
print(row["keyword"], "| AI Overview:", aio["type"] if aio else "-")
for block in row["results"]:
if block["type"] == "organic":
for item in block["items"][:3]:
print(" ", item["rank_type"], item["pixel"], "px", item["url"])Para grandes volúmenes, sustituye el bucle de consulta por una URL de callback (callback_url): la API te envía cada resultado en cuanto está listo.
Volúmenes y plazos
Una SERP de una página llega en una mediana de unos treinta segundos, y un top 100 en alrededor de un minuto. Cada llamada puede llevar hasta 1.000 palabras clave. Los robots atienden las cuentas por turnos: el lote grande de otro cliente no retrasa el tuyo, y el tuyo avanza en tu propia cola.
Elegir una API SERP: la checklist
- Paginación real, con la página de cada resultado, para un top 100 fiable.
- Renderizado en un navegador, para capturar los AI Overviews que cargan tarde.
- Geolocalización por ciudad, no solo por país.
- Posición en píxeles, para medir la visibilidad real de un resultado.
- Facturación solo de las páginas encontradas, sin suscripción obligatoria.
- El HTML de la página además del JSON, para comprobar un resultado sorprendente.
- Una cola equitativa entre clientes.
Cuánto cuesta
Con Semscraper, la primera página cuesta 0,30 € por 1.000 palabras clave y cada página adicional 0,20 €, es decir, 2,10 € por 1.000 palabras clave en 10 páginas. Solo se facturan las páginas encontradas, sin suscripción. Los detalles, en la página de precios.
¿Y la legalidad?
Las páginas de resultados son públicas, pero su recogida automática sigue sujeta a las condiciones de uso de Google y, si tratas datos personales, a la normativa de protección de datos, como el RGPD. Esta guía no es asesoramiento jurídico: en caso de duda, haz revisar tu caso de uso.
