# Google Trends Scraper: Interest, Related and Trending Now (`agenttoolworks/google-trends-scraper`) Actor

Google Trends scraper for search terms and comparisons: interest over time, interest by region, related queries, plus the full Trending now list per country. Batch up to 2,000 queries, no charge for empty results.

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

## Pricing

from $1.20 / 1,000 query with data

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

### What is this Google Trends scraper?

This Actor is a **Google Trends scraper**, and a practical **Google Trends API**: give it search terms (`matcha`, `cold brew`) or comparisons of up to five terms (`coffee, tea`), and get one row per query with **interest over time**, **interest by region** (country, region, US metro or city) and **related queries** (top and rising), exactly as the Google Trends explore page shows them. Or read the full **Trending now** list of a country, one row per trending search, with its start time, search volume, categories and trend breakdown.

**In short**

- **What you get**: interest over time, interest by region and related queries (top and rising) for up to 2,000 terms or comparisons per run, one row per query; or the whole Trending now list of a country, one row per search.
- **What it costs**: $1.50 per 1,000 queries with data ($1.20 on Apify Business plans) plus $0.003 per run, platform usage included. A query Google has no data for is returned with the reason and never charged.
- **Why this one** (Store data read 2026-10-05, prices read again 2026-10-13): on Apify's free plan, $1.50 where apify/google-trends-scraper charges $3.00 plus platform usage and data_xplorer $2.00 plus $0.025 per run; comparisons of up to 5 terms with related queries and regions, which data_xplorer does not offer; and 109 of our 110 runs succeeded on 2026-10-05 (the one failure was an empty input, refused by design), where the leader's 30-day success rate was 59.3%.

Batch up to **2,000 queries per run**. Duplicates are dropped before any request, and **a query Google has no data for is returned with the reason and never charged**.

No Google account, no API key, no cookies from a signed-in browser: the Actor reads what Google Trends shows any logged-out visitor.

