# Google Trends Scraper 📈 Interest, Regions, Related & Trending (`dz_omar/google-trends-scraper`) Actor

📈 Get Google Trends data with the site's own filters: interest over time for up to 5 compared terms, interest by region down to city, top and rising related queries, topic suggestions, and Trending now searches with volume, growth, breakdown and news. Paste Trends URLs or fill the form.

- **URL**: https://apify.com/dz_omar/google-trends-scraper.md
- **Developed by:** [FlowExtract API](https://apify.com/dz_omar) (community)
- **Categories:** SEO tools, AI
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.60 / 1,000 explore searches

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 collects Google Trends data with the **same choices as the Google Trends website**: the Explore page (interest over time, interest by region, related queries) and the Trending now page (what people are searching for right now). Compare up to 5 terms on one chart, narrow to a country, state or metro area, pick any time range from the past hour to 2004–present, filter by Google's full category list and search type, or simply paste a Google Trends URL.

Every period of a comparison comes back as **one row with all terms side by side** — the same layout as the site's own CSV download — plus a **summary row per search** with each term's average, peak, latest value, recent momentum and the leader.

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

| Data | What you get |
|---|---|
| 📈 Interest over time | One row per period (hour, day, week or month) with a 0–100 value for every compared term, the period label, and whether the period is still filling |
| 🗺️ Interest by region | One row per country, subregion, metro or city: each term's share of the comparison **and** each term's own 0–100 interest, city coordinates, the leading term |
| 🔗 Related queries | Top and Rising related searches per term with value, "Breakout" flag, a link to explore them, and a flag for queries that don't mention the term |
| 🧩 Topic suggestions | The topics Google matches each term to (e.g. *Tesla* → automobile make, company or band), with the id to search the topic itself |
| 🧾 Search summary | Average, peak (value and date), latest value, change over the last 4 periods, rising / stable / falling, and the leading term |
| 🔥 Trending now | Every trending search for a location and window: search volume, % increase, start and end time, active or not, categories, the full trend breakdown, and news articles with pictures for the trends Google covers in its news feed |

#### Why use Google Trends Scraper on Apify?

- **Mirrors the site.** Every dropdown uses Google Trends' own options and labels: 250 locations plus subregions and metros, 1,100+ categories, 5 search types, 10 time ranges, 125 Trending now countries and their regions.
- **Comparisons stay comparable.** Terms on one line share one 0–100 scale, exactly like "Add comparison" on the site.
- **Fast.** A 3-term comparison with interest over time, regions and related queries finishes in about 5 seconds.
- **Bulk.** Run hundreds of comparisons and many Trending now locations in one run; each line is independent.
- **Paste any URL.** Set up a view on trends.google.com and paste its address — including views that compare one term across countries or across two date ranges.
- **Analysis-ready.** Search summaries, region rows that combine share and interest, and an off-topic flag on related queries save you a cleaning step.

### How to scrape Google Trends

1. Open the Actor and type your searches in **Search terms** — one comparison per line, terms separated by commas (e.g. `chatgpt, gemini, claude`).
2. Pick a **Location** (and optionally a **Subregion or metro**), a **Time range**, a **Category** and a **Search type**, like on the Explore page.
3. Choose **What to collect**.
4. For trending searches, pick one or more **Trending locations**, a window, a category and the sort order.
5. Or skip the form and paste **Google Trends URLs**.
6. Click **Start** and download the dataset as JSON, CSV, Excel or HTML, or read it over the API.

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

You pay per result delivered: one price per Explore search (however many charts and rows it returns) and one per Trending now search. Notices, searches Google has no data for and searches that could not be completed are never charged.

| Event | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|
| Explore search (up to 5 compared terms, every chart you select) | $0.0050 | $0.0042 | $0.0034 | $0.0026 |
| Trending now search | $0.0006 | $0.00048 | $0.00036 | $0.00024 |

- A **5-term comparison** with interest over time, regions, related queries and the summary is one Explore search: **$0.005**, or **$0.0026** on GOLD — about 190 rows of data.
- **100 comparisons** cost **$0.50** at the highest tier price and **$0.26** on GOLD.
- **1,000 trending searches** cost **$0.60**, or **$0.24** on GOLD. No start fee.
- Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached.

### Input and output examples

#### Input

Compare three AI assistants in the US over 12 months and get today's trends in the US and the UK:

```json
{
  "searchTerms": ["chatgpt, gemini, claude"],
  "location": "US",
  "timeRange": "past12Months",
  "dataTypes": ["interestOverTime", "interestByRegion", "relatedQueries"],
  "trendingLocations": ["US", "GB"],
  "trendingTimeRange": "past24Hours",
  "maxTrendsPerLocation": 50
}
```

A metro area and a custom date range, with city-level breakdown:

```json
{
  "searchTerms": ["pizza, burger"],
  "location": "US",
  "subregion": "New York NY",
  "timeRange": "custom",
  "customStartDate": "2025-01-01",
  "customEndDate": "2025-06-30",
  "regionResolution": "city"
}
```

Paste URLs instead (each keeps its own settings):

```json
{
  "startUrls": [
    { "url": "https://trends.google.com/trends/explore?q=coffee,coffee&geo=US,GB&date=today%203-m" },
    { "url": "https://trends.google.com/trending?geo=JP&hours=168&category=17&sort=search-volume" }
  ]
}
```

#### Output

Every row has a `type`. The dataset views (Interest over time, Interest by region, Related queries, Search summaries, Trending now, Notices) show the columns that matter for each.

#### Interest over time record

```json
{
  "type": "interest_over_time",
  "search_id": "s1",
  "search_terms": ["chatgpt", "gemini", "claude"],
  "location": "US",
  "location_name": "United States",
  "time_range": "Past 12 months",
  "category_name": "All categories",
  "search_type": "Web Search",
  "date": "2026-11-08",
  "date_label": "Nov 8 - 14, 2026",
  "is_partial": true,
  "resolution": "WEEK",
  "values": { "chatgpt": 83, "gemini": 38, "claude": 27 },
  "source_url": "https://trends.google.com/trends/explore?q=chatgpt%2Cgemini%2Cclaude&geo=US&date=today%2012-m"
}
```

#### Search summary record

```json
{
  "type": "search_summary",
  "search_terms": ["chatgpt", "gemini", "claude"],
  "average_interest": { "chatgpt": 79, "gemini": 30, "claude": 21 },
  "latest": { "chatgpt": { "value": 82, "date": "2026-11-01" }, "gemini": { "value": 33, "date": "2026-11-01" }, "claude": { "value": 25, "date": "2026-11-01" } },
  "recent_change_pct": { "chatgpt": 8.6, "gemini": -1.4, "claude": 14 },
  "trend_direction": { "chatgpt": "stable", "gemini": "stable", "claude": "rising" },
  "leader": "chatgpt"
}
```

#### Interest by region record

```json
{
  "type": "interest_by_region",
  "region_code": "US-CA",
  "region_name": "California",
  "resolution": "REGION",
  "values": { "chatgpt": 55, "gemini": 25, "claude": 20 },
  "value_kind": "share_of_comparison",
  "top_term": "chatgpt",
  "interest": { "chatgpt": 100, "gemini": 100, "claude": 90 }
}
```

`values` is each term's share of the region's searches for the comparison (the site's "Compared breakdown"); `interest` is each term's own 0–100 interest in that region (the site's per-term maps).

#### Related query record

```json
{
  "type": "related_query",
  "search_term": "bitcoin",
  "rank_type": "rising",
  "rank": 2,
  "query": "how to buy bitcoin safely",
  "value": 7650,
  "formatted_value": "Breakout",
  "is_breakout": true,
  "mentions_search_term": true,
  "explore_url": "https://trends.google.com/trends/explore?q=how+to+buy+bitcoin+safely&date=today+12-m&geo=US"
}
```

#### Trending search record

```json
{
  "type": "trending_search",
  "rank": 1,
  "title": "microsoft outage",
  "location": "US",
  "location_name": "United States",
  "time_range": "Past 24 hours",
  "search_volume": 10000000,
  "search_volume_label": "10M+",
  "increase_pct": 1000,
  "started_at": "2026-11-12T17:50:00Z",
  "ended_at": null,
  "is_active": true,
  "duration_hours": 20.7,
  "categories": ["Technology"],
  "trend_breakdown": ["microsoft outage", "outlook outage", "is outlook still down", "..."],
  "trend_breakdown_count": 518,
  "news_articles": [],
  "explore_url": "https://trends.google.com/trends/explore?q=microsoft%20outage&geo=US&date=now%201-d"
}
```

### Other Actors you might need

- [YouTube Shorts Trend Finder](https://apify.com/dz_omar/youtube-shorts-trend-finder?fpr=smcx63) — find trending YouTube Shorts by keyword.
- [Bing Copilot AI Mode Scraper](https://apify.com/dz_omar/bing-copilot-ai-mode-scraper?fpr=smcx63) — collect AI answers and their sources for your keywords.

### Frequently asked questions

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

Google Trends data is public and aggregated — it contains no personal data. As with any data source, check that your use complies with Google's terms and the laws that apply to you.

#### Do I need a Google account?

No. Nothing to log in to, no API key.

#### Why are the numbers 0–100 and not search counts?

That is how Google Trends reports interest: 100 is the peak for the request, everything else is relative to it. Terms compared on one line share one scale, so you can compare them; values from different lines or runs are on different scales. Trending now rows do carry Google's approximate search volume (e.g. 10M+).

#### Why don't I get related topics?

Google Trends only shows related topics to signed-in visitors. Use **Topic suggestions** to see which topics Google matches your terms to, and search a topic by putting its id (e.g. `/m/02vqfm`) in Search terms.

#### Some Rising related queries look unrelated to my term. Why?

Google sometimes adds generic searches to Rising lists (for example "gardening ideas" under *coffee*). Each related query carries `mentions_search_term`; filter on `true` to keep only queries that contain your term's words. Related brands (like *openai* for *chatgpt*) are `false` too, so review before dropping.

#### Why do only some trending searches have news articles?

Google publishes news articles and pictures for about 10 of the freshest trends per location. Every other trend still has its volume, growth, timing, categories and full breakdown.

#### Can I use Google Trends Scraper in Make, Zapier, n8n or my own code?

Yes. Use the Apify integrations, or call the Actor over the Apify API from any language and read the dataset when it finishes. Schedules let you build your own trend history.

#### What happens if a run is interrupted?

The run remembers which searches and locations it already delivered and continues with the rest, so nothing is delivered twice. A run close to its time limit stops itself, keeps everything delivered so far and leaves a notice.

#### Why did my run return fewer results than I asked for?

| Situation | What you see | What to do |
|---|---|---|
| Google has too little data for a term, location or period | A notice row "not enough data" | Try a broader location, a longer time range or Web Search |
| Google did not answer for one search after several attempts | A notice row for that search; the rest of the run is complete | Run that search again later |
| A line has more than 5 terms, or an unknown subregion or URL | A notice row explaining what to change | Fix the line and run again |
| Few trends match your Trending now filters | A notice row | Widen the window, pick All categories, or turn off "Show active trends only" |

### Support

- 🌐 **Website:** [flowextractapi.com](https://flowextractapi.com)
- 📧 **Email:** <flowextractapi@outlook.com>
- 💬 **GitHub:** [FlowExtractAPI](https://github.com/FlowExtractAPI)
- 💼 **LinkedIn:** [flowextract-api](https://www.linkedin.com/in/flowextract-api/)
- 🐦 **X (Twitter):** [@FlowExtractAPI](https://x.com/FlowExtractAPI)
- 📱 **Facebook:** [flowextractapi](https://www.facebook.com/flowextractapi)
- 🎵 **TikTok:** [@flowextractapi](https://www.tiktok.com/@flowextractapi)

### Legal & compliance

- **Public data only** — processes publicly available, aggregated data.
- **Rate limiting** — respects source-service limits and terms of use.
- **Data protection** — no storage of personal information or unauthorized data collection.
- **Commercial use** — suitable for business intelligence and research.
- No affiliation with or endorsement by Google is implied.

***

*Google Trends Scraper — by FlowExtract API. Turn any website into structured data.*

# Changelog

This Actor's version history is a separate document: https://apify.com/dz_omar/google-trends-scraper/changelog.md

# Actor input Schema

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

One line = one Explore search. Compare up to 5 terms on one line by separating them with commas, e.g. <code>chatgpt, gemini, claude</code>. A topic id from Topic suggestions (e.g. <code>/m/02vqfm</code>) searches the topic instead of the words.

## `location` (type: `string`):

Where the searches were made. Worldwide, or one country.

## `subregion` (type: `string`):

Narrow the Location to a state/region or a metro area, as the site's location picker does. Type the name or the code: <code>California</code>, <code>US-CA</code>, <code>New York NY</code> or <code>US-NY-501</code>. Leave empty for the whole country.

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

The period to measure, with the site's own options. Pick <b>Custom time range</b> to use the two dates below.

## `customStartDate` (type: `string`):

First day of the custom range. Google Trends data starts on 2004-01-01.

## `customEndDate` (type: `string`):

Last day of the custom range (today at the latest).

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

Restrict to searches in one category, from Google's full category tree. Start typing to find one, e.g. <i>Coffee</i> or <i>Real Estate</i>.

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

Which Google search to measure.

## `dataTypes` (type: `array`):

The Explore page's charts to save. Every search also gets one summary row (averages, peak, latest value, momentum, leader) when interest over time is collected.

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

Level of the Interest by region breakdown, like the site's Subregion / Metro / City switch. <b>Automatic</b> uses the site's default for the location. Levels the site does not offer for a location (e.g. Metro outside the US) fall back to Automatic.

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

Also list regions with too little search volume to score (the site's checkbox of the same name). Their values are null.

## `trendingLocations` (type: `array`):

Countries, or a country's subregion, with the site's own location list.

## `trendingTimeRange` (type: `string`):

Trends that started in this window.

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

Only trends in this category.

## `activeTrendsOnly` (type: `boolean`):

Only trends that are still rising (the site's 'Active' badge).

## `trendingSortBy` (type: `string`):

Order of the trends, as on the site. Relevance = significant and recent trends.

## `maxTrendsPerLocation` (type: `integer`):

Stop after this many trends per location (after sorting). 0 = every trend listed.

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

Explore pages (<code>…/trends/explore?q=coffee,tea\&geo=US</code>) and Trending now pages (<code>…/trending?geo=GB\&hours=168</code>). Explore URLs may compare one term across locations or time ranges, e.g. <code>geo=US,GB</code>.

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

Language of Google's labels (dates, region names) and of related searches. It does not change where the searches were made.

## Actor input object example

```json
{
  "searchTerms": [
    "chatgpt, gemini, claude"
  ],
  "location": "US",
  "timeRange": "past12Months",
  "category": "0",
  "searchType": "web",
  "dataTypes": [
    "interestOverTime",
    "interestByRegion",
    "relatedQueries"
  ],
  "regionResolution": "auto",
  "includeLowVolumeRegions": false,
  "trendingTimeRange": "past24Hours",
  "trendingCategory": "all",
  "activeTrendsOnly": false,
  "trendingSortBy": "relevance",
  "maxTrendsPerLocation": 100,
  "language": "en-US"
}
```

# Actor output Schema

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

Every delivered row.

# 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": [
        "chatgpt, gemini, claude"
    ],
    "location": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dz_omar/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": ["chatgpt, gemini, claude"],
    "location": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("dz_omar/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": [
    "chatgpt, gemini, claude"
  ],
  "location": "US"
}' |
apify call dz_omar/google-trends-scraper --silent --output-dataset

```

## MCP server setup

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