Keyword Search Volume, CPC, Keyword Ideas and Google Trends API
Server Details
Google keyword search volume, CPC, difficulty, keyword ideas and Google Trends. Pay per call (x402)
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
The three google_trends_* tools have clearly distinct outputs (time series, regional breakdown, related queries), but keyword_overview and keyword_search_volume return the same Google Ads metrics and differ only in input format and batch size (POST/100 vs GET/20), making misselection likely. The descriptions acknowledge the overlap, which helps but doesn't eliminate it.
All names are snake_case and use consistent family prefixes (google_trends*, keyword_*), so the set reads predictably. However, names are noun phrases rather than a verb_noun action pattern, and keyword_search_volume vs keyword_overview obscures the intentional input-format distinction.
Six tools is a tight, well-scoped surface for keyword research plus Trends data. One tool (keyword_search_volume or keyword_overview) is largely redundant with the other, so it's slightly over-provisioned but still reasonable.
The surface covers trends over time, regional interest, related/rising queries, keyword discovery, and keyword metrics — the core of keyword research. Minor gaps exist, such as multi-keyword Trends comparison (only one keyword at a time) and no language/localization controls.
Available Tools
6 toolsgoogle_trendsGoogle Trends interest over timeARead-onlyIdempotentInspect
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"].
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide. | |
| keyword | Yes | One keyword or phrase (2-100 characters, no commas). | |
| timeframe | No | Time window. Default past_12_months. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, yet the description still adds non-obvious traits: ~30 s live latency, per-call price of $0.045, the rule that bad input and upstream errors are free but success is charged, and the x402/USDC-on-Base payment path via _meta["x402/payment"]. That is exactly the operational context an agent needs before spending money.
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?
Four tight sentences front-loaded with what the tool returns, then when to use it, then granularity, latency and pricing. No filler, and the cost/payment caveat is placed where an agent will see it before calling.
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?
With no output schema, the description still specifies the return shape (dated 0-100 series), the resolution per timeframe, and the full cost/payment model. There is no material gap an agent would need to close before invoking it.
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?
Schema description coverage is 100%, so country codes, keyword length limits and the timeframe enum are fully documented in the schema. The description only reinforces the single-keyword constraint and states the daily-vs-weekly granularity split, adding modest value above the baseline.
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 opens with a specific verb+resource ('Google Trends interest over time for one keyword') and defines the returned shape as a dated 0-100 series with country/worldwide scope. The 'one keyword' phrasing distinguishes it in spirit from google_trends_by_region and google_trends_related_queries, though those siblings are never named, so an agent must infer the boundary.
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?
'Use when you need search-interest trends, seasonality or demand direction for a keyword' gives clear positive selection criteria. It stops short of exclusions or explicit alternatives (e.g., 'use google_trends_by_region for a regional breakdown'), leaving that routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_trends_by_regionGoogle Trends interest by regionARead-onlyIdempotentInspect
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"].
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO 3166-1 alpha-2 country code (us, gb, de, ...; uk = gb). Omit for worldwide. | |
| keyword | Yes | One keyword or phrase (2-100 characters, no commas). | |
| timeframe | No | Time window. Default past_12_months. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, and the description layers on what only it can supply: a live call takes up to ~30 s, bad input is free while upstream errors are not charged, and payment is settled over x402 (USDC on Base) via _meta['x402/payment']. This is exactly the operational context an agent needs before committing to a paid call.
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?
Three dense sentences, front-loaded with what the tool returns and its scale before pricing and payment mechanics. The pricing/payment sentence is long but carries decision-relevant information; no filler.
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?
With no output schema, the description still explains the return shape (0-100 per subregion), and it covers latency, error-charging policy, and payment mechanics that the annotations and schema omit. Nothing an agent needs to call this correctly appears to be missing.
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?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it frames the output as '0-100 interest per subregion of a country (or per country worldwide)', which explains the country parameter's effect, and 'past 7 days to 5 years' summarizes the timeframe enum range. It doesn't restate the keyword length or comma restriction, but the schema already covers those.
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 names the specific resource and scope: Google Trends interest by region for one keyword, with the 0-100 index, the subregion-vs-worldwide granularity, and the timeframe span. It doesn't explicitly name sibling tools like google_trends or google_trends_related_queries, so the differentiation is implied by the 'by region' scope rather than stated.
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?
It states a concrete use case ('when you need where a keyword is searched most, for geo-targeting or local market research'), which tells the agent when to reach for it. It stops short of naming alternatives or stating when not to use it, leaving the sibling distinction to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_ideasKeyword ideas (up to 100 per seed)ARead-onlyIdempotentInspect
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"].
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ideas to return (1-100). Default 20. | |
| country | No | ISO 3166-1 alpha-2 code or country name, used when locationCode is absent. | |
| keyword | Yes | 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 | No | 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 | No | Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States). | |
| includeMonthly | No | Add each idea's monthly search volumes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent and open-world, and the description adds substantial context beyond that: $0.04 cost, x402 USDC-on-Base payment via _meta["x402/payment"], empty result sets still being charged, bad input being free, and upstream errors not billed. That is exactly the billing/failure behavior an agent cannot get from annotations or schema, and nothing contradicts the hints.
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?
Purpose and the metrics it returns are front-loaded and the pricing/edge-case notes follow in a logical order. There is mild redundancy between 'up to 100 ideas in one $0.04 call' and the later 'Price: $0.04 per successful call', but each sentence otherwise carries information.
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?
With no output schema, the description takes on the job of describing the response (volume, CPC, competition, difficulty, intent) and also covers cost, payment mechanics and the empty-result/free-400/uncharged-error cases. An agent has enough to decide whether to call and how to pay correctly.
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?
Schema description coverage is 100%, so the parameters (limit, country, locationCode, languageCode, includeMonthly) are already fully documented and the baseline of 3 applies. The description's metric glossary (volume, cpc, competition 0-1, difficulty 0-100) explains return values rather than adding parameter meaning, so it doesn't push this above baseline.
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?
States a specific verb+resource ('Keyword ideas for a seed keyword') and enumerates the returned metrics, plus a count/price bound. It implies differentiation from volume-lookup siblings via 'Use when you need related keywords to target' but never names keyword_overview or keyword_search_volume, so the boundary is inferred rather than stated.
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?
There is one clear usage cue ('Use when you need related keywords to target'), which positions it as an expansion/discovery tool. However, no sibling is named as an alternative and no when-not-to-use condition is given, even though keyword_search_volume and keyword_overview overlap conceptually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_overviewKeyword overview (up to 100 keywords)ARead-onlyIdempotentInspect
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"].
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO 3166-1 alpha-2 code or country name, used when locationCode is absent (uk = gb). | |
| keywords | Yes | 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 | No | 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 | No | Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States). | |
| includeMonthly | No | Add each keyword's monthly search volumes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: pricing, x402 payment handling via _meta, exclusion and charging for keywords without data, and the distinction between free bad input and charged upstream errors. These details materially affect whether and how an agent should invoke the tool.
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 dense but front-loaded: the core capability and use case come first, followed by metric definitions, charging rules, and payment mechanics. Every sentence contributes operationally relevant information.
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?
For a paid, external-data tool with no output schema, the description covers the essential context: what metrics are returned, bulk limits, missing-data behavior, billing semantics, and the x402 payment mechanism. The schema already handles location, language, and fallback details.
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?
Schema description coverage is 100%, so the parameters are already well documented. The description adds useful semantics for returned metrics, but it adds little input-parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
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 states a specific resource and metric set: search volume, CPC, competition, keyword difficulty and search intent for up to 100 keywords. It also implies a clear use case that separates it from idea-generation siblings, but it does not explicitly name or contrast a sibling such as keyword_search_volume.
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?
It gives a clear usage condition: 'Use when you already have a keyword list to prioritise.' That helps distinguish it from keyword_ideas, but there is no explicit when-not guidance or named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_search_volumeSearch volume (GET, up to 20 keywords)ARead-onlyIdempotentInspect
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"].
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code offered for the country (en, es, de, ...). Default en when offered. | |
| country | No | ISO 3166-1 alpha-2 country code of a supported location (us, gb, de, ...; uk = gb). Default us. | |
| keywords | Yes | 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 | No | Add each keyword's monthly search volumes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses pricing, which failures are charged, missing-keyword behavior, and the x402 payment mechanism. This is unusually complete behavioral context for a paid data-lookup tool.
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 dense and front-loads the core purpose, metrics, and scope. Every sentence carries useful information, though the pricing and payment details make it heavier than strictly necessary for selection.
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?
With no output schema, the description supplies the metric meanings and billing/missing-data behavior an agent needs to call the tool correctly. Annotations already cover safety, and the description complements them with cost and failure-mode details.
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?
Schema coverage is 100%, so the schema already fully documents keywords, country, lang, and includeMonthly. The description adds metric definitions for returned fields and repeats the 20-keyword limit, but adds little parameter-specific meaning beyond the schema; 'comma-separated keywords' also slightly mismatches the array parameter.
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 names the exact resource and metrics (Google search volume, CPC, competition, keyword difficulty and intent) and the concrete scope (up to 20 keywords in one GET). It also explicitly distinguishes itself from keyword_overview, which handles up to 100 keywords via POST.
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?
It states when to use it: 'when you need monthly search volume for a few keywords in a country.' It also names the alternative for larger batches and the condition that selects it, leaving little ambiguity.
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.
2 tool updates
- Changed
keyword_ideas1 field changed- changed
Input schema / properties / locationCode / descriptionPrevious value: -"DataForSEO location code. Default 2840 (United States); an unsupported code falls back to 2840 (United States)."New value: +"Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States)."
- Changed
keyword_overview1 field changed- changed
Input schema / properties / locationCode / descriptionPrevious value: -"DataForSEO location code. Default 2840 (United States); an unsupported code falls back to 2840 (United States)."New value: +"Google Ads location code (geo target ID). Default 2840 (United States); an unsupported code falls back to 2840 (United States)."
6 tool updates
- First observed
google_trends - First observed
google_trends_by_region - First observed
google_trends_related_queries - First observed
keyword_ideas - First observed
keyword_overview - First observed
keyword_search_volume
Publisher details
- Operator
- Duo Leads · Publisher source
- Operator website
- https://keywords.duoleads.com · Publisher source
- Vendor relationship
- Independent · Publisher source
- Documentation
- https://keywords.duoleads.com/docs · Publisher source
- Trust center
- Not available
- Restrictions
- Paid per call in USDC on Base via x402; no account, API key or subscription. · Publisher source
Related MCP Connectors
Pay-per-call keyword research via Apify: autocomplete, volume, CPC, difficulty, ideas, Google Trends
Keyword search volume, CPC, competition, keyword ideas, ranking keywords, traffic and backlinks.
Keyword volume and ideas, rank tracking, backlinks, site audits, domain SEO, Trends. Pay per use.
Google keyword search volume, CPC, difficulty, intent and keyword ideas. Runs on Apify.
Related MCP Servers
- AlicenseAqualityAmaintenanceFree keyword research with live search volume, CPC, competition and 12-month trends.115 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables SEO keyword research with Google Suggest, intent classification, long-tail discovery, and related queries, with pay-per-call via x402 micropayments.MIT
- AlicenseAqualityCmaintenanceSEO and AI-visibility checks an agent buys per call: keyword research, on-page audits, Google rank and SERP data, backlinks, and AI-citation checks across ChatGPT, Claude, Gemini and Perplexity. 19 tools, $0.005–0.30 each, paid in USDC on Solana via x402 — no account and no API key.1959 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables fetching exact Google Ads search volume for SEO keywords via the Pipeworx gateway.9 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.