Skip to main content
Glama

tidewell/google-trends-api

tidewell--google-trends-api
Destructive

This tool calls the Actor "tidewell/google-trends-api" and retrieves its output results. Actor description: Returns Google Trends data per search term: 0-100 interest over time, interest by region, top and rising related queries and topics, plus Trending Now searches by country. Compare up to 5 terms for any country, time range, category and search type. $3 per 1,000 search terms.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "tidewell--google-trends-api"
  }
}

Input Schema

NameRequiredDescriptionDefault
geoNoSame as 'Countries / regions' as one text value: a code such as US or US-CA, or several separated by commas ('US, GB, DE'). Kept for existing tasks and API calls. Values here and in 'Countries / regions' are combined. Empty in both = Worldwide.
geosNoOne per line: a two-letter country code (US, GB, DE, IN) or a region code (US-CA, GB-ENG). Every comparison runs once for each. Leave empty for Worldwide. Example values: ["US"]
categoryNoGoogle Trends category ID to narrow the meaning of a term. 0 = all categories. Top-level IDs: 3 Arts & Entertainment, 5 Computers & Electronics, 7 Finance, 8 Games, 11 Home & Garden, 12 Business & Industrial, 13 Internet & Telecom, 16 News, 18 Shopping, 20 Sports, 29 Real Estate, 44 Beauty & Fitness, 45 Health, 47 Autos & Vehicles, 65 Hobbies & Leisure, 66 Pets & Animals, 67 Travel, 71 Food & Drink, 174 Science, 958 Jobs & Education. Sub-categories work too (see the README).
languageNoLanguage for region names and topic titles, e.g. en-US, en-GB, de, fr, ja. Example values: "en-US"en-US
propertyNoWhich Google search to measure.
waitSecsNoMax seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.
timeframeNoThe period to fetch. Google picks the resolution: minutes or hours for 'now' ranges, days up to 9 months, weeks up to 5 years, months beyond that. Example values: "today 12-m"today 12-m
maxRetriesNoRetries for rate-limited (429) or failed requests, with exponential backoff. Example values: 5
searchTermsNoOne comparison per line. Put up to 5 terms on one line, separated by commas, to compare them on the same 0-100 scale (e.g. 'chatgpt, gemini, claude'). A line with one term is fetched on its own. Topic IDs such as /m/0dl567 work too. Each term that returns data is one charged result. Example values: ["chatgpt, gemini, claude"]
outputFormatNo'One row per search term' keeps each term's time series, regions and related queries together (best for JSON and APIs). 'One row per data point' writes long-format rows (date / region / query) that open directly in Excel, Sheets and BI tools. The price is the same: you pay per search term, not per row. Example values: "perTerm"perTerm
trendingGeosNoCountry codes, one per line (e.g. US, GB, DE, IN). Returns the current trending searches with approximate search volume, start time and the news articles behind each. Charged per trending search. Example values: ["US"]
customTimeframeNoOverrides 'Time range'. Dates as 'YYYY-MM-DD YYYY-MM-DD' (e.g. '2024-01-01 2024-12-31'), or hourly as 'YYYY-MM-DDTHH YYYY-MM-DDTHH' for windows up to 7 days.
regionResolutionNoLevel of the interest-by-region breakdown. 'Auto' uses Google's default (countries for Worldwide, subregions for a country). Metro (DMA) is US only. Example values: "auto"auto
requestDelaySecsNoMinimum gap between requests to Google. Lower is faster but more likely to be rate-limited. Example values: 1
proxyConfigurationNoApify Proxy is recommended for runs with more than a few comparisons. Example values: {"useApifyProxy":true}
includeRelatedTopicsNoTop and rising related topics per term. When comparing several terms this needs one extra explore per term. Google often returns an empty list here for automated requests. Example values: true
includeRelatedQueriesNoTop and rising related searches per term, with 'Breakout' flags. Example values: true
includeInterestByRegionNoInterest per country (Worldwide) or per subregion (country). When comparing terms, also the share of each term per region. Example values: true
includeInterestOverTimeNoThe 0-100 time series, with average, peak and latest values. Example values: true
includeLowSearchVolumeRegionsNoAlso list regions with low search volume, as the checkbox on the Trends page does.

Output Schema

NameRequiredDescriptionDefault
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / additionalProperties / properties / fields / description
      Previous value: -"Dataset field paths in dot notation (e.g. [\"metadata.url\"])"New value: +"Paths that work as a fields selection (e.g. [\"results\", \"metadata.url\"]); an array field appears by its top-level name."
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / fields / description
      Previous value: -"Dataset field paths in dot notation (e.g. [\"metadata.url\"])"New value: +"Paths that work as a fields selection (e.g. [\"results\", \"metadata.url\"]); an array field appears by its top-level name."
  2. Changed14 schema fields changed
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / approxTraffic
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / approxTrafficNumber
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / interestByRegion
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "geoCode": {
      +        "type": "string"
      +      },
      +      "geoName": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / interestByRegionShare
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "geoCode": {
      +        "type": "string"
      +      },
      +      "geoName": {
      +        "type": "string"
      +      },
      +      "share": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / news
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "pictureUrl": {
      +        "type": "string"
      +      },
      +      "snippet": {
      +        "type": "null"
      +      },
      +      "source": {
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / pictureSource
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / pictureUrl
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / query
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rank
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / relatedQueriesRising
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "exploreUrl": {
      +        "type": "string"
      +      },
      +      "formattedValue": {
      +        "type": "string"
      +      },
      +      "isBreakout": {
      +        "type": "boolean"
      +      },
      +      "query": {
      +        "type": "string"
      +      },
      +      "rank": {
      +        "type": "number"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / relatedQueriesTop
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "exploreUrl": {
      +        "type": "string"
      +      },
      +      "formattedValue": {
      +        "type": "string"
      +      },
      +      "query": {
      +        "type": "string"
      +      },
      +      "rank": {
      +        "type": "number"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / relatedTopicsRising
      Added value: +{
      +  "items": {},
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / relatedTopicsTop
      Added value: +{
      +  "items": {},
      +  "type": "array"
      +}
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / startedAt
      Added value: +{
      +  "type": "string"
      +}
  3. First observed

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Against annotations declaring readOnlyHint=false and destructiveHint=true, the description does add one genuinely useful behavioral fact: pricing at $3 per 1,000 search terms, which explains why a scrape-style call is flagged as costly/destructive. However, it omits that invoking it launches an Actor run that may not finish, and gives no rate-limit or blocking context, so the destructive flag is only partially explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the Actor invocation and followed by capability and pricing. The opening 'This tool calls the Actor ... and retrieves its output results' is near-boilerplate for a wrapper, but the rest is dense and waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 20 parameters, a nested proxy object, and an output schema already present, the description needn't explain return values. What it leaves out is the asynchronous run lifecycle implied by waitSecs/maxRetries and the outputFormat choice, which materially affect how an agent invokes and follows up on this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 20 parameters is already documented in the schema, including enums, defaults, and nested proxy config. The description only restates the headline knobs (up to 5 terms, country, time range, category, search type) without adding syntax or semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource ('Returns Google Trends data per search term') and enumerates the payload (interest over time, by region, related queries/topics, Trending Now). It is clear what data comes back, but it does not distinguish this from sibling tools like get-actor-run or get-dataset-items, which a wrapper that 'retrieves output results' naturally overlaps with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no stated alternative: it never says to prefer this over get-actor-run or get-dataset-items, nor when to poll a run manually instead. The only routing hint (follow nextStep to get-actor-run) lives in the schema's waitSecs description, not the tool description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources