# Google Trends Explorer: Interest, Regions & Related Queries (`cleandata-labs/google-trends-explorer`) Actor

Google Trends data without an API key: interest over time, by region, related & rising queries/topics, Trending Now and keyword suggestions. Paste Trends URLs, flat CSV output. Errors and no-data rows are free.

- **URL**: https://apify.com/cleandata-labs/google-trends-explorer.md
- **Developed by:** [CleanData Labs](https://apify.com/cleandata-labs) (community)
- **Categories:** SEO tools, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Trends Explorer – Interest Over Time, Regions, Related Queries & Trending Now

### What does Google Trends Explorer do?

Google Trends Explorer is a **Google Trends scraper and unofficial Google Trends API** on Apify. Enter keywords (or paste Google Trends links) and it returns the same data you see on trends.google.com – **interest over time, interest by region, related queries, related topics and Trending Now searches** – as structured data you can download or connect to your tools.

Get **Google Trends data in JSON, CSV or Excel** without an API key: interest over time, interest by region (country, state, city, metro), **related queries and related topics (top + rising)**, keyword comparisons of up to 5 terms, and the daily **Trending Now** searches for any country.

Built for reliability: every request rotates the session (and proxy IP, if enabled) on rate limits, with exponential backoff, so large keyword lists finish instead of failing halfway. You **only pay for results that were delivered** – failed queries are reported in the dataset and never charged.

### What can it do?

| Data | Description |
|---|---|
| Interest over time | Weekly/daily/hourly 0–100 index for each keyword, with partial-data flag and averages |
| Interest by region | Values per country, region/state, city or US metro (DMA) |
| Related queries | Top and rising searches (incl. "Breakout") with links |
| Related topics | Top and rising topics with Knowledge Graph IDs (single-keyword queries) |
| Trending Now | Today's trending searches per country, with approx. traffic and news articles (official RSS feed) |
| Properties | Web, YouTube, News, Images and Google Shopping search |
| Keyword suggestions | Google Trends autocomplete: topic IDs and types (e.g. "Bitcoin – Cryptocurrency") to use topics instead of plain terms |
| Trends URLs as input | Paste `trends.google.com/trends/explore?...` links – keywords, country, time range, category and property are read from the URL |

Every row has a `trendsUrl` to open the same chart in the browser. Related queries/topics include `rank`, `isBreakout` and `growthPercent` (rising %), so you can sort and filter without parsing "+250%" strings. Trending Now rows include a numeric `approxTrafficNumber` and an `exploreUrl`.

### How to use Google Trends Explorer

1. Open the Actor in Apify Console (click **Try for free** on this page) and sign in or create a free Apify account.
2. In **Keywords / search terms**, add the words to look up – or paste chart links into **Google Trends URLs**. Turn on **Compare keywords together** to compare up to 5 terms on one scale.
3. Choose **Countries / regions** (e.g. `US`, `GB`, `US-CA`), a **Time range** (or a **Custom time range**) and, optionally, a **Search property** (Web, YouTube, News, Images, Shopping).
4. Tick the data you want: **Interest over time**, **Interest by region**, **Related queries (top + rising)**, **Related topics (top + rising)**, and/or add **Trending Now countries**.
5. Click **Start**. When the run finishes, open the **Output** tab and download the results as **JSON, CSV, Excel** or HTML. Turn on **Flatten output (CSV / Sheets friendly)** for one row per date or region.
6. To keep data fresh, create a **Schedule** (e.g. weekly) or start the Actor from your code via the Apify API.

### Use cases

- **SEO & content planning** – find rising queries before they peak.
- **Market research & e-commerce** – compare product or brand demand across countries and seasons.
- **Data science** – feed search-interest time series into forecasting models or dashboards.
- **AI agents** – call it as a tool via the Apify API or MCP to answer "is X growing?" questions.

### Input example

```json
{
  "keywords": ["chatgpt", "gemini", "claude"],
  "compareKeywords": true,
  "geos": ["US", "GB"],
  "timeRange": "today 12-m",
  "interestOverTime": true,
  "interestByRegion": true,
  "relatedQueries": true,
  "trendingNowGeos": ["US"]
}
```

Also: `startUrls` (Google Trends explore URLs), `keywordSuggestions` (autocomplete topics), `trendingNowMaxItems`, `onlyRegionsWithData` (default true – drops regions with no data) and `flattenOutput` (one dataset row per time point / region, ideal for CSV and Excel; still charged as one result per block).

Time range presets: past hour, 4 hours, day, 7 days, 30 days, 90 days, 12 months, 5 years, since 2004 – or a custom range like `2024-01-01 2024-12-31`.

### Output example (interest over time)

```json
{
  "type": "interest_over_time",
  "keywords": ["bitcoin", "ethereum"],
  "geo": "US",
  "timeRange": "today 12-m",
  "timeline": [{ "date": "Oct 26 – Nov 1, 2025", "timestamp": 1761436800, "isPartial": false, "bitcoin": 62, "ethereum": 14 }],
  "averages": { "bitcoin": 55, "ethereum": 12 },
  "pointCount": 53
}
```

Other row types: `interest_by_region`, `related_queries`, `related_topics`, `trending_now`, `keyword_suggestions`, and `error` (not charged). If Google has no data for a keyword/region combination, the row is returned with `noData: true` and is **not charged**.

### How much does it cost?

Google Trends Explorer uses **pay-per-event pricing: $0.0025 per result** ($2.50 per 1,000 results). You don't pay separately for compute or proxies.

Pay per result: **one result = one complete data block** (e.g. the full 12-month timeline for a keyword set, the full region table, the related-queries list for one keyword, the suggestions for one keyword, or one trending search). Flattened output does not change the price – a 53-point timeline split into 53 rows is still one result. The only other charge is Apify's standard Actor start event ($0.00005 per run, i.e. $0.05 per 1,000 runs). Set a *maximum cost per run* in the run options – the Actor stops cleanly when the limit is reached.

Error rows and `noData` rows are **free**. The minimum *maximum cost per run* setting is $0.25. Apify's free plan includes **$5 of platform credit every month**, which is enough to try the Actor on real data before you pay anything.

### Tips for reliable large runs

- Google rate-limits busy IP addresses. Apify Proxy is on by default and every retry gets a new IP. For more than ~20 queries per run, switch the proxy group to **Residential**, and raise the delay between requests if you see many retries.
- Keep the default 1-second delay; raise it if you see many retries in the log.
- Values are relative (0–100) within each request – use *Compare keywords* to get directly comparable numbers.

### Use with AI agents (MCP)

Google Trends Explorer works as a ready-made tool for Claude, ChatGPT, Cursor, VS Code and any other MCP client through the official [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). The agent gets one tool, `cleandata-labs--google-trends-explorer`, with the input fields described on this page, and you pay the normal pay-per-event price from your Apify account (a free account works; it includes $5 of monthly credit).

**MCP server URL with only this Actor:**

```text
https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer
```

On first connection your client opens the Apify sign-in (OAuth). To use an API token instead, send the header `Authorization: Bearer <YOUR_APIFY_TOKEN>`.

**Claude (claude.ai and Claude Desktop):** Settings → Connectors → Add custom connector. Name: `Google Trends`, Remote MCP server URL: the URL above.

**Claude Desktop with a local config file** (`claude_desktop_config.json`, needs Node.js 18+):

```json
{
  "mcpServers": {
    "google-trends": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--tools", "cleandata-labs/google-trends-explorer"],
      "env": { "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>" }
    }
  }
}
```

**Cursor** (`~/.cursor/mcp.json`, or `.cursor/mcp.json` in a project):

```json
{
  "mcpServers": {
    "google-trends": {
      "url": "https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer"
    }
  }
}
```

**Claude Code:**

```bash
claude mcp add --transport http google-trends "https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer"
```

**VS Code** (`.vscode/mcp.json`):

```json
{
  "servers": {
    "google-trends": { "type": "http", "url": "https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer" }
  }
}
```

Already connected to `https://mcp.apify.com` with the default tools? Just ask your agent to use `cleandata-labs/google-trends-explorer`; it can run it through `call-actor`. To load several Actors in one connection, separate them with commas, e.g. `https://mcp.apify.com?tools=cleandata-labs/google-trends-explorer,cleandata-labs/url-to-markdown`.

#### Tips for agents

- Smallest useful input: `{"keywords": ["bitcoin"], "geos": ["US"]}` (one result: the 12-month US timeline).
- Most runs finish in 5-10 seconds, so results are usually ready within the MCP call's default 30-second wait. The call returns a dataset ID; the agent reads the rows with `get-dataset-items`.
- Cost: $0.0025 per data block (one timeline, one region table, one related-queries list or one trending search). Errors and no-data rows are free.
- For "X vs Y" questions set `compareKeywords: true` so all terms share one 0-100 scale.
- For keyword research add `relatedQueries: true`; rising queries come with `growthPercent` and `isBreakout`.
- For "what is trending today" use `{"keywords": [], "trendingNowGeos": ["US"], "trendingNowMaxItems": 10}`. Pass `keywords: []`, otherwise the demo default `["chatgpt","gemini"]` is also run.

#### Example prompts

1. "Is interest in "electric bikes" growing in Germany? Use Google Trends for the past 5 years and list the top rising related queries."
2. "Compare ChatGPT, Gemini and Claude on Google Trends in the US over the past 12 months on one scale. Which one is gaining fastest?"
3. "What is trending on Google in Romania today? Give me the top 5 Trending Now searches with their approximate traffic."

### Integrations

Google Trends Explorer works with everything that connects to Apify:

- **Make, Zapier and n8n** – start a run and process the results in your no-code workflows.
- **Google Sheets** – export the dataset to a spreadsheet, or keep a sheet updated with a scheduled run.
- **Webhooks** – get a notification (Slack, email, your own endpoint) when a run finishes or fails.
- **Apify API and clients** – start runs and download results from your code with the REST API, the [Python client](https://docs.apify.com/api/client/python) (`apify-client`) or the [JavaScript client](https://docs.apify.com/api/client/js) (`apify-client`).
- **AI agents** – use it as a tool through the Apify MCP server or the LangChain / LlamaIndex integrations.

Python example:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("cleandata-labs/google-trends-explorer").call(run_input={"keywords": ["chatgpt", "gemini"], "geos": ["US"]})
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)
```

### Limitations & legal

- Google Trends numbers are sampled and normalized by Google; they are an index, not absolute search volume.
- Related topics are returned by Google only for single-keyword queries.
- This Actor is not affiliated with or endorsed by Google. It reads the public, aggregated (non-personal) data that trends.google.com shows to any visitor, on paths allowed by its robots.txt. You are responsible for using the data in line with Google's Terms of Service and applicable law.

### FAQ

**Do I need a Google account or API key?** No.

**Can I get data for a US state or city?** Yes – use codes like `US-CA` in *Countries / regions*, or choose a *Region resolution*.

**Why did a query fail?** Usually a temporary rate limit. It's listed as `type: "error"`, not charged; re-run it with a proxy.

**Is it legal to scrape Google Trends?** The Actor only reads public, aggregated search-interest data that Google shows to every visitor, without logging in. It does not collect personal data. Whether your specific use is allowed depends on your jurisdiction and purpose, so check Google's Terms of Service and applicable law, and ask a lawyer if you are unsure. You are responsible for how you use the data.

**Can I use it with integrations, the API or LLM tools?** Yes. Connect it to Make, Zapier, n8n, Google Sheets or webhooks, call it from Python or JavaScript with the Apify API, or give it to AI agents as a tool via the Apify MCP server (see *Integrations* above).

**Is this the official Google Trends API?** No. Google has no generally available public Trends API; this Actor reads the public trends.google.com website and returns the data in a structured format. It is not affiliated with Google.

**How many keywords can I run?** As many as you like in one run. Apify Proxy is on by default, so rate-limited requests are retried from a new IP. For more than about 20 queries, switch the proxy group to **Residential**.

# Actor input Schema

## `keywords` (type: `array`):

Search terms to look up, e.g. \["chatgpt", "gemini"]. Each keyword is a separate query with its own 0-100 scale unless compareKeywords=true. Topic IDs such as "/m/0dl567" (from keywordSuggestions) also work. If you omit this field the default \["chatgpt","gemini"] is used, so pass \[] when you only want trendingNowGeos or startUrls.

## `startUrls` (type: `array`):

Optional. Google Trends explore links, e.g. \[{"url": "https://trends.google.com/trends/explore?q=bitcoin\&geo=US"}]. Keywords, country, time range, category and property are read from each URL. Set keywords to \[] to run only these URLs.

## `keywordSuggestions` (type: `boolean`):

true = also return Google Trends autocomplete topics for each keyword (title, type and topic ID such as "/m/0dl567"). Use a returned ID as a keyword for language-independent results. Default false.

## `compareKeywords` (type: `boolean`):

true = compare keywords on one shared 0-100 scale (groups of max 5, like trends.google.com). Use it for 'X vs Y' questions. false (default) = every keyword is scaled on its own, so values are not comparable between keywords.

## `geos` (type: `array`):

Country or region codes, e.g. \["US"], \["GB","DE"] or \["US-CA"] for a US state. Each code is a separate query. \[] = worldwide. Default \["US"].

## `timeRange` (type: `string`):

Preset period: "now 1-H" past hour, "now 4-H" past 4 h, "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 (default), "today 5-y" past 5 years, "all" since 2004. Ignored when customTimeRange is set.

## `customTimeRange` (type: `string`):

Optional exact period that overrides timeRange. Format 'YYYY-MM-DD YYYY-MM-DD', e.g. '2024-01-01 2024-12-31'.

## `category` (type: `integer`):

Google Trends category ID to narrow ambiguous terms, e.g. 0 = all categories (default), 7 = Finance, 71 = Food & Drink, 958 = Jobs & Education. Use the number from the cat= parameter of a trends.google.com URL.

## `property` (type: `string`):

Which Google search to measure: "web" (default), "youtube", "news", "images" or "froogle" (Google Shopping).

## `interestOverTime` (type: `boolean`):

true (default) = return the 0-100 interest timeline for each query, plus averages and a partial-data flag. One result per query.

## `interestByRegion` (type: `boolean`):

true = also return interest per country / region / city for each query (see regionResolution). One result per query. Default false.

## `regionResolution` (type: `string`):

Detail level for interestByRegion: "COUNTRY", "REGION" (state / province), "CITY" or "DMA" (US metro areas). Omit to let Google choose (countries for worldwide, regions inside one country).

## `onlyRegionsWithData` (type: `boolean`):

true (default) = drop regions where Google has no data, which keeps the output short.

## `relatedQueries` (type: `boolean`):

true = also return related search queries, top and rising (with growth % and 'Breakout' flag). Best for keyword research. One result per query. Default false.

## `relatedTopics` (type: `boolean`):

true = also return related topics, top and rising, with Knowledge Graph IDs. Google returns them only for single-keyword queries. One result per query. Default false.

## `trendingNowGeos` (type: `array`):

Optional country codes for today's Trending Now searches (Google's official RSS feed), e.g. \["US"] or \["GB","RO"]. Each trending search is one result. Set keywords to \[] if you only want trending searches.

## `trendingNowMaxItems` (type: `integer`):

Max Trending Now searches per country. 0 (default) = all items in Google's feed (usually 10-20). Use a small number such as 5 to keep the output short.

## `language` (type: `string`):

Interface language (hl parameter) for topic names and related queries, e.g. "en-US" (default), "de", "ro".

## `timezoneOffset` (type: `integer`):

Timezone offset in minutes, same as the tz parameter on trends.google.com, e.g. 0 = UTC (default), -120 = UTC+2. Affects hourly and daily timelines.

## `delayBetweenRequestsSecs` (type: `integer`):

Pause between Google requests in seconds, 0-30. Default 1. Raise it only if many requests are retried.

## `maxRetries` (type: `integer`):

Retries per request on rate limits or network errors, 0-10. Default 5. Each retry uses a new session (and proxy IP).

## `requestTimeoutSecs` (type: `integer`):

Timeout per HTTP request in seconds, 5-120. Default 30.

## `proxyConfiguration` (type: `object`):

Proxy settings. Default {"useApifyProxy": true}, which is recommended: Google rate-limits datacenter IPs and every retry rotates the IP. Leave as is unless you have a reason to change it.

## `flattenOutput` (type: `boolean`):

true = one row per date / region instead of one row with a nested array (handy for CSV and Sheets). Price is unchanged: one charge per data block. Default false, which is more compact for AI agents.

## Actor input object example

```json
{
  "keywords": [
    "chatgpt",
    "gemini"
  ],
  "keywordSuggestions": false,
  "compareKeywords": false,
  "geos": [
    "US"
  ],
  "timeRange": "today 12-m",
  "category": 0,
  "property": "web",
  "interestOverTime": true,
  "interestByRegion": false,
  "regionResolution": "",
  "onlyRegionsWithData": true,
  "relatedQueries": false,
  "relatedTopics": false,
  "trendingNowMaxItems": 0,
  "language": "en-US",
  "timezoneOffset": 0,
  "delayBetweenRequestsSecs": 1,
  "maxRetries": 5,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "flattenOutput": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "chatgpt",
        "gemini"
    ],
    "geos": [
        "US"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleandata-labs/google-trends-explorer").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "chatgpt",
        "gemini",
    ],
    "geos": ["US"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("cleandata-labs/google-trends-explorer").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "chatgpt",
    "gemini"
  ],
  "geos": [
    "US"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call cleandata-labs/google-trends-explorer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cleandata-labs/google-trends-explorer"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5Sr7dbTutWBzQ1R68/builds/gAHkiwjK3vnVlV3hr/openapi.json
