¿Cómo extraer datos de Google Trends con Python?

Senior Web Scraping Engineer
¿Qué es Google Trends?
Google Trends es una herramienta online gratuita proporcionada por Google que analiza la popularidad de palabras clave o términos de búsqueda específicos en el motor de búsqueda de Google a lo largo del tiempo.
Presenta datos en forma de gráficos para ayudar a los usuarios a comprender la popularidad de búsqueda de un determinado tema o palabra clave, e identifica patrones como fluctuaciones estacionales, tendencias emergentes o interés decreciente. Google Trends no solo admite el análisis de datos globales, sino que también se puede refinar a regiones específicas y proporcionar recomendaciones para términos y temas de búsqueda relacionados.
Google Trends se utiliza ampliamente en investigación de mercado, planificación de contenido, optimización SEO y análisis del comportamiento del usuario, ayudando a los usuarios a tomar decisiones más informadas basadas en datos.
Cómo extraer datos de Google Trends con Python - Guía paso a paso
Por ejemplo: En este artículo, vamos a extraer las tendencias de búsqueda de Google de 'DOGE' del mes anterior.

Paso 1: Requisitos previos
Instalar Python
En Windows
Usando el instalador oficial de Python
-
Descargar el instalador de Python:
- Ve al sitio web oficial de Python.
- El sitio web debería sugerir automáticamente la última versión para Windows. Haz clic en el botón Descargar Python para descargar el instalador.
-
Ejecutar el instalador:
- Abre el archivo
.exe
descargado para iniciar el proceso de instalación.
- Abre el archivo
-
Personalizar la instalación (opcional):
- Asegúrate de marcar la casilla que dice "Agregar Python a PATH" al principio de la ventana de instalación. Esto hace que Python sea accesible desde la línea de comandos (
cmd
o PowerShell). - También puedes hacer clic en "Personalizar instalación" para elegir funciones adicionales como
pip
,IDLE
odocumentación
.
- Asegúrate de marcar la casilla que dice "Agregar Python a PATH" al principio de la ventana de instalación. Esto hace que Python sea accesible desde la línea de comandos (
-
Instalar Python:
- Haz clic en Instalar ahora para instalar Python con la configuración predeterminada.
- Después de la instalación, puedes verificarla abriendo el Símbolo del sistema (
cmd
) y escribiendo:bashpython --version
-
Instalar pip (si es necesario):
- Pip, el gestor de paquetes de Python, se instala de forma predeterminada con las versiones modernas de Python. Puedes comprobar si pip está instalado escribiendo:
bash
pip --version
- Pip, el gestor de paquetes de Python, se instala de forma predeterminada con las versiones modernas de Python. Puedes comprobar si pip está instalado escribiendo:
También puedes instalar Python directamente desde la Tienda Windows (disponible en Windows 10/11). Simplemente busca "Python" en la aplicación Microsoft Store y elige la versión que necesitas.
En macOS
Método 1. Usando Homebrew (Recomendado)
-
Instalar Homebrew (si aún no está instalado):
- Abre la aplicación Terminal.
- Pega el siguiente comando para instalar Homebrew (gestor de paquetes para macOS):
bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
Instalar Python con Homebrew:
- Una vez que Homebrew esté instalado, puedes instalar Python con este comando:
bash
brew install python
- Una vez que Homebrew esté instalado, puedes instalar Python con este comando:
-
Verificar la instalación:
- Después de la instalación, puedes verificar las versiones de Python y pip con los siguientes comandos:
bash
python3 --version pip3 --version
- Después de la instalación, puedes verificar las versiones de Python y pip con los siguientes comandos:
Método 2. Usando el instalador oficial de Python
-
Descargar el instalador de macOS:
- Ve a la Página de descargas de Python.
- Descarga el instalador de macOS más reciente para Python.
-
Ejecutar el instalador:
- Abre el archivo
.pkg
para iniciar el proceso de instalación y sigue las instrucciones.
- Abre el archivo
-
Verificar la instalación:
- Después de la instalación, abre Terminal y comprueba la versión de Python:
bash
python3 --version pip3 --version
- Después de la instalación, abre Terminal y comprueba la versión de Python:
En Linux
Para distribuciones basadas en Debian/Ubuntu
-
Actualizar la lista de paquetes:
- Abre una terminal y ejecuta el siguiente comando para actualizar la lista de paquetes:
bash
sudo apt update
- Abre una terminal y ejecuta el siguiente comando para actualizar la lista de paquetes:
-
Instalar Python:
- Para instalar Python 3 (generalmente la última versión de Python 3.x), ejecuta:
bash
sudo apt install python3
- Para instalar Python 3 (generalmente la última versión de Python 3.x), ejecuta:
-
Instalar pip (si no está instalado):
- Si pip no está instalado, puedes instalarlo con:
bash
sudo apt install python3-pip
- Si pip no está instalado, puedes instalarlo con:
-
Verificar la instalación:
- Para comprobar la versión de Python instalada:
bash
python3 --version pip3 --version
- Para comprobar la versión de Python instalada:
Para distribuciones basadas en Red Hat/Fedora
-
Instalar Python 3:
- Abre una terminal y ejecuta:
bash
sudo dnf install python3
- Abre una terminal y ejecuta:
-
Instalar pip (si es necesario):
- Si
pip
no está instalado de forma predeterminada, puedes instalarlo con:bashsudo dnf install python3-pip
- Si
-
Verificar la instalación:
- Para comprobar la versión de Python instalada:
bash
python3 --version pip3 --version
- Para comprobar la versión de Python instalada:
Para Arch Linux y distribuciones basadas en Arch
-
Instalar Python 3:
- Ejecuta el siguiente comando:
bash
sudo pacman -S python
- Ejecuta el siguiente comando:
-
Instalar pip:
- Pip debería instalarse con Python, pero si no es así, puedes instalarlo con:
bash
sudo pacman -S python-pip
- Pip debería instalarse con Python, pero si no es así, puedes instalarlo con:
-
Verificar la instalación:
- Para comprobar las versiones de Python y pip:
bash
python --version pip --version
- Para comprobar las versiones de Python y pip:
Usando Python a través de Anaconda (Multiplataforma)
Anaconda es una distribución popular para la informática científica y viene con Python, bibliotecas y el gestor de paquetes conda
.
-
Descargar Anaconda:
- Visita la Página de descargas de Anaconda y descarga la versión adecuada para tu plataforma.
-
Instalar Anaconda:
- Sigue las instrucciones de instalación según tu sistema operativo. Anaconda proporciona un instalador gráfico para Windows y macOS, así como instaladores de línea de comandos para todas las plataformas.
-
Verificar la instalación:
-
Después de la instalación, abre una terminal (o Anaconda Prompt en Windows) y comprueba si Python funciona:
bashpython --version
-
También puedes verificar
conda
(el gestor de paquetes para Anaconda):bashconda --version
-
Gestionar versiones de Python (opcional)
Si necesitas gestionar varias versiones de Python en la misma máquina, puedes usar gestores de versiones:
-
pyenv: Un gestor de versiones de Python popular que funciona en Linux y macOS.
- Instala a través de Homebrew o GitHub (para Linux y macOS).
- En Windows, puedes usar pyenv-win.
bashpyenv install 3.9.0 pyenv global 3.9.0
Acceso a la API de Scrapeless y Google Trends
Como aún no hemos desarrollado una biblioteca de terceros para usar, solo necesitas instalar requests para experimentar el servicio de la API de Scrapeless
Shell
pip install requests
Paso 2: Configurar los campos del código que necesitan

A continuación, necesitamos saber cómo obtener los datos que necesitamos a través de la configuración:
- Palabra clave: En este ejemplo, nuestra palabra clave es 'DOGE' (también admitimos la recopilación de datos de comparación de varias palabras clave)
- Configuración de datos:
- País: País de consulta, el predeterminado es 'Mundial'
- Tiempo: Período de tiempo
- Categoría: Tipo
- Propiedad: Fuente
Paso 3: Extraer datos
Ahora, obtengamos los datos objetivo usando código Python:
Python
import json
import requests
class Payload:
def __init__(self, actor, input_data, proxy):
self.actor = actor
self.input = input_data
self.proxy = proxy
def send_request(data_type, search_term):
host = "api.scrapeless.com"
url = f"https://{host}/api/v1/scraper/request"
token = "scrapeless-api-key" # TODO:use your api key
headers = {"x-api-token": token}
input_data = {
"q": search_term,
"date": "today 1-m",
"data_type": data_type,
"hl": "en-sg",
"tz": "-480",
"geo": "",
"cat": "",
"property": "",
}
proxy = {
"country": "ANY",
}
payload = Payload("scraper.google.trends", input_data, proxy)
json_payload = json.dumps(payload.__dict__)
response = requests.post(url, headers=headers, data=json_payload)
if response.status_code != 200:
print("Error:", response.status_code, response.text)
return
print("body", response.text)
if __name__ == "__main__":
send_request(data_type="interest_over_time", search_term="DOGE")
- Salida:
JSON
{"interest_over_time":{"averages":[],"timelineData":[{"formattedAxisTime":"24 Nov","formattedTime":"24 Nov 2024","formattedValue":["85"],"hasData":[true],"time":"1732406400","value":[85]},{"formattedAxisTime":"25 Nov","formattedTime":"25 Nov 2024","formattedValue":["89"],"hasData":[true],"time":"1732492800","value":[89]},{"formattedAxisTime":"26 Nov","formattedTime":"26 Nov 2024","formattedValue":["68"],"hasData":[true],"time":"1732579200","value":[68]},{"formattedAxisTime":"27 Nov","formattedTime":"27 Nov 2024","formattedValue":["60"],"hasData":[true],"time":"1732665600","value":[60]},{"formattedAxisTime":"28 Nov","formattedTime":"28 Nov 2024","formattedValue":["49"],"hasData":[true],"time":"1732752000","value":[49]},{"formattedAxisTime":"29 Nov","formattedTime":"29 Nov 2024","formattedValue":["55"],"hasData":[true],"time":"1732838400","value":[55]},{"formattedAxisTime":"30 Nov","formattedTime":"30 Nov 2024","formattedValue":["54"],"hasData":[true],"time":"1732924800","value":[54]},{"formattedAxisTime":"1 Dec","formattedTime":"1 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1733011200","value":[55]},{"formattedAxisTime":"2 Dec","formattedTime":"2 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733097600","value":[64]},{"formattedAxisTime":"3 Dec","formattedTime":"3 Dec 2024","formattedValue":["57"],"hasData":[true],"time":"1733184000","value":[57]},{"formattedAxisTime":"4 Dec","formattedTime":"4 Dec 2024","formattedValue":["61"],"hasData":[true],"time":"1733270400","value":[61]},{"formattedAxisTime":"5 Dec","formattedTime":"5 Dec 2024","formattedValue":["100"],"hasData":[true],"time":"1733356800","value":[100]},{"formattedAxisTime":"6 Dec","formattedTime":"6 Dec 2024","formattedValue":["84"],"hasData":[true],"time":"1733443200","value":[84]},{"formattedAxisTime":"7 Dec","formattedTime":"7 Dec 2024","formattedValue":["79"],"hasData":[true],"time":"1733529600","value":[79]},{"formattedAxisTime":"8 Dec","formattedTime":"8 Dec 2024","formattedValue":["72"],"hasData":[true],"time":"1733616000","value":[72]},{"formattedAxisTime":"9 Dec","formattedTime":"9 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733702400","value":[64]},{"formattedAxisTime":"10 Dec","formattedTime":"10 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733788800","value":[64]},{"formattedAxisTime":"11 Dec","formattedTime":"11 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1733875200","value":[63]},{"formattedAxisTime":"12 Dec","formattedTime":"12 Dec 2024","formattedValue":["59"],"hasData":[true],"time":"1733961600","value":[59]},{"formattedAxisTime":"13 Dec","formattedTime":"13 Dec 2024","formattedValue":["54"],"hasData":[true],"time":"1734048000","value":[54]},{"formattedAxisTime":"14 Dec","formattedTime":"14 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734134400","value":[48]},{"formattedAxisTime":"15 Dec","formattedTime":"15 Dec 2024","formattedValue":["43"],"hasData":[true],"time":"1734220800","value":[43]},{"formattedAxisTime":"16 Dec","formattedTime":"16 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734307200","value":[48]},{"formattedAxisTime":"17 Dec","formattedTime":"17 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1734393600","value":[55]},{"formattedAxisTime":"18 Dec","formattedTime":"18 Dec 2024","formattedValue":["52"],"hasData":[true],"time":"1734480000","value":[52]},{"formattedAxisTime":"19 Dec","formattedTime":"19 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1734566400","value":[63]},{"formattedAxisTime":"20 Dec","formattedTime":"20 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1734652800","value":[64]},{"formattedAxisTime":"21 Dec","formattedTime":"21 Dec 2024","formattedValue":["47"],"hasData":[true],"time":"1734739200","value":[47]},{"formattedAxisTime":"22 Dec","formattedTime":"22 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734825600","value":[44]},{"formattedAxisTime":"23 Dec","formattedTime":"23 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734912000","value":[44]},{"formattedAxisTime":"24 Dec","formattedTime":"24 Dec 2024","formattedValue":["46"],"hasData":[true],"isPartial":true,"time":"1734998400","value":[46]}]}}
Paso 4: Optimizar el código
- Configurar múltiples países
Python
country_map = {
"Worldwide": "ANY",
"Afghanistan":"AF",
"Åland Islands":"AX",
"Albania":"AL",
#...
}
- Configurar múltiples períodos de tiempo
Python
time_map = {
"Past hour":"now 1-H",
"Past 4 hours":"now 4-H",
"Past 7 days":"now 7-d",
"Past 30 days":"today 1-m",
# ...
}
- Configurar múltiples categorías
Python
category_map = {
"All categories": 0,
"Arts & Entertainment": 3,
"Autos & Vehicles": 47,
# ...
}
- Configurar múltiples fuentes
Python
property_map = {
"Web Search":"",
"Image Search":"images",
"Google Shopping":"froogle",
# ...
}
- Código mejorado:
Python
import json
import requests
country_map = {
"Worldwide": "",
"Afghanistan": "AF",
"Åland Islands": "AX",
"Albania": "AL",
# ...
}
time_map = {
"Past hour": "now 1-H",
"Past 4 hours": "now 4-H",
"Past 7 days": "now 7-d",
"Past 30 days": "today 1-m",
# ...
}
category_map = {
"All categories": "",
"Arts & Entertainment": "3",
"Autos & Vehicles": "47",
# ...
}
property_map = {
"Web Search": "",
"Image Search": "images",
"Google Shopping": "froogle",
# ...
}
class Payload:
def __init__(self, actor, input_data, proxy):
self.actor = actor
self.input = input_data
self.proxy = proxy
def send_request(data_type, search_term, country, time, category, property):
host = "api.scrapeless.com"
url = f"https://{host}/api/v1/scraper/request"
token = "scrapeless-api-key" # TODO:use your api key
headers = {"x-api-token": token}
input_data = {
"q": search_term, # search term
"geo": country,
"date": time,
"cat": category,
"property": property,
"hl": "en-sg",
"tz": "-480",
"data_type": data_type
}
proxy = {
"country": "ANY",
}
payload = Payload("scraper.google.trends", input_data, proxy)
json_payload = json.dumps(payload.__dict__)
response = requests.post(url, headers=headers, data=json_payload, verify=False)
if response.status_code != 200:
print("Error:", response.status_code, response.text)
return
print("body", response.text)
if __name__ == "__main__":
# one search_term
send_request(
data_type="interest_over_time",
search_term="DOGE",
country=country_map["Worldwide"],
time=time_map["Past 30 days"],
category=category_map["Arts & Entertainment"],
property=property_map["Web Search"],
)
# two search_term
send_request(
data_type="interest_over_time",
search_term="DOGE,python",
country=country_map["Worldwide"],
time=time_map["Past 30 days"],
category=category_map["Arts & Entertainment"],
property=property_map["Web Search"],
)
Problemas en el proceso de rastreo
- Necesitamos hacer juicios sobre algunos errores de red para evitar que los errores causen cierres;
- Agregar un cierto mecanismo de reintento puede evitar que las interrupciones en el proceso de rastreo causen la adquisición de datos duplicados/no válidos.
Pruebas con la API de Scrapeless - el mejor rastreador de Google Trends
- Paso 1. Inicia sesión en Scrapeless
- Paso 2. Haz clic en "API de Scraping"

- Paso 3. Encuentra nuestro panel "Google Trends" y entra:

- Paso 4. Configura tus datos en el panel de operaciones de la izquierda:

- Paso 5. Haz clic en el botón "Iniciar Scraping" y luego podrás obtener el resultado:

Después de obtener los resultados, puedes verificar si los datos son precisos.
API de Google Trends de Scrapeless: Comprensión completa
Scrapeless es una solución innovadora diseñada para simplificar el proceso de extracción de datos de sitios web. Nuestra API está diseñada para navegar por los entornos web más complejos y gestionar eficazmente el contenido dinámico y la representación de JavaScript.
¿Por qué Scrapeless funciona bien para extraer datos de Google Trends?
Si usamos la codificación de Python para rastrear Google Trends solos, fácilmente encontraremos el sistema de verificación reCAPTHCA. Esto trae grandes desafíos a nuestro proceso de rastreo.
Sin embargo, la API de Scraping de Google Trends de Scrapeless integra un solucionador de CAPTCHA y rotación inteligente de IP, por lo que no hay necesidad de preocuparse por ser monitoreado e identificado por el sitio web. Scrapeless garantiza una tasa de éxito de rastreo de sitios web del 99,9 %, proporcionándote un entorno de rastreo de datos completamente estable y seguro.
4 ventajas típicas de Scrapeless
- Precio competitivo
Scrapeless no solo es potente, sino que también garantiza un precio de mercado más competitivo. El precio de las llamadas al servicio de la API de scraping de Google Trends de Scrapeless comienza en $2 por 1000 solicitudes exitosas. - Estabilidad
La amplia experiencia y los sistemas robustos garantizan un raspado confiable e ininterrumpido con capacidades avanzadas de resolución de CAPTCHA. - Velocidad
Un gran grupo de proxies garantiza un raspado eficiente a gran escala sin bloqueos de IP o retrasos. - Rentable
La tecnología patentada minimiza los costos, lo que nos permite ofrecer precios competitivos sin comprometer la calidad. - Garantía SLAS
Los acuerdos de nivel de servicio garantizan un rendimiento y una confiabilidad constantes para las necesidades empresariales.
Preguntas frecuentes
¿Es legal extraer datos de Google Trends?
Sí, es completamente legal extraer los datos de Google Trends globales y públicamente disponibles. Sin embargo, por favor, no dañes tu sitio enviando demasiadas solicitudes en un corto período de tiempo.
¿Es engañoso Google Trends?
Google Trends no es un reflejo completo de la actividad de búsqueda. Google Trends filtra ciertos tipos de búsquedas, como las búsquedas realizadas por muy pocas personas. Las tendencias solo muestran datos para términos populares, por lo que los términos con bajo volumen de búsqueda se mostrarán como "0".
¿Google Trends proporciona una API?
No, Google Trends aún no proporciona una API pública. Sin embargo, puedes acceder a los datos de Google Trends desde API privadas en herramientas de desarrolladores de terceros, como Scrapeless.
Conclusiones
Google Trends es una valiosa herramienta de integración de datos que proporciona análisis de palabras clave y temas de búsqueda populares mediante el análisis de consultas de búsqueda en motores de búsqueda. En este artículo, mostramos en profundidad cómo extraer datos de Google Trends usando Python.
Sin embargo, extraer datos de Google Trends usando la codificación de Python siempre encuentra el obstáculo del CAPTCHA. Esto hace que tu extracción de datos sea particularmente difícil. Aunque la API de Google Trends no está disponible, ¡la API de Google Trends de Scrapeless será tu herramienta ideal!
¡Regístrate ahora para obtener una potente herramienta de extracción de datos de Google Trends!
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.