Tony Wang4 min de lecturaCómo hacer scraping de Google Scholar en 2026 (Python y API)
Recopila títulos, autores, citas y enlaces de Google Scholar sin API oficial, y por qué bloquea scrapers y qué funciona.
Google Scholar no tiene API oficial, y es una de las propiedades de Google más difíciles de recopilar a cualquier escala — desafía el tráfico automatizado con CAPTCHAs y bloqueos de IP rápidamente. La vía viable en 2026 es obtener las páginas públicas de resultados de Scholar mediante una API de scraping que gestione proxies y renderizado, y luego parsear los campos que necesites. Esta guía cubre por qué falla la vía casera y cómo hacerlo de forma fiable.
¿Existe una API oficial de Google Scholar en 2026?
No — y nunca la ha habido. A diferencia de Search (que tiene la limitada Custom Search JSON API) o de Maps, Google nunca ha ofrecido una API de Scholar, ni pública ni restringida. El producto Custom Search deja explícito que no cubre Scholar. Así que no hay una forma sancionada y estructurada de consultar Scholar programáticamente; cualquier opción — la librería scholarly, un navegador headless o una API de scraping — consiste en obtener y parsear el HTML público.
¿Es legal hacer scraping de Google Scholar?
Scholar indexa metadatos académicos públicos, y recopilar datos públicos suele tratarse de forma distinta al acceso a cuentas privadas — pero no es incondicional:
- Recopila solo datos de resultados públicos; nada de texto completo protegido por login o paywall.
- Respeta los límites de tasa — las defensas de Scholar existen en parte para proteger el servicio, así que modera el ritmo de las solicitudes y cachea.
- Los metadatos bibliográficos (títulos, autores, número de citas) son ampliamente reutilizables, pero revisa los términos de Google y tu legislación local antes de redistribuirlos comercialmente.
Esto no es asesoría legal — consulta ¿Es legal el web scraping en 2026? para más detalle.
Opción 1: hacerlo tú mismo en Python (y por qué falla)
La librería casera más conocida es scholarly, que parsea el frontend de Scholar:
from scholarly import scholarly
for i, pub in enumerate(scholarly.search_pubs("retrieval augmented generation")):
print(pub["bib"]["title"], pub.get("num_citations"))
if i >= 9:
break
Funciona durante unas cuantas consultas y luego se detiene. Los problemas recurrentes:
- Muros de CAPTCHA, y rápido — Scholar muestra un reCAPTCHA tras un puñado de solicitudes automatizadas desde una IP;
scholarlyincluso documenta que necesitas proxies o un servicio de resolución de CAPTCHA para continuar. - Bloqueos de IP — las IPs de centros de datos se bloquean rápido; necesitas proxies residenciales rotativos para sostener cualquier volumen.
- Sin garantías de paginación — Scholar limita hasta dónde puedes paginar y reordena los resultados, así que los conjuntos de resultados profundos no son fiables.
- Parsing frágil — el HTML no está versionado y cambia sin previo aviso.
Opción 2: herramientas sin código y ya hechas
Los gestores de referencias y las herramientas de navegador pueden capturar una cita o dos, pero no te dan el conjunto de resultados subyacente — títulos, autores, citas y enlaces — en una forma estructurada que puedas almacenar, cruzar o programar. Para un pipeline o un producto, quieres datos ya parseados.
Opción 3: enrutar Scholar a través de una API de scraping
Como no existe un endpoint de Scholar en ningún sitio, el enfoque fiable es obtener la URL pública de resultados de Scholar mediante un endpoint general de web scraping que rota IPs residenciales y renderiza la página, y luego parsear los resultados — los proxies, los reintentos y el manejo anti-bot ya están resueltos por ti:
curl -X POST "https://api.crawlora.net/api/v1/web/scrape" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://scholar.google.com/scholar?q=retrieval+augmented+generation"}'
import requests
from bs4 import BeautifulSoup
h = {"x-api-key": "YOUR_API_KEY"}
q = "retrieval augmented generation"
url = f"https://scholar.google.com/scholar?q={q.replace(' ', '+')}"
# fetch the rendered HTML through the scraping API (handles proxies + anti-bot)
resp = requests.post("https://api.crawlora.net/api/v1/web/scrape",
headers=h, json={"url": url}).json()
html = resp["data"]["html"] # field is illustrative — confirm in the docs
soup = BeautifulSoup(html, "html.parser")
for item in soup.select("div.gs_ri"):
title = item.select_one("h3.gs_rt")
cited = item.select_one("a:-soup-contains('Cited by')")
print(title.get_text(strip=True) if title else "",
cited.get_text(strip=True) if cited else "Cited by 0")
Como la API de scraping se encarga de la rotación de IPs y de las huellas que disparan el CAPTCHA, tú dedicas tu tiempo a parsear los campos que te importan — título, autores y publicación, número de citas y el enlace del resultado — en lugar de pelear contra el bloqueo.
Qué puedes recopilar
- Título del resultado, autores, publicación y año
- El número de citas ("Cited by N") y enlaces a los trabajos que citan
- El enlace al paper o a su página de destino, además de enlaces a PDF donde Scholar los muestra
- La posición del resultado, útil para seguir la visibilidad de un paper para una consulta a lo largo del tiempo
Limitaciones y desafíos comunes
- Bloqueo agresivo. Scholar se defiende con fuerza con CAPTCHA y bloqueos de IP; incluso a través de una API de scraping, mantén las tasas de solicitud moderadas y cachea resultados.
- Sin API estructurada, el parsing es frágil. Estás parseando HTML, así que envuelve los selectores de forma defensiva y espera cambios de layout ocasionales.
- Paginación superficial y reordenada. Scholar limita la profundidad de resultados y reordena por relevancia; trata una extracción como una muestra ranqueada, no como un índice exhaustivo.
- Los números de citas son aproximados y van con retraso. Los recuentos de "Cited by" de Google se actualizan según el calendario de Google y pueden diferir de otras bases de datos de citas.
Fuentes
Dónde encaja esto
Pruébalo primero, gratis: ejecuta una URL de resultados de Scholar en el Free Web Scraper, o comprueba con qué fuerza bloquea bots un objetivo con el Anti-Bot Checker — sin registro.
Scholar es un caso de objetivo difícil dentro del patrón general: sin API, anti-bot fuerte, así que enrutas la obtención a través de un desbloqueador y parseas. Para el kit de herramientas más amplio y fuentes de búsqueda relacionadas, consulta cómo hacer scraping de Google Trends, cómo hacer scraping de Brave Search y cómo elegir una API de web scraping. Para saber por qué un script sencillo se bloquea en primer lugar, consulta tu scraper funciona en local pero devuelve 403 en un servidor.
Empieza probando el endpoint en el Playground, leyendo el esquema de solicitud y respuesta en los docs de la API y revisando los costes en créditos en la página de precios.
Preguntas frecuentes
¿Existe una API de Google Scholar?
No, y nunca la ha habido. A diferencia de Search, que tiene la limitada Custom Search JSON API, Google nunca ha ofrecido una API de Scholar, ni pública ni restringida, y el producto Custom Search deja explícito que no cubre Scholar. Cualquier opción — la librería scholarly de Python, un navegador headless o una API de scraping — obtiene el HTML público de Scholar y lo parsea.
¿Cómo hago scraping de Google Scholar sin que me bloqueen?
Scholar lanza un reCAPTCHA y bloqueos de IP tras un puñado de solicitudes automatizadas desde una IP, por lo que los scripts caseros se atascan rápido. El enfoque práctico es obtener las URLs públicas de resultados de Scholar mediante una API de scraping que rota IPs residenciales y gestiona las huellas que disparan el CAPTCHA, y luego parsear títulos, autores, citas y enlaces del HTML devuelto. Aun así, mantén las tasas de solicitud moderadas y cachea los resultados.
¿Es legal hacer scraping de Google Scholar?
Scholar indexa metadatos académicos públicos, y recopilar datos públicos suele tratarse de forma distinta al acceso a cuentas privadas, pero no es incondicional. Recopila solo datos de resultados públicos (nada de texto completo tras un paywall), respeta los límites de tasa, y revisa los términos de Google y tu legislación local antes de redistribuir con fines comerciales. Los metadatos bibliográficos como títulos, autores y número de citas son ampliamente reutilizables. Esto no es asesoría legal.