
Google keyword search volume, CPC, difficulty, keyword ideas and Google Trends. Pay per call (x402)
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Google Trends interest over time for one keyword: a dated 0-100 series for a country or worldwide, past 7 days to 5 years, in one $0.045 GET. Use when you need search-interest trends, seasonality or demand direction for a keyword. Daily points for short windows, weekly for 12 months. A live call takes up to about 30 s. Bad input is free; upstream errors are not charged. Price: $0.045 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
One keyword or phrase (2-100 characters, no commas).
ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide.
Time window. Default past_12_months.
Tool list last changed Oct 26, 2026.
Google Trends interest over time for one keyword: a dated 0-100 series for a country or worldwide, past 7 days to 5 years, in one $0.045 GET. Use when you need search-interest trends, seasonality or demand direction for a keyword. Daily points for short windows, weekly for 12 months. A live call takes up to about 30 s. Bad input is free; upstream errors are not charged. Price: $0.045 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide. |
| keyword* | string | One keyword or phrase (2-100 characters, no commas). |
| timeframe | string | Time window. Default past_12_months. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"country": {
"type": "string",
"maxLength": 8,
"description": "ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide."
},
"keyword": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "One keyword or phrase (2-100 characters, no commas)."
},
"timeframe": {
"enum": [
"past_7_days",
"past_30_days",
"past_90_days",
"past_12_months",
"past_5_years"
],
"type": "string",
"description": "Time window. Default past_12_months."
}
}
}Google Trends interest by region for one keyword: 0-100 interest per subregion of a country (or per country worldwide), past 7 days to 5 years, in one $0.03 GET. Use when you need where a keyword is searched most, for geo-targeting or local market research. A live call takes up to about 30 s. Bad input is free; upstream errors are not charged. Price: $0.03 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide. |
| keyword* | string | One keyword or phrase (2-100 characters, no commas). |
| timeframe | string | Time window. Default past_12_months. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"country": {
"type": "string",
"maxLength": 8,
"description": "ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide."
},
"keyword": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "One keyword or phrase (2-100 characters, no commas)."
},
"timeframe": {
"enum": [
"past_7_days",
"past_30_days",
"past_90_days",
"past_12_months",
"past_5_years"
],
"type": "string",
"description": "Time window. Default past_12_months."
}
}
}Google Trends related queries for one keyword: the top related searches (0-100) and the rising ones (% growth), for a country or worldwide, past 7 days to 5 years, in one $0.03 GET. Use when you need query expansion, content ideas or emerging searches around a keyword. A live call takes up to about 30 s. Bad input is free; upstream errors are not charged. Price: $0.03 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide. |
| keyword* | string | One keyword or phrase (2-100 characters, no commas). |
| timeframe | string | Time window. Default past_12_months. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"country": {
"type": "string",
"maxLength": 8,
"description": "ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide."
},
"keyword": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "One keyword or phrase (2-100 characters, no commas)."
},
"timeframe": {
"enum": [
"past_7_days",
"past_30_days",
"past_90_days",
"past_12_months",
"past_5_years"
],
"type": "string",
"description": "Time window. Default past_12_months."
}
}
}Keyword ideas for a seed keyword, each with Google search volume, CPC, competition, keyword difficulty and search intent; up to 100 ideas in one $0.04 call (Google Ads data). Use when you need related keywords to target. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. No ideas returns empty results (still charged). Bad input is free; upstream errors are not charged. Price: $0.04 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum ideas to return (1-100). Default 20. |
| country | string | ISO 3166-1 alpha-2 code or country name, used when locationCode is absent. |
| keyword* | string | Seed keyword to expand (at most 80 characters; whitespace, control characters and case are normalised; a seed then empty, over 10 words or over 80 characters is a free 400). |
| languageCode | string | Language code (2-letter). Default en. An unsupported location falls back to 2840 (United States) with en (or the requested language if the United States offers it); a supported location with a language it does not offer uses that location's default language (en if offered). Either way market.fallback is true and market.warnings says what was used. |
| locationCode | integer | Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States). |
Search volume, CPC, competition, keyword difficulty and search intent for up to 100 keywords in one $0.04 call (Google Ads data). Use when you already have a keyword list to prioritise. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. Keywords without data are left out of results and listed in missing (still charged). Bad input is free; upstream errors are not charged. Price: $0.04 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 code or country name, used when locationCode is absent (uk = gb). |
| keywords* | array | Keywords to look up (1-100; each at most 80 characters). Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing, and a request with no keyword left to look up is a free 400 (the one exception to openverbs schema compatibility). |
| languageCode | string | Language code (2-letter). Default en. An unsupported location falls back to 2840 (United States) with en (or the requested language if the United States offers it); a supported location with a language it does not offer uses that location's default language (en if offered). Either way market.fallback is true and market.warnings says what was used. |
| locationCode | integer | Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States). |
Google search volume, CPC, competition, keyword difficulty and intent for up to 20 comma-separated keywords in one $0.04 GET (Google Ads data). Use when you need monthly search volume for a few keywords in a country. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. Up to 100 keywords for the same $0.04: POST /v1/keyword-overview. Keywords without data are listed in missing (still charged). Bad input is free; upstream errors are not charged. Price: $0.04 per successful call, paid over x402 (USDC on Base); pass the payment in _meta["x402/payment"].
| Argument | Type | Description |
|---|---|---|
| lang | string | Language code offered for the country (en, es, de, ...). Default en when offered. |
| country | string | ISO 3166-1 alpha-2 country code of a supported location (us, gb, de, ...; uk = gb). Default us. |
| keywords* | array | 1-20 keywords (no commas inside a keyword; each at most 80 characters). Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing; none left to look up is a free 400. |
| includeMonthly | boolean | Add each keyword's monthly search volumes. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keywords"
],
"properties": {
"lang": {
"type": "string",
"maxLength": 16,
"description": "Language code offered for the country (en, es, de, ...). Default en when offered."
},
"country": {
"type": "string",
"maxLength": 8,
"description": "ISO 3166-1 alpha-2 country code of a supported location (us, gb, de, ...; uk = gb). Default us."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 320
},
"maxItems": 20,
"minItems": 1,
"description": "1-20 keywords (no commas inside a keyword; each at most 80 characters). Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing; none left to look up is a free 400."
},
"includeMonthly": {
"type": "boolean",
"description": "Add each keyword's monthly search volumes."
}
}
}| includeMonthly | boolean | Add each idea's monthly search volumes. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keyword"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Maximum ideas to return (1-100). Default 20."
},
"country": {
"type": "string",
"maxLength": 64,
"description": "ISO 3166-1 alpha-2 code or country name, used when locationCode is absent."
},
"keyword": {
"type": "string",
"maxLength": 320,
"description": "Seed keyword to expand (at most 80 characters; whitespace, control characters and case are normalised; a seed then empty, over 10 words or over 80 characters is a free 400)."
},
"languageCode": {
"type": "string",
"maxLength": 16,
"description": "Language code (2-letter). Default en. An unsupported location falls back to 2840 (United States) with en (or the requested language if the United States offers it); a supported location with a language it does not offer uses that location's default language (en if offered). Either way market.fallback is true and market.warnings says what was used."
},
"locationCode": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States)."
},
"includeMonthly": {
"type": "boolean",
"description": "Add each idea's monthly search volumes."
}
}
}| includeMonthly | boolean | Add each keyword's monthly search volumes. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"keywords"
],
"properties": {
"country": {
"type": "string",
"maxLength": 64,
"description": "ISO 3166-1 alpha-2 code or country name, used when locationCode is absent (uk = gb)."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 320
},
"maxItems": 100,
"minItems": 1,
"description": "Keywords to look up (1-100; each at most 80 characters). Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing, and a request with no keyword left to look up is a free 400 (the one exception to openverbs schema compatibility)."
},
"languageCode": {
"type": "string",
"maxLength": 16,
"description": "Language code (2-letter). Default en. An unsupported location falls back to 2840 (United States) with en (or the requested language if the United States offers it); a supported location with a language it does not offer uses that location's default language (en if offered). Either way market.fallback is true and market.warnings says what was used."
},
"locationCode": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States)."
},
"includeMonthly": {
"type": "boolean",
"description": "Add each keyword's monthly search volumes."
}
}
}