Google Trends

Live

OAUTH 2.0

SEARCH INTEREST

Search

Google Trends gives your agent search interest over time: start a time-series query for one or more terms in a country or region, then poll the operation for raw and 0 to 100 scaled results.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Google Trends
agent · Acme Q3
Run
Compare weekly search interest for gold and silver in the US over the last year.
S
googletrends_fetch_time_series
142ms
Trend research agent
Gold peaked at 100 in April and averaged 61 across the year. Silver stayed between 18 and 31 on the same scale.
Sources: Google Trends, 52 weekly points
googletrends
2 terms
18:29
Message Claude...

Tools your trend research agent reaches for on Google Trends, scoped per user.

CALL ANY TOOL
2 tools for search interest data: start a time-series query by term, country or region, date range, and interval, then poll the operation until results are ready.
googletrends_fetch_time_series
Fetch time series
Start an asynchronous search-interest time-series query in Google Trends for one or more terms, scoped to a country or region, date range, and interval. Returns a long-running Operation envelope immediately, e.g. {"name": "v1alpha.d3f3ded6-6fbe-4625-9bf1-d71d6312c9c9", "done": false}, not the time series data itself. Use this to start a query; call googletrends_get_operation next with the returned name to poll until done and retrieve the actual search-interest results. Requires a Google Cloud project accepted into the Google Trends API alpha program, with the Search Trends API enabled.
Parameters
Name
Type
Required
Description
end_time_seconds
integer
Required
End of the time range to query, as Unix epoch seconds (UTC).
geo_code
string
Required
ISO country code identifying the country or region to fetch search interest for, e.g. "US" or "CH".
start_time_seconds
integer
Required
Start of the time range to query, as Unix epoch seconds (UTC). The API covers a rolling 5-year window; convert your desired start date to epoch seconds before calling this tool.
terms
array
Required
Array of search terms to compare, each an object with a value (the search phrase) and a type. The only confirmed type value in this alpha is "BROAD"; no other type is documented. Example: [{"value": "gold", "type": "BROAD"}]. Multiple terms can be passed in one call to compare them on a consistent scale, unlike the Trends website's 8-term UI limit.
geo_type
string
Optional
How geo_code should be interpreted. The only confirmed value is "GEO_TYPE_COUNTRY_OR_REGION" (geo_code is treated as a country/region code); this is also the default, so most callers can leave it unset. Default: `GEO_TYPE_COUNTRY_OR_REGION`.
project_id
string
Optional
Optional Google Cloud project ID to bill this call's quota against, sent as the x-goog-user-project header. If omitted, Google uses the project already tied to the connected OAuth credentials, confirmed by live testing (an omitted/empty value falls back to the OAuth grant's own project rather than being rejected). Only set this to point the call at a different project you have serviceusage.services.use permission on; that project must also have the Search Trends API enabled.
time_resolution
string
Optional
Interval at which the time series is aggregated. Confirmed values are DAY, WEEK, MONTH, and YEAR; HOUR is not yet supported in this alpha. Defaults to DAY. One of: `DAY`, `WEEK`, `MONTH`, `YEAR`. Default: `DAY`.
googletrends_get_operation
Get operation
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Google Trends tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googletrends"], toolNames: [
    "googletrends_fetch_time_series",
    "googletrends_get_operation"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Compare weekly search interest for gold and silver in the US" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googletrends"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Compare weekly search interest for gold and silver in the US" }],
  tools,
});

// Execute the tool call with the user's vaulted Google Trends token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googletrends"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Compare weekly search interest for gold and silver in the US" }],
  tools,
});

// Tool call runs with the user's vaulted Google Trends token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googletrends"] }, pageSize: 100,
});

const agent = new Agent({
  name: "trend_research_agent",
  model: "gemini-2.5-pro",
  instruction: "Google Trends tools scoped to this user",
  tools,
});

await agent.run("Compare weekly search interest for gold and silver in the US");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Google Trends tool. Click to copy, paste into your agent, done.
Compare terms
Copy the prompt
Copied
Compare weekly search interest for gold and silver in the US over the last year.
Copy the prompt
Copied
Show monthly search interest for electric bikes in Germany since 2022.
Copy the prompt
Copied
Compare these five product names by search interest in Japan.
Time ranges
Copy the prompt
Copied
Get daily search interest for tax refund in the US from January to April 2026.
Copy the prompt
Copied
Show yearly search interest for remote work in the UK over the last 5 years.
Copy the prompt
Copied
Pull weekly search interest for our brand name in Canada for the last 90 days.
Operations
Copy the prompt
Copied
Check whether my last Trends query has finished.
Copy the prompt
Copied
Poll this operation and return the scaled search interest.
Copy the prompt
Copied
Return the raw search interest values for this completed operation.
SEE HOW AUTH WORKS
Each user signs in to Google Trends once; Scalekit stores and refreshes their tokens. Credentials stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Google Trends
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Google Trends
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Google Trends
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Google Trends
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other search and analytics connectors.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
Outbound prospecting agent
Searches Apollo for prospects matching your ICP, scores and ranks them, drafts personalized outreach in Gmail, and logs every send to Google Sheets. Mail goes out as the rep, not from a shared inbox.
Test other agents
See the same per-user auth pattern across other search and analytics connectors.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
SALES
Outbound prospecting agent
Search Apollo for ICP matches, rank them, draft personalised Gmail outreach, and log every send to Google Sheets.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Google Trends token looks fine in a demo. In production every trends query looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Google Trends today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Google Trends as the user or through a shared service account?
As the user. Each user signs in to Google Trends once, and Scalekit stores and refreshes their tokens. Every query the agent runs is attributed to that user in your audit trail, not a shared service account.
Where is the Google Trends OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Google Trends?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example only googletrends_get_operation to poll queries a backend already started. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Google Trends access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
What does a Google Trends query need?
googletrends_fetch_time_series needs a Google Cloud project accepted into the Google Trends API alpha program, with the Search Trends API enabled. Queries run asynchronously over a rolling 5-year window: the tool returns an operation name, and googletrends_get_operation polls it until the results are ready.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""googletrends"": {
""url"": ""https://mcp.scalekit.com/googletrends"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.googletrends]
url = ""https://mcp.scalekit.com/googletrends""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""googletrends"": {
""url"": ""https://mcp.scalekit.com/googletrends"",
""type"": ""http""
}
}
}