Skip to main content
Glama
HasData

Google Trends MCP Server

Google Trends MCP Server

Un servidor alojado del Model Context Protocol (MCP) que ofrece a Claude, Cursor, Windsurf y cualquier otro cliente MCP una herramienta de Google Trends. Obtén interés a lo largo del tiempo, interés por región y las consultas y temas relacionados en aumento y principales para cualquier término, todo como JSON estructurado, sin librería de scraping que mantener y sin cuenta de Google.

https://mcp.hasdata.com/api/mcp?apis=google_trends

Glama score tool contract MCP Tools npm PyPI License

Contenido

Related MCP server: HasData MCP Server

Qué necesitas

Un cliente MCP y una clave de API de HasData desde el panel de control, que se crea gratis sin tarjeta, y la prueba cubre unas 200 llamadas a la tarifa de 5 créditos. Este es un servidor remoto, por lo que el camino más sencillo es una URL y una cabecera x-api-key, sin contenedor que ejecutar y sin cuenta de Google en ningún punto del flujo. Un cliente que solo habla stdio accede a él a través de un lanzador ligero, publicado como @hasdata/google-trends-mcp en npm y hasdata-google-trends-mcp en PyPI, como se muestra a continuación.

Inicio rápido

La URL del servidor es la misma para cada cliente. Lo probamos en la práctica con Claude Code y Claude Desktop. Los demás bloques siguen el formato documentado de cada cliente para un servidor remoto.

Campo

Valor

URL

https://mcp.hasdata.com/api/mcp?apis=google_trends

Transporte

HTTP, streamable

Cabecera de autenticación

x-api-key: HASDATA_API_KEY

Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.

claude mcp add --transport http google-trends "https://mcp.hasdata.com/api/mcp?apis=google_trends" \
  --header "x-api-key: HASDATA_API_KEY"

Ajustes, luego Conectores, luego Añadir conector personalizado, pega https://mcp.hasdata.com/api/mcp?apis=google_trends e inicia sesión.

Para la ruta del archivo de configuración, Claude Desktop solo carga servidores locales (stdio), por lo que accede a un servidor remoto a través de un lanzador stdio. El paquete @hasdata/google-trends-mcp es ese lanzador, y lee la clave del entorno. Añade esto a claude_desktop_config.json:

