# Google Trends Scraper: Interest, Regions, Queries & Trending (`stratumics/google-trends-scraper`) Actor

Get Google Trends data as JSON, CSV or Excel: interest over time, interest by region and city, related queries, and trending searches by country. Compare any number of terms. No login.

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

## Pricing

from $0.25 / 1,000 trend 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

### What does Google Trends Scraper do?

**Google Trends Scraper** gets [Google Trends](https://trends.google.com) data as clean JSON, CSV or Excel: **interest over time**, **interest by region** (country, state, metro area or city), **related queries** (top and rising) and the **trending searches** of the day by country. Use it as a **Google Trends API** for any search term, location, time range, category and search type (web, images, news, YouTube or Google Shopping), with no Google account and no API key.

It reads the same numbers trends.google.com shows a visitor in a browser, over plain HTTP, so a typical run with a few terms finishes in seconds.

### Why use this Google Trends scraper?

- **Built to finish.** Google Trends rate-limits scrapers quickly. This Actor paces its requests, keeps Google's cookies per connection, and when Google slows it down it moves to fresh Apify Proxy datacenter IPs, then to residential IPs if Google refuses those too, and backs off with jitter instead of failing. In our test runs every request group completed and 97.7% of requests went through on the first try.
- **Compare any number of terms on one scale.** Google compares at most 5 terms at once. With more, the Actor repeats your first term in every group of 5 as an anchor and adds a `commonScaleValue` to each point, so 20 brands end up on one 0 to 100 scale.
- **Region tables down to cities and US metro areas**, highest first, with coordinates for cities.
- **Trending searches by country** (past 4, 24 or 48 hours or 7 days) with search volume, growth, start time, category, the related queries Google groups under each trend and, optionally, news articles.
- **Spreadsheet-ready.** Each result is one tidy item, and the **Timeline rows** and **Region rows** views give you one row per date or region for Excel, Google Sheets or BI tools.
- **Paste Google Trends URLs.** Copy an explore link from your browser and the Actor runs exactly that view.
- **Pay only for data.** Terms Google has no data for are not charged.

Typical uses: SEO and content planning, seasonality analysis, brand and competitor tracking, market research, product demand checks, newsroom trend alerts and data feeds for dashboards and AI agents. On Apify you can schedule runs, call the Actor through the API, and send results to Google Sheets, Slack or your database.

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

| Field | Description |
| --- | --- |
| `type` | `interestOverTime`, `interestByRegion`, `relatedQueries`, `relatedTopics` or `trendingSearch` |
| `searchTerm` | The term (or the trending search) |
| `comparedWith` | The other terms in the same comparison |
| `geo`, `timeRange`, `category`, `property` | Your filters, echoed back (`geo` is null for worldwide) |
| `timeline` | Interest over time: `date` (ISO 8601, UTC), `value` (0 to 100), `isPartial`, `hasData` |
| `averageValue` | Average interest over the period, for compared terms |
| `regions` | Interest by region: `geoCode`, `geoName`, `value`, plus `latitude` and `longitude` for cities |
| `top`, `rising` | Related queries: `query`, `value`, `formattedValue` (such as `+250%` or `Breakout`), `link` |
| `searchVolume`, `increasePercent` | Trending searches: approximate searches (`200K+`) and growth |
| `startedAt`, `isActive`, `categories` | Trending searches: when the trend started, whether it is still active, its categories |
| `trendBreakdown`, `newsArticles` | Trending searches: related queries and up to 3 news articles |
| `trendsUrl` | The same view on trends.google.com |
| `scrapedAt` | When the data was fetched |

### How to scrape Google Trends

1. Open the Actor and keep **What to scrape** on **Search terms**.
2. Type your **search terms**, one per line, or paste **Google Trends URLs**.
3. Pick the **location** (worldwide, a country, a region such as US-CA, or a US metro area), the **time range** (from the past hour to everything since 2004, or custom dates), and optionally a **category** and **search type**.
4. Tick what to fetch: **interest over time**, **interest by region**, **related queries**.
5. Tick **Compare terms on one scale** if the terms should share one chart.
6. Click **Start**. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

For trending searches, set **What to scrape** to **Trending now**, list the countries (US, GB, IN...) and choose the time window.

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

The Actor uses pay per event pricing, so you pay for results, not for server time:

- **Trend result: $1.00 per 1,000 results.** One result is one term's timeline, or its region table, or its related queries list.
- **Trending search: $0.80 per 1,000 trending searches**, news articles included.

Example: **1,000 search terms with interest over time cost about $1.00.** The same terms with interest by region and related queries as well are 3,000 results, about $3.00. Pulling the top 100 trending searches in 5 countries costs about $0.40. Each run also has a start fee of $0.005 (half a cent). Apify's free plan includes $5 of monthly credit, enough for about 5,000 results a month. You can set a maximum cost per run in the run options; the Actor stops cleanly when it reaches it, and results Google has no data for are free.

Paid Apify plans pay less automatically: trend results cost $0.40 per 1,000 on Starter, $0.30 on Scale and $0.25 on Business, and trending searches $0.50, $0.40 and $0.25.

### Input

See the Input tab for every option. A typical input:

```json
{
    "searchTerms": ["sourdough", "matcha", "pickleball"],
    "geo": "GB",
    "timeRange": "today 12-m",
    "interestOverTime": true,
    "interestByRegion": true,
    "relatedQueries": true
}
```

Time ranges use Google's own codes: `now 1-H` (past hour), `now 4-H`, `now 1-d`, `now 7-d`, `today 1-m` (30 days), `today 3-m` (90 days), `today 12-m`, `today 5-y` and `all` (since 2004), or `custom` with `startDate` and `endDate`. Google sets the step between points from the length: 1 minute for up to 4 hours, 8 minutes for a day, 1 hour for 7 days, 1 day up to about 9 months, 1 week up to 5 years, 1 month beyond.

Trending searches:

```json
{
    "mode": "trending",
    "trendingGeos": ["US", "GB", "IN"],
    "trendingHours": "24",
    "maxTrendingSearches": 100,
    "trendingIncludeNews": true
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Real results for `sourdough` in the United Kingdom, shortened (the timeline has 54 weekly points, the region table 4 nations, the related lists 25 and 12 queries):

```json
[
    {
        "type": "interestOverTime",
        "searchTerm": "sourdough",
        "comparedWith": [],
        "anchorTerm": null,
        "geo": "GB",
        "timeRange": "today 12-m",
        "category": 0,
        "categoryName": null,
        "property": "web",
        "trendsUrl": "https://trends.google.com/trends/explore?date=today%2012-m&geo=GB&q=sourdough&hl=en-US",
        "scrapedAt": "2026-10-18T01:47:12.435Z",
        "timelineResolution": "WEEK",
        "averageValue": null,
        "timeline": [
            { "date": "2025-10-12T00:00:00.000Z", "value": 70, "hasData": true, "isPartial": false },
            { "date": "2025-10-19T00:00:00.000Z", "value": 70, "hasData": true, "isPartial": false },
            { "date": "2026-10-18T00:00:00.000Z", "value": 40, "hasData": true, "isPartial": true }
        ]
    },
    {
        "type": "interestByRegion",
        "searchTerm": "sourdough",
        "geo": "GB",
        "timeRange": "today 12-m",
        "regionResolution": "region",
        "regions": [
            { "geoCode": "GB-ENG", "geoName": "England", "value": 100, "latitude": null, "longitude": null },
            { "geoCode": "GB-SCT", "geoName": "Scotland", "value": 95, "latitude": null, "longitude": null }
        ]
    },
    {
        "type": "relatedQueries",
        "searchTerm": "sourdough",
        "geo": "GB",
        "timeRange": "today 12-m",
        "top": [
            { "rank": 1, "query": "sourdough bread", "value": 100, "formattedValue": "100", "link": "https://trends.google.com/trends/explore?q=sourdough+bread&date=today+12-m&geo=GB" },
            { "rank": 2, "query": "sourdough starter", "value": 57, "formattedValue": "57", "link": "https://trends.google.com/trends/explore?q=sourdough+starter&date=today+12-m&geo=GB" }
        ],
        "rising": [
            { "rank": 1, "query": "how to bake sourdough bread", "value": 1250, "formattedValue": "+1,250%", "link": "https://trends.google.com/trends/explore?q=how+to+bake+sourdough+bread&date=today+12-m&geo=GB" }
        ]
    }
]
```

A trending search (United States, past 24 hours, shortened):

```json
{
    "type": "trendingSearch",
    "searchTerm": "penn state vs michigan",
    "geo": "US",
    "trendingHours": 24,
    "rank": 4,
    "searchVolume": 200000,
    "formattedSearchVolume": "200K+",
    "increasePercent": 1000,
    "startedAt": "2026-10-17T13:10:00.000Z",
    "endedAt": null,
    "isActive": true,
    "categories": ["Sports"],
    "trendBreakdown": ["penn state vs michigan", "michigan vs penn state"],
    "newsArticles": [
        {
            "title": "Tommy Carr provides spark, helps Michigan capture first Big Ten win",
            "url": "https://www.detroitnews.com/story/sports/college/university-michigan/2026/10/17/tommy-carr-provides-second-half-spark-in-michigans-win-over-penn-state/92302760007/",
            "source": "The Detroit News",
            "publishedAt": "2026-10-17T23:41:00.000Z",
            "imageUrl": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTatvJYe9rEHIgRZiBIZxj9h637zsLgCqt8uLHDM_4yoDGtjZRmT1ApxKiWPpU"
        }
    ],
    "trendsUrl": "https://trends.google.com/trends/explore?date=now%201-d&geo=US&q=penn%20state%20vs%20michigan&hl=en-US",
    "scrapedAt": "2026-10-18T01:47:21.773Z"
}
```

For a flat table, open the **Timeline rows** or **Region rows** view in the Output tab, or choose it under View when you export. Through the API, add `view=timeline` to the dataset items URL.

### How to compare more than five search terms

Google Trends scales every chart so its highest point is 100, and compares at most 5 terms at a time, so two separate charts cannot be compared directly. Turn on **Compare terms on one scale** and list up to 1,000 terms. The first term becomes the **anchor**: it is added to every group of 4 other terms. Because the anchor appears in every group, the Actor can move each group onto one scale and saves every point's `commonScaleValue` (0 to 100 across all terms, two decimals), next to Google's own `value` for that group. Put a term of medium popularity first: an anchor that is tiny next to the others carries little detail, and a group where the anchor shows no interest at all cannot be placed (its common values stay empty and the log says so).

### Tips for scraping Google Trends

- **Monitor trends on a schedule.** Run daily or hourly from the Schedules page; each run is charged only for the results it saves.
- **Match a chart you see in the browser** by pasting its URL into Google Trends URLs. Values are relative and Google refreshes its numbers about once an hour, so a rerun can differ from an earlier run by a point.
- **Use topics for ambiguous words.** A Google topic id such as `/m/02vqfm` (Coffee, the beverage) counts all searches about the topic, in every language.
- **Leave the proxy setting on.** The Actor connects directly while Google allows it and switches to Apify Proxy only when needed, at no extra charge to you.
- **Related topics:** Google now shows related topics only to signed-in visitors, so this list usually comes back empty for every tool that does not log in. Empty results are not charged.

### Integrations and API

- **API:** start runs and read results with the [Apify API](https://docs.apify.com/api/v2), for example `POST https://api.apify.com/v2/acts/stratumics~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN` with the input as the JSON body.
- **JavaScript and Python:** use the official `apify-client` packages: `client.actor('stratumics/google-trends-scraper').call(input)`, then read `client.dataset(run.defaultDatasetId).listItems()`.
- **No-code:** connect the Actor to Zapier, Make, n8n, Google Sheets, Slack or webhooks from the Integrations tab.
- **AI agents:** add the Apify MCP server (`https://mcp.apify.com?tools=stratumics/google-trends-scraper`) to any assistant that supports the Model Context Protocol, and it can look up Google Trends data on its own.

### FAQ

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

No. The Actor reads the public Google Trends website the way a logged-out visitor's browser does.

#### What do the numbers mean?

Google Trends does not publish search counts. Each value is search interest relative to the highest point in the chart for the chosen location and time: 100 is the peak, 50 is half as popular, and 0 means too little data. Region values work the same way across regions. Trending searches come with Google's approximate volume, such as 200K+.

#### Why do some terms have no region data or no related queries?

Google shows a region or a related query only above a minimum search volume, so rare terms, small places and short time ranges often have none. The Actor skips those results and does not charge for them; the run's status message lists them.

#### How fresh is the data?

Interest over time runs up to the current hour for short ranges; the last point is flagged `isPartial` while its period is still running. Trending searches are what Google lists at the moment of the run.

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

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Google Trends data is aggregated and anonymous. The only names that can appear are those of public figures in trending searches and news headlines.

#### Where do I report a problem?

Open an issue on the Issues tab with your run link and we will look at it. For programmatic access, see the API tab.

### Other tools from Stratum ICS

- [App Store Reviews Scraper](https://apify.com/stratumics/app-store-reviews-scraper): Get Apple App Store reviews with star ratings, titles, text, app versions, helpful votes and developer replies, well past Apple's 500-review limit, for any country, plus app ratings.
- [Google Maps Scraper](https://apify.com/stratumics/google-maps-scraper): Get the businesses on Google Maps for any search and area: name, address, phone, website, rating, review count, opening hours, plus emails and social profiles.
- [Google News Scraper](https://apify.com/stratumics/google-news-scraper): Get Google News articles with real publisher URLs (not Google redirects), source, date, image, author and optional full text.
- [Google Play Reviews Scraper](https://apify.com/stratumics/google-play-reviews-scraper): Get Google Play reviews with star ratings, text, app versions, thumbs-up counts, developer replies and feature ratings in any language, plus app details with installs and star histogram.
- [LinkedIn Jobs Scraper](https://apify.com/stratumics/linkedin-jobs-scraper): Scrape LinkedIn jobs with full descriptions, salary ranges, seniority, job type and applicant counts.
- [Telegram Channel Scraper](https://apify.com/stratumics/telegram-channel-scraper): Get messages from public Telegram channels with views, dates, media, reactions, polls and forwards, plus channel info with exact subscriber counts.
- [Website Contact Scraper](https://apify.com/stratumics/website-contact-scraper): Turn a list of websites into one row per company with verified emails, formatted phone numbers, social profiles (LinkedIn, Facebook, Instagram, X), address and contact page.
- [YouTube Scraper](https://apify.com/stratumics/youtube-scraper): Get YouTube videos from searches, channels, playlists and links with exact views, likes, comment counts, dates and tags, plus channel profiles and comments.

# Actor input Schema

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

Search terms: interest over time, interest by region and related queries for the terms you enter. Trending now: the searches trending today in one or more countries (set them in the Trending now section).

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

Words or phrases to look up, one per line, written as you would type them on Google Trends. A Google topic id such as /m/02vqfm (the topic "Coffee") also works. Up to 1,000 terms per run.

## `compareTerms` (type: `boolean`):

Off: each term is looked up on its own and gets its own 0 to 100 scale (100 is that term's peak). On: terms are compared in one chart like on Google Trends, so the numbers show which term is searched more. Google compares up to 5 terms at once; with more terms, the first term is added to every group of 4 as an anchor and every point also gets a commonScaleValue that puts all terms on one scale.

## `trendsUrls` (type: `array`):

Optional. Paste explore URLs copied from trends.google.com, for example https://trends.google.com/trends/explore?date=today%205-y\&geo=US\&q=coffee,tea. Each URL runs as its own comparison with the location, time range, category and property written in it; the filters below do not apply to it.

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

Leave empty for worldwide data. Pick a country, or type a region code such as US-CA (California), GB-SCT (Scotland) or IN-MH (Maharashtra), or a US metro code such as US-NY-501 (New York).

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

The period to cover. Google picks the step between points from its length: 1 minute for the past hour or 4 hours, 8 minutes for the past day, 1 hour for 7 days, 1 day for 30 or 90 days, 1 week for 12 months and 5 years, 1 month since 2004. Choose Custom to set your own dates below.

## `startDate` (type: `string`):

First day of a custom time range (YYYY-MM-DD, from 2004-01-01). Used only when Time range is Custom.

## `endDate` (type: `string`):

Last day of a custom time range (YYYY-MM-DD). Leave empty for today. Ranges up to about 9 months give daily points; longer ones give weekly or monthly points.

## `category` (type: `string`):

Narrow the search to one category, for example Food & Drink for "apple" the fruit rather than the company. Pick a top-level category or type any Google Trends category id.

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

Which Google search to measure: web search (the default on Google Trends), image search, news search, YouTube search or Google Shopping.

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

The timeline: a 0 to 100 value for every point in the time range, with partial (still running) points flagged.

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

Where the term is searched most: one 0 to 100 value per country, region, metro area or city.

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

Level of detail for interest by region. Automatic uses Google's default (countries for worldwide, regions for a country). Country works only worldwide and metro areas only in the US.

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

Also list regions with little search volume, like the checkbox on Google Trends.

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

What people also searched for: the top related queries and the rising ones (fastest growing, "Breakout" above +5,000%), up to 25 of each.

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

Top and rising related topics. Google currently shows related topics only to signed-in visitors, so this list usually comes back empty; empty results are not charged.

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

Used when What to scrape is Trending now. Two-letter country codes, one per line, for example US, GB, IN. Region codes such as US-CA work too.

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

Time window for trending searches.

## `trendingCategory` (type: `string`):

Only trending searches in this category.

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

Skip searches that have stopped trending.

## `trendingIncludeNews` (type: `boolean`):

Add up to 3 news articles Google links to each trending search (title, URL, source, date, image). No extra charge.

## `maxTrendingSearches` (type: `integer`):

Stop after this many trending searches for each country, in Google's order. 0 means all of them (the US often has 500 or more in 24 hours).

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

With Apify Proxy on (the default), the Actor starts with a direct connection, which is fastest, moves requests to Apify Proxy datacenter IPs as soon as Google rate-limits it or the run is large, and to residential IPs (at no extra charge to you) when Google refuses the datacenter ones too. Turn it off to never use a proxy, or pick proxy groups or your own proxy URLs to send every request through them.

## Actor input object example

```json
{
  "mode": "explore",
  "searchTerms": [
    "coffee"
  ],
  "compareTerms": false,
  "trendsUrls": [],
  "geo": "",
  "timeRange": "today 12-m",
  "category": "0",
  "property": "web",
  "interestOverTime": true,
  "interestByRegion": false,
  "regionResolution": "auto",
  "includeLowVolumeRegions": false,
  "relatedQueries": false,
  "relatedTopics": false,
  "trendingGeos": [
    "US"
  ],
  "trendingHours": "24",
  "trendingCategory": "all",
  "trendingActiveOnly": false,
  "trendingIncludeNews": false,
  "maxTrendingSearches": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Dataset with every result of the run.

## `timelineRows` (type: `string`):

Interest over time as one row per date, ready for spreadsheets.

# 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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("stratumics/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"] }

# Run the Actor and wait for it to finish
run = client.actor("stratumics/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"
  ]
}' |
apify call stratumics/google-trends-scraper --silent --output-dataset

```

## MCP server setup

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