# Google Trends Scraper | Interest, Regions, Rising Queries (`akatra/google-trends-scraper`) Actor

Get Google Trends data for any keyword: interest over time, interest by region, and top and rising related queries. Compare up to 5 terms in one chart, pick any country, time range and search type (web, YouTube, news, images, shopping). Built to keep working when Google rate-limits.

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

## Pricing

from $2.10 / 1,000 keyword results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper: interest over time, regions and rising queries

Get Google Trends data for any keyword as clean JSON, CSV or Excel: **interest over time**, **interest by region**, and the **top and rising related queries**. Compare up to five terms in one chart, choose any country or state, any time range from the past hour to 2004, and the search type you care about (web, YouTube, news, images or Google Shopping).

Google Trends blocks automated requests often. This scraper is built around that: it spreads requests over several IPs, retries blocked requests from a fresh one, and never charges you for a keyword it could not complete.

**Pay per result** · **No login, no API key** · **Public data only** · **Tested daily** · **LLM-ready JSON for AI agents (MCP)**

### 🛠️ What does Google Trends Scraper do?

- 📈 **Interest over time, interest by region, top and rising related queries** in one result per keyword.
- ⚖️ **Compare up to five terms in one chart.** Any country or state, any time range from the past hour to 2004, and web, YouTube, news, images or Shopping search.
- 🛡️ **Built around Google Trends' blocking.** Requests are spread over several IPs and retried from a fresh one; a keyword that could not be completed is never charged.

#### What people use it for

- **SEO and content planning.** Find rising queries around your topic before they peak, and see which regions care most.
- **Market and product research.** Compare brands or products over time and by country.
- **Seasonality.** Pull five years of weekly interest to plan campaigns and stock.
- **Dashboards and alerts.** Run it on a schedule and feed the series into Google Sheets, BI tools or your own app.
- **AI agents.** Give an agent live demand data for any term in one call.

### 📊 What data can you extract?

Every result is one JSON object (one row in CSV or Excel) with these fields:

| Field | Meaning |
|---|---|
| `keyword`, `comparedWith` | The term, and the other terms it was compared with in the same chart |
| `geo`, `geoName`, `timeRange`, `searchType`, `category` | The settings the data was measured with |
| `interestOverTime` | The time series. `value` is Google's relative interest from 0 to 100, where 100 is the highest point in the chart. `partial` marks the last, still incomplete period |
| `averageInterest`, `peakValue`, `peakTime`, `latestValue` | Summary of the series. The average leaves out the incomplete last period |
| `hasData` | `false` when Google has too little search volume to show a trend for the term |
| `interestByRegion` | Countries (worldwide) or states and provinces (inside a country), highest interest first |
| `relatedQueriesTop` | The most common related searches, scaled 0 to 100 |
| `relatedQueriesRising` | Related searches growing fastest. `growth` is the increase, or `Breakout` for growth above 5000% |
| `trendsUrl` | The same chart on Google Trends |

### 🚀 How to use Google Trends Scraper

