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
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 |
|
Transporte | HTTP, streamable |
Cabecera de autenticación |
|
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.
Obtener datos de Google Trends
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 |
| string | sí | El término de búsqueda. |
| string |
| |
| string | Una ventana como | |
| string | Un código de ubicación como | |
| string | Granularidad solo para | |
| string | Identificador de categoría para acotar el término. | |
| string | La propiedad de Google: | |
| number | Desfase horario en minutos, por defecto |
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 YouTubeEl 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
¿Existe una API oficial de Google Trends?
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.
¿Qué es un servidor MCP de Google Trends?
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 | |
Documentación del servidor | |
Las 57 herramientas en un solo servidor | |
Guías para clientes | |
Todo lo demás que extraemos | |
Planes y coste de créditos | |
Claves y uso | |
Lanzador de Node en npm | |
Lanzador de Python en PyPI |
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 testLa 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 toolhasdata_google_trends_search_getTrendsDatagoogle_trends_search: GET /AInspect
Get Google Trends Data
Pulls Google Trends data for one or more queries with geo targeting, region granularity (country/subregion/metro/city), date range, category, time zone, Google property (web, images, news, shopping, YouTube), and dataType (timeseries, geoMap, relatedTopics, relatedQueries). Returns interest-over-time series, geo-level breakdowns, and rising/top related topics/queries with relative scores. Use for keyword/content strategy, demand forecasting, seasonality analysis, topic discovery, campaign timing, and adding live-trend signals to marketing or research agents.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to retrieve trends data. | |
| tz | No | Defines a time zone offset in minutes. The default value is 420 (Pacific Daylight Time (PDT): UTC-7). The valid range for this parameter is from -1439 to 1439. To calculate the `tz` value for a specific time zone, you can use the time difference between UTC +0 and the desired time zone. Examples: - `420`: Pacific Daylight Time (PDT) - `60`: Central European Time (CET) - `-540`: Japan Standard Time | |
| cat | No | Category of the search term. The default value is 0 ("All categories"). Provide one exact documented value (1133 allowed), e.g. `0`, `3`. | |
| geo | No | Specifies the location for the search. Defaults to Worldwide if not set or empty. Provide one exact documented value (3517 allowed), e.g. `AF`, `AF-BDS`. | |
| date | No | Defines a date range for the search. Available options: - `now 1-H`: Past hour - `now 4-H`: Past 4 hours - `now 1-d`: Past day - `now 7-d`: Past 7 days - `today 1-m`: Past 30 days - `today 3-m`: Past 90 days - `today 12-m`: Past 12 months - `today 5-y`: Past 5 years - `all`: 2004 - present You can also specify a custom date range using one of the following formats: - `yyyy-mm-dd yyyy-mm-dd` - (e.g. 2021-10-15 2022-05-25) for dates from 2004 to present. - `yyyy-mm-ddThh yyyy-mm-ddThh` - (e.g. 2022-05-19T10 2022-05-24T22) for dates with hours within a week range. The hours will be calculated based on the tz (time zone) parameter. | |
| gprop | No | Sorts results by a specific property. The default property is Web Search (applied when the gprop parameter is not set or empty). Available options: - `images`: Image Search - `news`: News Search - `froogle`: Google Shopping - `youtube`: YouTube Search | |
| region | No | Used to get more specific results when using "Interest by region" data type. Other data types do not accept this parameter. The default value depends on the geo location that is set. Available options: - `country`: Country - `region`: Subregion - `dma`: Metro - `city`: City Note: Not all region options will return results for every geo location. | |
| dataType | No | Defines the type of search to perform. Available options: - `timeseries`: Interest over time (default). Accepts both single and multiple queries per search. - `geoMap`: Interest by region. Accepts both single and multiple queries per search. - `relatedTopics`: Related topics. Accepts only single query per search. - `relatedQueries`: Related queries. Accepts only single query per search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It implies a read-only data retrieval operation through words like 'Pulls' and 'Returns', and mentions no destructive side effects. However, it does not explicitly state that the operation is read-only, nor does it mention authentication, rate limits, or potential errors, leaving some behavioral aspects implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by a compact summary of parameters and use cases. It avoids redundancy and stays focused, though the final list of use cases adds length without critical operational detail. Overall it is well-structured and not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description gives a reasonable overview of expected outputs (interest-over-time series, geo-level breakdowns, related topics/queries with relative scores). It also covers parameter capabilities and domain use cases. It does not describe response formats, pagination, or error conditions, but given the tool's complexity and lack of output schema, the description is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All eight parameters have detailed descriptions, covering defaults, allowed values, and format examples. The q parameter is described as a singular 'search term' while the main description says 'one or more queries', leaving ambiguity about how to pass multiple terms. Most other parameters are very well explained, but this minor gap prevents a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves Google Trends data, enumerates the key parameters (geo, region, date, category, time zone, property, dataType), and distinguishes it from sibling tools by focusing specifically on Trends. The verb 'Pulls' and the listed outputs make the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases such as keyword/content strategy, demand forecasting, seasonality analysis, and topic discovery, which strongly signal when an agent should select this tool. It does not explicitly mention when not to use it or point to alternatives, but given there is no other Google Trends sibling tool, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
hasdata_google_trends_search_getTrendsData
TDQS
Scored across 1 tool
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.
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.
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.
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
Related MCP Connectors
Google Trends data as JSON: interest over time, rising and top queries, regions, Trending Now.
1Google Trends: Search, Images, News, Shopping over time, growth metrics. Free key at trendsmcp.ai
Google Trends Scraper API: Interest and Trending Now
Bulk Google Trends: interest over time, regions, rising queries and plain-English trend summaries.
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.321,863 PyPI1,546MIT

HasData MCP Serverofficial
AlicenseAqualityAmaintenanceDirect 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.6320MIT- AlicenseBqualityDmaintenanceProvides access to Google Trends data including status, trending questions, and trending topics via MCP tools.321 npm34MIT
- AlicenseNot gradedqualityBmaintenanceProvides Google Search trend data as an MCP tool, with historical series, growth percentages, and live trending searches, no scraping or rate limits.1MIT