![Google Trends scraper: search terms and comparisons in, one row per query out, plus the full Trending now list of a country, from two real runs](https://agenttoolworks.com/apify/trends-overview.png)

### What data can you extract from Google Trends?

Two modes, one row type each.

**Explore** (one row per search term or comparison):

| Section | What you get |
|---|---|
| Interest over time | One point per date (or hour, or minute) and term, 0 to 100 relative to the chart's highest point, with Google's own date label and a flag on the last, still partial, point |
| Averages | Google's average per term over the period, for comparisons |
| Interest by region | One point per region and term: countries, regions or states, US metro areas (DMA) or cities with coordinates, plus each term's **share** in a comparison |
| Related queries | Top (0 to 100) and rising (`+2,000%` or `Breakout`) for each term, with a link to each one on Google Trends |
| Related topics | Opt-in, see the limits: Google sends logged-out visitors an empty list for most queries |
| Context | The time range Google resolved (`2025-10-13 2026-10-13`), the bucket it chose (`WEEK`), category, search type, a link to the same chart on trends.google.com, and a status (`ok`, `partial`, `no_data`, `failed`) with notes |

**Trending now** (one row per trending search): the search, country or region, Google's volume bucket (`2M+`) and its lower bound as a number, increase in percent, when it started trending and when it stopped (or `null` while active), active flag, categories, the searches Google groups under it (its trend breakdown), and a link to it on Google Trends.

Every key is on every row, `null` or an empty list when Google gives nothing, so a CSV export always has the same columns.

### What can you use Google Trends data for?

- **Keyword and content research**: rising queries around a topic, before they show up in keyword tools.
- **Product and market research**: compare brands, products or categories on one 0 to 100 scale, by state or metro.
- **Seasonality**: five years of weekly interest, or every month since 2004, for each term of a list.
- **News and social monitoring**: what is trending in a country right now, refreshed on a schedule.
- **Data for AI agents and pipelines**: one predictable JSON row per query, in long format (one element per date and term), the same shape for one term or five.

### How to scrape Google Trends

1. Click **Try for free** (or **Start**) on this page and sign in to Apify.
2. Keep **What to read** on **Explore search terms**. Type one **search term** per line, or a **comparison** of 2 to 5 terms separated by commas.
3. Pick the **Location** (empty for worldwide, `US`, `US-CA`), the **Time range** and, if you want, a category or a search type (web, images, news, YouTube, Shopping).
4. Click **Start**. When the run finishes, open the **Output** tab and pick the **Queries**, **Interest over time**, **Interest by region** or **Related queries** view, then export as JSON, CSV, Excel or XML, or read it through the API.
5. For Trending now, set **What to read** to **Trending now**, list the countries, and open the **Trending now** view.

![The Actor's input form in Apify Console: what to read, search terms, comparisons, Google Trends URLs, location and time range](https://agenttoolworks.com/apify/trends-input-form.jpg)

### Input

| Field | What it does |
|---|---|
| `mode` | `explore` (default) or `trendingNow`. |
| `searchTerms` | One term per line, each read on its own. A topic ID such as `/m/02vqfm` works too. |
| `comparisons` | 2 to 5 terms per line, separated by commas, compared on one scale as on the Google Trends page. |
| `startUrls` | Google Trends explore URLs (`https://trends.google.com/trends/explore?q=...`). Each keeps its own terms, location, dates, category and search type. |
| `geo` | Empty for worldwide, a country (`US`, `FR`), a region (`US-CA`) or a US metro (`US-CA-807`). |
| `timeRange`, `customTimeRange` | Past hour to "2004 to present", as on the page, or exact dates (`2024-01-01 2024-12-31`). |
| `category`, `property` | A Google Trends category ID (`71` is Food & Drink) and the search type: web, images, news, YouTube or Shopping. |
| `sections` | Interest over time, interest by region and related queries by default; related topics opt-in. Same price whatever you pick. |
| `regionResolution`, `includeLowVolumeRegions` | Countries, regions, US metros or cities, and Google's own low-volume checkbox. |
| `language`, `timezoneOffsetMinutes` | Language of Google's labels, and the time zone of hourly and daily buckets. |
| `trendingGeos`, `trendingHours`, `trendingCategories`, `trendingActiveOnly`, `maxTrendingPerGeo` | Trending now mode: countries or regions, past 4, 24 or 48 hours or 7 days, Google's 19 categories, the "Active" filter, and an optional cap per country. |
| `proxy` | `auto` (default): Apify datacenter IPs, one per parallel session, with residential IPs taking over a session that keeps failing. `none` is one IP, paced, and suited to a few queries only. |

Up to 2,000 explore queries per run.

Example: two terms and a comparison in the United States, past 12 months (the run on this page).

```json
{
  "searchTerms": ["matcha", "cold brew"],
  "comparisons": ["coffee, tea"],
  "geo": "US",
  "timeRange": "today 12-m"
}
```

Example: five years of weekly interest for a list of products, worldwide, YouTube search.

```json
{
  "searchTerms": ["air fryer", "stand mixer", "espresso machine"],
  "timeRange": "today 5-y",
  "property": "youtube"
}
```

Example: interest by US metro area for one term.

```json
{
  "searchTerms": ["snow tires"],
  "geo": "US",
  "regionResolution": "DMA",
  "sections": ["interestByRegion"]
}
```

Example: Trending now in three countries over the past 24 hours, sports only.

```json
{
  "mode": "trendingNow",
  "trendingGeos": ["US", "GB", "FR"],
  "trendingHours": "24",
  "trendingCategories": ["17"]
}
```

### Output

The dataset holds one row per query (explore) or one row per trending search (Trending now), with five ready-made views in Apify Console and in the API:

- **Queries**: query, status, location, time range, the period and bucket Google resolved, averages and notes.
- **Interest over time**: one row per date and term, ready for a chart or a spreadsheet.
- **Interest by region**: one row per region and term, with the share of each term in a comparison.
- **Related queries**: one row per related query, top and rising.
- **Trending now**: one row per trending search (Trending now runs).

![Interest over time view of a real run in Apify Console: one row per week and term, with Google's date label, the interest value and the partial flag](https://agenttoolworks.com/apify/trends-timeline-view.jpg)

![Related queries view of the same run: for each term, the top and rising related queries with Google's value and a link to each one on Google Trends](https://agenttoolworks.com/apify/trends-related-view.jpg)

![Trending now view of a real run: the United States list over the past 24 hours, with search volume, increase, start time, categories and the trend breakdown](https://agenttoolworks.com/apify/trends-trending-view.jpg)

A row from the cloud run on this page (`coffee, tea`, United States, past 12 months, 2026-10-13; series shortened to their first and last points):

```json
{
  "query": "coffee vs tea",
  "terms": ["coffee", "tea"],
  "geo": "US",
  "timeRange": "today 12-m",
  "resolvedTimeRange": "2025-10-13 2026-10-13",
  "timeResolution": "WEEK",
  "category": 0,
  "property": "web",
  "regionResolution": "REGION",
  "status": "ok",
  "averages": [
    { "averageTerm": "coffee", "averageValue": 79 },
    { "averageTerm": "tea", "averageValue": 38 }
  ],
  "interestOverTime": [
    { "date": "2025-10-12T00:00:00.000Z", "dateLabel": "Oct 12 - 18, 2025", "term": "coffee", "value": 64, "hasData": true, "isPartial": false },
    { "date": "2025-10-12T00:00:00.000Z", "dateLabel": "Oct 12 - 18, 2025", "term": "tea", "value": 34, "hasData": true, "isPartial": false },
    { "date": "2026-10-11T00:00:00.000Z", "dateLabel": "Oct 11 - 17, 2026", "term": "coffee", "value": 74, "hasData": true, "isPartial": true }
  ],
  "interestByRegion": [
    { "regionCode": "US-WY", "regionName": "Wyoming", "latitude": null, "longitude": null, "term": "coffee", "value": 100, "hasData": true, "sharePercent": 71 },
    { "regionCode": "US-WY", "regionName": "Wyoming", "latitude": null, "longitude": null, "term": "tea", "value": 100, "hasData": true, "sharePercent": 29 }
  ],
  "relatedQueries": [
    { "term": "coffee", "ranking": "top", "relatedQuery": "coffee near me", "relatedValue": 100, "relatedLabel": "100", "relatedUrl": "https://trends.google.com/trends/explore?q=coffee+near+me&date=today+12-m&geo=US" },
    { "term": "tea", "ranking": "rising", "relatedQuery": "how to make cold brew tea", "relatedValue": 2000, "relatedLabel": "+2,000%", "relatedUrl": "https://trends.google.com/trends/explore?q=how+to+make+cold+brew+tea&date=today+12-m&geo=US" }
  ],
  "relatedTopics": [],
  "notes": [],
  "trendsUrl": "https://trends.google.com/trends/explore?date=today+12-m&geo=US&q=coffee%2Ctea&hl=en-US",
  "scrapedAt": "2026-10-13T14:34:49.917Z"
}
```

A Trending now row from the other run on this page (United States, past 24 hours, 467 searches; breakdown shortened):

```json
{
  "trend": "spacex launch",
  "geo": "US",
  "hours": 24,
  "searchVolume": 100000,
  "searchVolumeLabel": "100K+",
  "increasePercent": 1000,
  "startedAt": "2026-10-13T09:00:00.000Z",
  "endedAt": null,
  "isActive": true,
  "categories": ["Business and Finance", "Science"],
  "relatedSearches": ["spacex launch", "rocket launch today", "spacex launch today", "spacex rocket launch", "space x", "heartland"],
  "exploreUrl": "https://trends.google.com/trends/explore?q=spacex+launch&date=now+7-d&hl=en-US&geo=US",
  "scrapedAt": "2026-10-13T14:35:05.791Z"
}
```

#### Run summary

The run's key-value store holds a `SUMMARY` record: one report per query (status, reason, requests, HTTP 429 answers, seconds), the counts of `ok`, `partial`, `no_data` and `failed`, how many rows were charged and how many were free, duplicates skipped, requests sent through residential IPs, and bytes read. A missing result is never silent.

### Limits worth knowing before you run it

- **Related topics are empty for logged-out visitors.** Google sent an empty related-topics list to every logged-out client we tried (plain HTTP, headless and headful Chrome, Apify datacenter and residential IPs), while a signed-in browser showed topics for the same query. The Actor never signs in, so related topics are off by default; turned on, they are returned only when Google sends them, and a note says so. Related queries, interest over time and by region matched what a signed-in browser showed.
- **City-level regions can be thinner** than a signed-in browser sees. When Google has too little data, the row says so.
- **Google Trends numbers are samples.** The same query read twice can move by a point: `coffee, tea` gave averages of 78 and 37 at 14:15 UTC and 79 and 38 at 14:34 on 2026-10-13 (a signed-in browser showed 78 and 37), and the order of rising queries changed between two loads in the same signed-in browser. Values are relative (0 to 100), never search volumes.
- **Rising queries are Google's, noise included.** For `coffee` in the US over 12 months, Google listed `home workout routines` and `sports scores today` among the top rising queries, in our logged-out answers and in a signed-in browser alike. The Actor returns what Google lists.
- **Speed depends on Google's rate limit.** Google answers HTTP 429 per IP. The same three queries took 126 s (27 of 79 requests answered 429, residential fallback used) and then 6 s (no 429) nineteen minutes apart on 2026-10-13. Every query still ends with a row and a status.
- **No proxy means one IP**, paced at one request per second: Google refuses a single IP for over an hour after about 140 quick requests. Keep `auto` for more than a few queries.
- **Trending now needs a country**: Google offers no worldwide list.
- **Five terms per comparison**, as on Google Trends.

### How it compares with the most used Google Trends scrapers

Read on 2026-10-05 from the public Store data of both Actors (their pricing, run statistics, input schemas, READMEs, reviews and issues). We did not run either of them. Our figures are our own Apify cloud runs.

| | apify/google-trends-scraper | data_xplorer/google-trends-fast-scraper | **This Actor** |
|---|---|---|---|
| Price per 1,000 results | $3.00 on the free tier (down to $0.10 on Diamond), plus platform usage, 4 GB default memory | $2.00 (down to $0.50), plus $0.025 per run start since 2026-10-10 (read 2026-10-13) | **$1.50** per 1,000 queries with data, plus $0.003 per run start, platform usage included |
| Empty result charged | yes (reviews: a costly test run with no result) | not published | never: `no_data` and `failed` rows are free |
| 30-day run success | 59.3% of 21,396 runs (4,809 timed out, 3,220 aborted) | 99.5% of 46,009 runs | 109 of 110 runs on 2026-10-05; the one failure was an empty input, refused by design; 0 failed queries in 1,297 |
| Comparison of terms | yes | no | 2 to 5 terms, one scale |
| Related queries | yes | no | top and rising, per term |
| Interest by region | subregion, city, metro through a URL | inside one country | country, region, US metro, city, with shares in a comparison |
| Search type (web, images, news, YouTube, Shopping) | not an input | no | yes |
| Batch | list, Google Sheet, URLs | one keyword per run | up to 2,000 queries, URLs, duplicates dropped |
| Trending now | no | yes, up to 1,000 items in one row per run | yes, the whole list, one row per search |
| Time per query | not published (reviews: minutes) | not published | a one-query run: median 12 s, worst 183 s in our 33-input pass; 100 queries in 74 to 159 s |

Where we lose: the leader has years of runs behind it and Google Sheet input; data_xplorer's success rate is measured over 46,009 runs, ours over 110 of our own. Related topics, which the leader lists, are not available to a logged-out visitor (see the limits).

### How much does it cost to scrape Google Trends?

Pay per event, no subscription, platform usage included:

| Event | Price |
|---|---|
| Explore query with data (status `ok` or `partial`), every section included | **$1.50 per 1,000 queries** ($0.0015 per query) |
| Trending now row | **$0.02 per 1,000 Trending now rows** ($0.00002 per row) |
| Run start | **$0.003 per run** (Apify's start event, one per GB of memory; the Actor runs at 256 MB) |

Examples:

- **One keyword**: $0.0045 ($0.003 to start, $0.0015 for the query).
- **The prefilled run** (two terms and a comparison): $0.0075.
- **1,000 keywords in one run**: $1.503.
- **The full Trending now list of the United States** (467 searches on 2026-10-13): about $0.012.
- A query with no data, a failed query, a duplicate or anything past your spending limit is never charged.
- **Apify's free plan** includes $5 of monthly usage ([apify.com/pricing](https://apify.com/pricing)), enough for about **3,300 queries** a month in batches.

Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached.

### Use the Actor through the Apify API

Run it and get the rows in one HTTP call (replace `YOUR_APIFY_TOKEN`, from **Settings > API & Integrations** in Apify Console):

```bash
curl -X POST "https://api.apify.com/v2/acts/agenttoolworks~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["matcha"], "geo": "US", "timeRange": "today 5-y"}'
```

To get the flat table of one view instead of the nested rows, read the run's dataset with `view=timeline` (or `regions`, `related`, `trending`): `https://api.apify.com/v2/datasets/DATASET_ID/items?view=timeline&format=csv`.

Node.js, with the official [`apify-client`](https://docs.apify.com/api/client/js/):

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('agenttoolworks/google-trends-scraper').call({
    comparisons: ['iphone, samsung galaxy, pixel'],
    geo: 'US',
    timeRange: 'today 12-m',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const row of items) console.log(row.query, row.status, row.averages);
```

Python, with the official [`apify-client`](https://docs.apify.com/api/client/python/):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("agenttoolworks/google-trends-scraper").call(
    run_input={"mode": "trendingNow", "trendingGeos": ["US", "GB"], "trendingHours": "24"}
)
for trend in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(trend["geo"], trend["trend"], trend["searchVolumeLabel"], trend["startedAt"])
```

The **API** tab on this page has ready-made snippets for every language and endpoint.

### FAQ

#### Is there an official Google Trends API?

Google announced its own Trends API as an alpha with access by application (developers.google.com/search/apis/trends). This Actor needs no application: it reads the same requests the public Google Trends page makes, logged out, and returns them as JSON rows.

#### Do I need a Google account or an API key?

No. No account, no API key, no cookie from a signed-in browser. The only cookie is the one Google gives any visitor on a first page view.

#### Why are the values between 0 and 100?

That is what Google Trends publishes: interest relative to the highest point of the chart (or the region with the most interest), not a count of searches. Terms compared in one row share the same scale; terms read in separate rows do not.

#### Can I compare more than five terms?

Google compares up to five terms on one scale. For more, put a common reference term in each comparison (`coffee, tea, matcha, cold brew, espresso`, then `coffee, chai, ...`) and scale with it.

#### How fast is it?

Measured on Apify: a one-query run took 12 s in the median and 183 s at worst (a five-term comparison under Google's rate limit); 100 queries took 74 to 159 s, 200 queries 329 to 516 s; a full Trending now list takes a few seconds. Google's rate limit decides most of it: the same three queries took 6 s or 126 s nineteen minutes apart.

#### Can I schedule it, or use it with Make, Zapier, n8n or Google Sheets?

Yes, through Apify's scheduler and integrations: save your input as a task, schedule it, and send the dataset wherever you need it, or fire a webhook when a run finishes.

#### Can AI agents use it through MCP?

Yes. Apify's hosted MCP server exposes Store Actors to MCP clients such as Claude or Cursor: `https://mcp.apify.com?tools=agenttoolworks/google-trends-scraper`.

#### Is it legal to scrape Google Trends?

The Actor reads public, aggregated and anonymized search interest that Google Trends shows any visitor, without logging in, on endpoints Google's robots.txt does not disallow (it disallows only the explore page itself, which the Actor never requests). No personal data is read. How you use the data is your responsibility.

#### Something is missing or broken?

Open an issue in the **Issues** tab: we read every one.

### Other Actors by AgentToolWorks

- [Shopify & WooCommerce Scraper and Price Tracker](https://apify.com/agenttoolworks/shopify-woocommerce-scraper): every product of any Shopify or WooCommerce store, with variants, barcodes and stock, plus price and stock change tracking.
- [Facebook Ad Library Scraper](https://apify.com/agenttoolworks/ad-library-scraper): ads from the Meta, Google and Microsoft ad libraries in one table.
- [LinkedIn Jobs and Indeed Scraper](https://apify.com/agenttoolworks/linkedin-indeed-jobs-scraper): public job listings of both boards in one row format.
- [Job Scraper for Greenhouse, Lever, Ashby & Workable (JobsRadar)](https://apify.com/agenttoolworks/jobsradar-multi-board-job-search): open roles from the public boards of seven applicant tracking systems, deduplicated into one list.
- [Google Maps Scraper](https://apify.com/agenttoolworks/google-maps-places-scraper): every place inside a city's real boundary, with phone, website, rating, review count, opening hours and emails.

### Learn more

- [What this Google Trends scraper returns, and how it compares](https://agenttoolworks.com/scrapers/google-trends-scraper)
- [How to scrape Google Trends: the explore widgets, the Trending now request, the 429 wall, and what we measured](https://agenttoolworks.com/blog/how-to-scrape-google-trends)

Built by [AgentToolWorks](https://agenttoolworks.com). Not affiliated with Google.

# Actor input Schema

## `mode` (type: `string`):

Explore: interest over time, by region and related queries for your search terms and comparisons (one row per term or comparison). Trending now: the full list of searches trending in a country (one row per trending search).

## `searchTerms` (type: `array`):

One term per line, each read on its own (one row each). A Google Trends topic ID such as /m/02vqfm works too. Up to 2,000 queries per run.

## `comparisons` (type: `array`):

2 to 5 terms separated by commas per line, compared on one 0-100 scale as on the Google Trends page (one row per line).

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

Explore page URLs (https://trends.google.com/trends/explore?q=...). Each keeps its own terms, geo, date, category and property; settings it does not carry come from the fields below.

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

Empty for worldwide, a country code (US, FR), a region (US-CA) or a US metro (US-CA-807).

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

As on the Google Trends page. Google picks the bucket: minutes for 1 and 4 hours, hours for 1 and 7 days, days up to 3 months, weeks for 12 months and 5 years, months since 2004.

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

"YYYY-MM-DD YYYY-MM-DD" (e.g. 2024-01-01 2024-12-31), from 2004-01-01. Overrides Time range.

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

Google Trends category ID, 0 for all categories (e.g. 71 Food & Drink, 5 Computers & Electronics, 7 Finance). The ID is the cat= parameter of a Google Trends URL.

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

Which Google search the interest is measured on.

## `sections` (type: `array`):

Each section is part of the same row and the same price. Related topics: Google shows logged-out visitors an empty related-topics panel for most queries, so it is off by default; when Google sends topics, they are returned.

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

Empty lets Google choose (countries worldwide, regions inside a country). Metro areas (DMA) exist for the US only.

## `includeLowVolumeRegions` (type: `boolean`):

Google's own checkbox: also list regions with little search volume.

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

Language of Google's labels (dates, region and topic names), e.g. en-US, fr, de.

## `timezoneOffsetMinutes` (type: `integer`):

Offset from UTC for hourly and daily buckets: 0 is UTC, 60 is UTC+1, -300 is UTC-5.

## `trendingGeos` (type: `array`):

Trending now mode. Country codes (US, GB, FR) or regions (US-CA), one list each.

## `trendingHours` (type: `string`):

Trending now mode. As the page's filter.

## `trendingCategories` (type: `array`):

Trending now mode. Keep only these categories; empty keeps all.

## `trendingActiveOnly` (type: `boolean`):

Trending now mode. Keep only searches still trending (the page's "Active" filter).

## `maxTrendingPerGeo` (type: `integer`):

Trending now mode. 0 returns the whole list (446 searches for the US over 24 hours on 2026-10-05). Rows come in Google's own order.

## `proxy` (type: `string`):

Auto: Apify datacenter IPs, one per parallel session; when Google rate-limits them twice in a row, the session moves to residential IPs for a while. Google rate-limits single IPs quickly, so No proxy is slow and suited to a few queries.

## Actor input object example

```json
{
  "mode": "explore",
  "searchTerms": [
    "coffee",
    "matcha",
    "/m/02vqfm"
  ],
  "comparisons": [
    "coffee, tea",
    "iphone, samsung galaxy, pixel"
  ],
  "geo": "US",
  "timeRange": "today 12-m",
  "category": 0,
  "property": "web",
  "sections": [
    "interestOverTime",
    "interestByRegion",
    "relatedQueries"
  ],
  "regionResolution": "",
  "includeLowVolumeRegions": false,
  "language": "en-US",
  "timezoneOffsetMinutes": 0,
  "trendingGeos": [
    "US",
    "GB",
    "FR"
  ],
  "trendingHours": "24",
  "trendingCategories": [],
  "trendingActiveOnly": false,
  "maxTrendingPerGeo": 0,
  "proxy": "auto"
}
```

# Actor output Schema

## `queries` (type: `string`):

No description

## `timeline` (type: `string`):

No description

## `regions` (type: `string`):

No description

## `related` (type: `string`):

No description

## `trending` (type: `string`):

No description

## `summary` (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 = {
    "searchTerms": [
        "coffee",
        "matcha"
    ],
    "comparisons": [
        "coffee, tea"
    ],
    "geo": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("agenttoolworks/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 = {
    "searchTerms": [
        "coffee",
        "matcha",
    ],
    "comparisons": ["coffee, tea"],
    "geo": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("agenttoolworks/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 '{
  "searchTerms": [
    "coffee",
    "matcha"
  ],
  "comparisons": [
    "coffee, tea"
  ],
  "geo": "US"
}' |
apify call agenttoolworks/google-trends-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agenttoolworks/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/ECOBdMncLdH8SGjot/builds/3l05V0mfGPc36omiP/openapi.json