1. Create a free [Apify](https://apify.com) account and open this Actor.
2. Add your **search terms**, one per line. To compare terms in the same chart, put up to five on one line separated by commas: `bitcoin, ethereum`.
3. Pick a **region** (or leave it on Worldwide) and a **time range**, or set custom dates.
4. Choose the **search type**: web, YouTube, news, images or shopping.
5. Run it and download the results, or connect them through the API.

### 📥 Input example (JSON)

```json
{
  "queries": ["bitcoin, ethereum", "electric cars"],
  "geo": "US",
  "timeRange": "today 12-m",
  "searchType": "web",
  "includeRegions": true,
  "includeRelatedQueries": true
}
```

### 📤 Sample output (JSON)

![Sample output table of Google Trends Scraper](https://api.apify.com/v2/key-value-stores/GkJnrNz6YWKHQYnZr/records/google-trends-scraper-output.png)

One result per keyword. The lists are shortened here.

```json
{
  "keyword": "bitcoin",
  "comparedWith": ["ethereum"],
  "geo": "US",
  "geoName": "United States",
  "timeRange": "today 12-m",
  "searchType": "web",
  "category": 0,
  "hasData": true,
  "averageInterest": 35.8,
  "peakValue": 100,
  "peakTime": "2026-02-01T00:00:00+00:00",
  "latestValue": 17,
  "interestOverTime": [
    { "time": "2025-09-28T00:00:00+00:00", "label": "Sep 28 – Oct 4, 2025", "value": 30, "partial": false }
  ],
  "interestByRegion": [
    { "geoCode": "US-WY", "geoName": "Wyoming", "value": 100 }
  ],
  "relatedQueriesTop": [
    { "query": "bitcoin price", "value": 100 }
  ],
  "relatedQueriesRising": [
    { "query": "how to buy bitcoin safely", "value": 10900, "growth": "Breakout" }
  ],
  "trendsUrl": "https://trends.google.com/trends/explore?q=bitcoin%2Cethereum&date=today+12-m&geo=US",
  "scrapedAt": "2026-10-02T00:12:06+00:00"
}
```

### 🤖 Use it with AI agents, MCP and the API

The output is clean JSON with stable field names, ready for LLM pipelines, RAG and agent tools without extra parsing.

- **AI agents and MCP (Claude, ChatGPT, Cursor and others).** Add the Apify MCP server with this Actor as a tool: `https://mcp.apify.com?tools=akatra/google-trends-scraper`. The agent can then run it and read the results by itself.
- **API.** Start a run and get the results in a single call:

```bash
curl -X POST "https://api.apify.com/v2/acts/akatra~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["bitcoin, ethereum", "electric cars"], "geo": "US", "timeRange": "today 12-m", "searchType": "web", "includeRegions": true, "includeRelatedQueries": true}'
```

- **No-code tools and SDKs.** Works with Make, n8n, Zapier and LangChain through Apify's integrations, and with the Apify clients for Python and JavaScript. Schedule it and send the results to a webhook, Google Sheets or your own database.

### 💰 Pricing: pay per result

You pay per keyword result, nothing for empty runs beyond a tiny start fee. See the price on the Pricing tab. The time series, regions and related queries are all included in one result. There is no subscription or rental fee. New to Apify? The free plan includes $5 of platform credit every month, enough for about 1,600 keyword results with this Actor, and no credit card is needed.

### 🚦 Run status and error messages

Every run ends with a plain status message, so automated workflows (API, Make, n8n, AI agents) can tell what happened without reading the log:

| Situation | What you get |
|---|---|
| Finished normally | `Saved N keywords.` |
| Nothing could be saved | The run succeeds with `No results saved.` You pay only the start fee. |
| Google Trends rejects a line | `Google Trends rejected N line(s) as invalid; check the region code and dates.` |
| Google Trends kept blocking a chart | `Skipped N keywords whose details stayed blocked (not charged).` |
| Missing or unsupported input | The run fails at once and the log names the field to fix. Nothing is scraped. |
| Your maximum charge is reached | Stops cleanly with `Stopped at your maximum charge limit.` Everything saved so far stays in the dataset. |

### ℹ️ Good to know

- Values are **relative, not search volumes**. Google scales each chart so its highest point is 100. When you compare terms on one line, they share the same scale, so you can see which one is bigger; terms on separate lines are each scaled on their own.
- A chart that stays blocked after all retries is skipped and **not charged**. The run's status message tells you how many keywords were skipped, so you can run them again.
- A term with too little search volume still returns a result with `hasData: false`, because that is an answer too.
- The scraper returns related queries. Related topics are not included.
- Very short time ranges (past hour, past 4 hours) come in minute steps; long ones in weeks or months, exactly as Google Trends shows them.
- If you set a maximum charge for a run, the scraper stops as soon as that limit is reached.
- No personal data: Google Trends data is aggregated and anonymous.

### 📝 Changelog

- **2026-10-02** README restructured: data table, API and MCP examples, run status messages.
- **2026-10-02** Region codes are validated, invalid requests are told apart from blocks, duplicate terms removed, after an independent audit.
- **2026-10-02** First release: interest over time, regions, related queries, comparisons of up to five terms.

### ⚖️ Legal and privacy

This scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by Google. "Google" and "Google Trends" are trademarks of their owner and are used here only to show which website the tool works with. Use the data in line with the laws that apply to you and the source site's terms.

The source site's name and logo are trademarks of their owner and appear here only to identify the website this tool works with. The Actor reads only pages that are public without logging in. How you store and use the data is your responsibility: follow the laws that apply to you, such as GDPR and CCPA.

### 🔗 More scrapers from Akatra

- [Indeed Jobs Scraper](https://apify.com/akatra/indeed-jobs-scraper): 💼 job ads from Indeed in 30 countries, with yearly salary and only-new mode.
- [Google News Scraper](https://apify.com/akatra/google-news-scraper): 📰 news by keyword or topic in 50 editions, with the real article URLs.
- [Google Ads Transparency Scraper](https://apify.com/akatra/google-ads-transparency-scraper): 🔎 every ad a company runs on Google, with regions and dates.
- [YouTube Transcript Scraper](https://apify.com/akatra/youtube-transcript-scraper): 🎬 video transcripts as clean text and timestamped lines.

### 💬 Support

Found a bug or need a field that is missing? Open an issue on the Issues tab and we usually reply within a day.

# Actor input Schema

## `queries` (type: `array`):

One keyword per line. To compare terms in one chart, put up to 5 on the same line separated by commas, for example: bitcoin, ethereum.

## `geo` (type: `string`):

Country to measure interest in. Leave on 'Worldwide' for global interest.

## `geoCode` (type: `string`):

Optional. A Google Trends region code for a state or province, for example US-CA (California) or GB-ENG (England). Overrides 'Region'.

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

Period to measure. Ignored when you set the dates below.

## `dateFrom` (type: `string`):

Optional custom period start.

## `dateTo` (type: `string`):

Optional custom period end.

## `searchType` (type: `string`):

Which Google search the interest is measured on.

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

Optional Google Trends category number to narrow the meaning of a term (0 = all categories). For example 7 is Finance and 5 is Computers & Electronics.

## `includeRegions` (type: `boolean`):

Add the breakdown by country (worldwide) or by state or province (inside a country).

## `includeRelatedQueries` (type: `boolean`):

Add the top and rising searches related to each term.

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

Apify Proxy is recommended. The scraper spreads requests over several IPs and switches to residential IPs only when Google keeps blocking a request.

## Actor input object example

```json
{
  "queries": [
    "bitcoin, ethereum",
    "electric cars"
  ],
  "geo": "",
  "timeRange": "today 12-m",
  "searchType": "web",
  "category": 0,
  "includeRegions": true,
  "includeRelatedQueries": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `keywords` (type: `string`):

Summary of every keyword, shown in the overview table.

## `keywordsFull` (type: `string`):

Every keyword with the full time series, regions and related queries.

# 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 = {
    "queries": [
        "bitcoin, ethereum",
        "electric cars"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("akatra/google-trends-scraper").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 = {
    "queries": [
        "bitcoin, ethereum",
        "electric cars",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("akatra/google-trends-scraper").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 '{
  "queries": [
    "bitcoin, ethereum",
    "electric cars"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call akatra/google-trends-scraper --silent --output-dataset

```

## MCP server setup

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

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/WicKU2GRuw8zGH2nk/builds/SycgzLydALCZFqdhy/openapi.json