{
  "mcpServers": {
    "google-trends": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-trends-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Para Python en lugar de Node, cambia el lanzador por el paquete PyPI, que uvx ejecuta sin instalación manual:

{
  "mcpServers": {
    "google-trends": {
      "command": "uvx",
      "args": ["hasdata-google-trends-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

~/.cursor/mcp.json para cada proyecto, o .cursor/mcp.json para uno solo:

{
  "mcpServers": {
    "google-trends": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no url:

{
  "mcpServers": {
    "google-trends": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

.vscode/mcp.json en el espacio de trabajo:

{
  "servers": {
    "google-trends": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Ejemplos de prompts

Prompts, no código. Pega uno y el agente elige la herramienta por sí mismo. Cada uno está anotado con las llamadas que requiere, porque cada llamada correcta cuesta 5 créditos.

Grafica el interés por "cold brew coffee" en EE. UU. durante los últimos 12 meses y dime en qué semanas alcanzó su punto máximo.

Una llamada, 5 créditos. La serie semanal se devuelve en una sola solicitud.

Para "cold brew coffee" en EE. UU., dame las consultas relacionadas en aumento y marca las que estén etiquetadas como Breakout.

Una llamada, 5 créditos.

Compara el interés por "cold brew" frente a "iced coffee" en todo el mundo durante cinco años y di cuál está creciendo.

Una llamada, 5 créditos. La herramienta admite varios términos en una sola solicitud timeseries.

Muéstrame el interés por "sunscreen" por estado de EE. UU. durante los últimos 90 días para que pueda ver dónde es mayor la demanda.

Una llamada, 5 créditos. Esta es la vista de interés por región a nivel de estado.

Una comparación entre términos se hace en una sola llamada timeseries. Los desgloses por región, las consultas relacionadas y los temas relacionados son cada uno su propio dataType, por lo que un prompt que quiera un gráfico más sus consultas en aumento supone dos llamadas.

Herramientas

Una sola herramienta, de solo lectura. La muestra siguiente está recortada de una llamada real, y los números cambian según se mueve la tendencia. Léela como una forma. El nombre de la herramienta enlaza a su referencia de endpoint, que incluye la lista completa de parámetros.

La muestra es el payload, no la respuesta completa. Un resultado de tools/call contiene un bloque de texto, y ese texto es en sí mismo JSON con url, status, text y json, con los datos extraídos bajo json. Desde una respuesta JSON-RPC cruda, la ruta es result.content[0].text, parseado, y luego .json. Un cliente de chat te lo desenvuelve y el código que habla directamente con el endpoint no.

hasdata_google_trends_search_getTrendsData

Interés a lo largo del tiempo, por región, o las consultas y temas relacionados de un término.

Parámetro

Tipo

Obligatorio

Notas

q

string

sí

El término de búsqueda. timeseries y geoMap aceptan hasta 5 términos separados por comas para comparar, y un sexto se rechaza con un 400

dataType

string

timeseries por defecto, además de geoMap, relatedTopics y relatedQueries. Los dos tipos relacionados solo aceptan un único término

date

string

Una ventana como now 7-d, today 12-m, today 5-y o all, o un rango personalizado yyyy-mm-dd yyyy-mm-dd

geo

string

Un código de ubicación como US o US-CA. En todo el mundo cuando está vacío

region

string

Granularidad solo para geoMap: country, region (subregión), dma (metro) o city. El valor predeterminado depende de geo, country en todo el mundo y más fino una vez que se establece un geo

cat

string

Identificador de categoría para acotar el término. 0 son todas las categorías

gprop

string

La propiedad de Google: images, news, froogle (Shopping) o youtube. Búsqueda web cuando está vacío

tz

number

Desfase horario en minutos, por defecto 420 (PDT). Cambia la forma en que se agrupan los rangos por hora

La clave de la respuesta depende de dataType. timeseries devuelve interestOverTime.timelineData, geoMap devuelve el interés por región, y los tipos relacionados devuelven relatedQueries o relatedTopics, cada uno dividido en rising y top. Lee la clave que coincida con el tipo que pediste.

timeseries (el valor predeterminado) devuelve un valor de 0 a 100 para cada punto, tanto como cadena como pre-parseado en extractedValue. El punto más reciente suele llevar isPartial: true, lo que significa que la semana todavía se está completando. Elimínalo antes de calcular una tendencia, o la última barra se leerá como una caída que no es real.

{
  "interestOverTime": {
    "timelineData": [
      { "date": "Apr 12 – 18, 2026", "timestamp": "1775952000", "isPartial": false,
        "values": [{ "query": "cold brew coffee", "value": "100", "extractedValue": 100, "hasData": true }] },
      { "date": "Aug 23 – 29, 2026", "timestamp": "1787443200", "isPartial": true,
        "values": [{ "query": "cold brew coffee", "value": "44", "extractedValue": 44, "hasData": true }] }
    ]
  }
}

relatedQueries se divide en rising y top. Una entrada en aumento se lee como un porcentaje como +300%, o Breakout para un salto demasiado grande para puntuar, y extractedValue da el número que hay detrás. Un Breakout vuelve con un extractedValue centinela muy por encima de cualquier porcentaje real, así que ordena por la etiqueta de cadena, no por el número bruto.

{
  "relatedQueries": {
    "rising": [
      { "query": "organic cold brew coffee", "value": "+300%", "extractedValue": 300, "link": "https://trends.google.com/trends/explore?q=organic+cold+brew+coffee&date=today+12-m&geo=US" }
    ],
    "top": [
      { "query": "how to cold brew coffee", "value": "100", "extractedValue": 100, "link": "https://trends.google.com/trends/explore?q=how+to+cold+brew+coffee&date=today+12-m&geo=US" }
    ]
  }
}

La referencia del endpoint enumera todos los geo, cat y formatos de fecha que la herramienta acepta.

Errores y rutas de fallo

Tu cliente casi nunca ve un código de error HTTP de una llamada de herramienta. La capa MCP responde 200 y coloca el fallo dentro del resultado, con isError establecido en true y el motivo como texto. El agente lee un mensaje donde podrías esperar una línea de estado.

Una clave incorrecta aparece como salida de la herramienta, no como una conexión fallida. tools/list acepta cualquier clave no vacía y devuelve la herramienta, por lo que el cliente completa su handshake y muestra verde. La primera llamada a la herramienta vuelve entonces con isError: true y el texto HasData API error: 401 Unauthorized. Estate atento a esa cadena, porque nada antes en el flujo informa del problema.

Una clave ausente es el único error HTTP real. La autorización se ejecuta antes que cualquier herramienta, y la propia conexión falla con 401. Las cabeceras CORS están presentes, y un cliente de navegador lee el estado y no un fallo de red opaco.

Un argumento que rompe el esquema de la herramienta se rechaza antes de convertirse en un scraping. El servidor responde con isError: true y el texto MCP error -32602: Input validation error, nombrando el campo infractor. No se obtiene nada y no se cobra nada.

Un término con demasiado poco volumen de búsqueda devuelve un resultado correcto con los arrays de datos vacíos, no un error. Google Trends no tiene nada que mostrar para un término poco frecuente, y requestMetadata.status sigue leyendo ok. Comprueba los puntos antes de representarlos en un gráfico.

Un identificador que la plataforma rechaza devuelve 400 con requestMetadata.status establecido en error. Un valor desconocido de geo o cat es la forma habitual de ver esto.

Los resultados que incluyen datos también incluyen un requestMetadata.id que vale la pena citar en el soporte.

Precios, plan gratuito y límites

Cada llamada a Google Trends cuesta 5 créditos por llamada correcta. El tamaño de la respuesta no cambia el precio. Una serie semanal de cinco años cuesta lo mismo que una sola semana.

La prueba gratuita es de 1,000 créditos durante 30 días sin tarjeta, lo que equivale a 200 llamadas a Google Trends. Después, una cuenta activa sigue recibiendo 100 créditos cada día siempre que su saldo baje de 100, por lo que un agente de bajo volumen funciona en el plan gratuito indefinidamente.

Los planes de pago empiezan en $49 al mes por 200,000 créditos, lo que supone 40,000 llamadas. El precio unitario baja con el volumen, desde $1.23 por cada 1,000 llamadas en el plan inicial hasta $0.50 en Business, $0.42 en Growth y $0.37 en los planes de alto volumen más grandes.

Tu plan también establece la concurrencia. La prueba gratuita permite 1 solicitud a la vez, Startup 15, Business 30, Growth 50, y los planes de alto volumen van de 200 a 1.500. Gestiona el caso de desbordamiento de forma defensiva en cualquier proceso no supervisado.

Una solicitud que responde con un código distinto de 200 no se factura. Una llamada correcta que no encuentra nada sigue contando como una llamada.

Selección de herramientas

El parámetro de consulta apis decide qué herramientas ve tu agente. Menos herramientas significa menos contexto dedicado a las definiciones de herramientas y menos posibilidades de que el modelo elija una incorrecta.

?apis=google_trends              the one tool in this repo
?apis=google_trends,google_serp  add Google search
?apis=google_trends,youtube      trends plus YouTube

El parámetro acepta nombres de proveedores como google_trends y nombres de API individuales. Los nombres mal escritos se ignoran. Si todos los nombres son incorrectos, la solicitud falla con el código 400 y el cuerpo indica tanto lo que no reconoció como todos los valores válidos. Omite el parámetro y el mismo endpoint expone las 57 herramientas de HasData.

Comparativa

Google no publica una API pública de Trends. Las dos vías habituales son la biblioteca no oficial pytrends, que realiza ingeniería inversa de los mismos endpoints internos y se rompe cuando Google los cambia o limita la tasa de llamadas, y crear tu propio scraper. Este servidor hace ese trabajo bajo un esquema estable.

pytrends / DIY

Este servidor

Soporte oficial

Ninguno, Google no ofrece ninguna API de Trends

Esquema mantenido sobre los mismos datos

Límites de tasa y errores 429

Frecuentes, y su gestión depende de ti

Gestionados por el endpoint

Salida

DataFrames de Pandas o payloads en bruto que hay que transformar

JSON estructurado, valores preprocesados

Configuración

Un entorno de Python y mantenimiento cuando se rompe

Una clave y una URL

Coste

Gratis, cuando funciona

De pago tras la prueba, 5 créditos por llamada

Si ya usas pytrends con poco volumen y no te importa arreglarlo cuando se rompe, esa sigue siendo la opción gratuita. Este servidor es para agentes y pipelines que necesitan que los datos lleguen siempre con la misma forma.

Preguntas frecuentes

No. Google nunca ha publicado una API pública de Trends. Todas las opciones leen los mismos endpoints internos que usa el sitio trends.google.com. Esta opción está mantenida por HasData y devuelve el resultado como JSON estructurado.

Un servidor que expone Google Trends como una herramienta que un cliente de IA puede invocar. El cliente envía una llamada de herramienta mediante el Model Context Protocol, el servidor obtiene los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado. Este expone una única herramienta y se ejecuta de forma remota, por lo que el cliente se conecta a una URL y no inicia ningún proceso local.

¿Los números indican el volumen absoluto de búsquedas?

No, y tampoco Google Trends en sí. Los valores son interés relativo escalado de 0 a 100 dentro de la consulta, el período y la región que hayas indicado. Úsalos para ver la forma de la tendencia y comparar, no como un recuento de búsquedas.

¿Por qué el último punto de datos es más bajo que el resto?

El intervalo más reciente suele estar todavía completándose y llega con isPartial: true. Elimínalo antes de calcular una tendencia.

¿Puedo comparar varios términos a la vez?

Sí, en timeseries y geoMap. Pasa los términos separados por comas en q. Los tipos related-query y related-topic admiten un solo término.

¿Puedo usar esto junto con otras APIs de HasData?

Sí. El parámetro apis acepta una lista, y ?apis=google_trends,google_serp le da a tu agente Trends más la búsqueda de Google. Omite el parámetro y lo tienes todo.

Cumplimiento y datos personales

HasData solo accede a datos disponibles públicamente. Los términos de una plataforma pueden restringir el acceso automatizado, y tú eres responsable de tu propio cumplimiento.

Enlaces de HasData

Página del producto y generador de solicitudes

Google Trends API

Documentación del servidor

Documentación del servidor MCP

Las 57 herramientas en un solo servidor

HasData/hasdata-mcp

Guías para clientes

Clientes e integraciones de MCP

Todo lo demás que extraemos

La API de Google Trends y 54 más

Planes y coste de créditos

Planes y coste de créditos

Claves y uso

Panel de HasData

Lanzador de Node en npm

@hasdata/google-trends-mcp

Lanzador de Python en PyPI

hasdata-google-trends-mcp

Desarrollo

Este repositorio es configuración y documentación para un servidor remoto. No hay paso de compilación ni nada que contenerizar.

Las pruebas en test/ verifican el contrato de la herramienta, la parte que puede romperse sin que haya un commit aquí. Comprueban que ?apis=google_trends devuelve exactamente una herramienta, que sigue declarando su parámetro obligatorio, que el nombre no ha cambiado y que la clave en uso es realmente aceptada. Esa última comprobación llama a la herramienta de verdad y cuesta 5 créditos, que es el precio de un canario que puede fallar por el motivo correcto.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

La misma suite se ejecuta en CI en cada push y una vez por semana de forma programada, porque la lista de herramientas de origen puede cambiar sin que nadie toque este repositorio. Un fallo significa que la lista de herramientas ha cambiado, que la clave ha dejado de funcionar o que el endpoint no era accesible, y el mensaje de la aserción indica cuál es.

Contribuciones

Corregir la tabla de parámetros y el ejemplo de respuesta es la contribución más útil, porque son las partes que tienden a desactualizarse. Incluye la llamada que hiciste y la respuesta que obtuviste. Las pull requests de forks ejecutan la suite sin clave, y las comprobaciones en vivo se omiten en lugar de ponerse en rojo.

Licencia

MIT. Consulta LICENSE.

Available Tools

1 tool

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedhasdata_google_trends_search_getTrendsData

TDQS

A4/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no risk of overlapping purposes or misselection. The single tool's scope and parameters are clearly described, making the tool's purpose immediately identifiable.

Naming Consistency2/5

The tool name combines snake_case and camelCase ('getTrendsData') with a vendor-specific prefix, so the naming style is internally inconsistent. With only one tool, there is no broader pattern for the server to enforce.

Tool Count3/5

One tool for a specialized Google Trends server is borderline. The tool is very broad and covers multiple data types, so it is usable, but it places a large command surface into a single entry point that might be easier to split into multiple focused tools.

Completeness5/5

The tool covers the full Google Trends feature set: timeseries, geo maps, related topics/queries, various filters, and property selection. No obvious major gap in the domain space.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
    3
    21,863 PyPI
    1,546
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Direct access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
    63
    20
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides Google Search trend data as an MCP tool, with historical series, growth percentages, and live trending searches, no scraping or rate limits.
    1
    MIT