# Google Trends Scraper & API - Interest, Regions & Queries (`surefeed/google-trends-scraper`) Actor

Scrape Google Trends for any keyword: interest over time, interest by region and related queries (cleaned of fake entries), plus the full Trending now list of any country. Compare up to 5 terms. Verified against the browser, agent-ready.

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

## Pricing

from $2.70 / 1,000 search terms

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 & API - Interest, Regions & Queries

Get **Google Trends data** for any keyword: interest over time, interest by region and related queries — plus the full **Trending now** list of any country — as a spreadsheet, JSON or a live API, with numbers that match what people in that country see on Google Trends.

> ⭐ **Found this Actor useful?** [Leave a review](https://apify.com/surefeed/google-trends-scraper/reviews) — it takes 30 seconds and helps other people find it.
>
> 🛠️ **Something not working?** [Open an issue](https://apify.com/surefeed/google-trends-scraper/issues) with the run link and we'll fix it within 24–48 hours.

**What you get for each search term**

- 📈 **Interest over time** (0–100), its average and the peak date — for any period from the past hour to 2004
- 🗺️ **Interest by region**: countries, states/regions, cities or US metro areas
- 🔎 **Related queries**, top and rising (with growth like +250% or Breakout), **cleaned of the unrelated entries Google slips into automated requests**
- 🔥 **Trending now** in any country, past 4 / 24 / 48 hours or 7 days: the **full list** (hundreds of trends), each with estimated search volume, growth, start time, categories and related queries — filter by 19 categories
- 🆚 **Compare up to 5 terms** on the same scale, or simply **paste a Google Trends link**

**Quick start:** click **Start** without changing anything to analyse "bitcoin" worldwide over the past 12 months (about $0.004). Then type your own terms, location and period. No login, cookies or Google account needed — you pay only per search term.

Real results — "chatgpt, gemini, claude" compared in the United States, past 90 days (October 2026):

| Search term | Average interest | Peak | Top related queries |
|---|---|---|---|
| chatgpt | 66 | Sep 3, 2026 | chatgpt ai, chatgpt login, chatgpt free |
| gemini | 26 | Sep 10, 2026 | gemini google, gemini ai, ai |
| claude | 18 | Jul 8, 2026 | claude ai, claude code, what is claude |

#### Why this Google Trends scraper?

| Typical scrapers | This Actor |
|---|---|
| Frequent failed runs (the most used Google Trends scraper fails ~4 runs in 10) | Blocked requests are retried the way Google Trends allows: same session first, then a fresh one. In our reliability test (35 searches in the US and Italy) **all 35 succeeded** |
| Numbers that don't match what you see on Google Trends | **Verified accuracy**: we compared **272 values by hand against Google Trends in a browser — 272 identical** (timelines and regions, Italy, Oct 2026). Google Trends samples differently per viewer country, so by default we look **from the country you analyse** |
| Related queries polluted with junk | Google sometimes answers automated tools with fake related queries ("running shoes" → "hotel booking, coffee grinder"). We **detect and remove them** and tell you how many were removed |
| "Trending" limited to the top 10 of the RSS feed | The **full Trending now list** — e.g. 476 trends in the US over 24 hours, 1,000+ in Italy over 7 days — **identical to the page** (order and volumes checked in a browser), with 19 category filters |
| Expensive per run | **$4 per 1,000 search terms**, **$1.50 per 1,000 trending searches**, no start fee |

#### Use cases

- **AI agents**: answer "is this topic growing?", "where is it most popular?", "what do people search with it?" with fresh numbers.
- **SEO and content**: find rising queries to write about before they peak.
- **Market research**: compare brands, products or competitors over time and by region.
- **News, trading and content teams**: pull what is trending right now in a country or category (e.g. Sports, Business and Finance) every hour.

#### How to use

1. Enter terms in **Search terms** (one per line; `bitcoin, ethereum` on one line compares them) — or paste Google Trends explore links.
2. Choose **Location** (empty = worldwide), **Time range** and, if you like, **Search type** (web, YouTube, news, images, shopping).
3. Optional: add countries to **Trending now — countries**, choose **Trending in the past** (4 h – 7 days) and, if you like, **Trending categories**.
4. Click **Start** and download the results as JSON, CSV, Excel or via API.

#### Input

```json
{
    "searchTerms": ["chatgpt, gemini, claude", "https://trends.google.com/trends/explore?q=electric%20car&geo=US&date=today%2012-m"],
    "geo": "US",
    "timeRange": "today 3-m",
    "regionResolution": "REGION",
    "trendingCountries": ["US", "GB"],
    "trendingHours": "24",
    "trendingCategories": ["Sports", "Technology"],
    "maxTrendingPerCountry": 50
}
```

#### Output

One item per search term (real example, lists shortened):

```json
{
    "searchTerm": "netflix",
    "comparedWith": [],
    "geo": "US",
    "timeRange": "today 3-m",
    "searchType": "web",
    "averageInterest": 68,
    "peakInterestDate": "2026-09-19",
    "interestOverTime": [
        { "date": "2026-07-08", "formattedTime": "Jul 8, 2026", "value": 67, "isPartial": false },
        { "date": "2026-07-09", "formattedTime": "Jul 9, 2026", "value": 68, "isPartial": false }
    ],
    "interestByRegion": [
        { "geoCode": "US-DC", "name": "District of Columbia", "value": 100 },
        { "geoCode": "US-NJ", "name": "New Jersey", "value": 88 }
    ],
    "relatedQueriesTop": [
        { "query": "netflix movies", "value": 100, "link": "https://trends.google.com/trends/explore?q=netflix+movies&date=today+3-m&geo=US" }
    ],
    "relatedQueriesRising": [
        { "query": "pastors wife netflix", "growth": "Breakout", "value": 28550, "link": "https://trends.google.com/trends/explore?q=pastors+wife+netflix&date=today+3-m&geo=US" }
    ],
    "relatedQueriesRemoved": 0,
    "googleTrendsUrl": "https://trends.google.com/trends/explore?q=netflix&hl=en-US&geo=US&date=today+3-m",
    "scrapedAt": "2026-10-08T03:12:50.496Z"
}
```

| Field | Meaning |
|---|---|
| `averageInterest` | Average of the 0–100 timeline over the period (100 = the peak of the most searched term in the comparison) |
| `interestOverTime` | One point per hour, day or week (Google picks the step from the period); `isPartial` = the last, still incomplete point |
| `interestByRegion` | Regions sorted from most to least interested, 0–100 relative to the top one |
| `relatedQueriesTop` | Most searched queries together with the term (0–100) |
| `relatedQueriesRising` | Queries growing fastest; `growth` as shown on Google Trends (e.g. "+250%", "Breakout" = more than +5000%) |
| `relatedQueriesRemoved` | How many unrelated entries were removed from the rising queries (see FAQ) |
| `trendingNowCountry` | Trending searches only: the country, with `rank` and `title` |
| `searchVolume` / `searchVolumeText` | Trending searches: Google's estimated searches in the period (e.g. 200000 / "200K+") |
| `increasePercent` / `active` | Trending searches: growth shown by Google (1000 = "+1000%") and whether the trend is still going |
| `categories` / `relatedQueries` | Trending searches: Google's categories and the other searches grouped in the trend |

#### Trending now

Add country codes to **Trending now — countries** to get the trends of the past 4 hours, 24 hours, 48 hours or 7 days — the same list as Google Trends' "Trending now" page, in the same order. One item per trend (real example, US, October 2026):

```json
{
    "trendingNowCountry": "US",
    "rank": 1,
    "title": "susan dell",
    "searchVolume": 200000,
    "searchVolumeText": "200K+",
    "increasePercent": 1000,
    "startedAt": "2026-10-07T17:10:00.000Z",
    "endedAt": null,
    "active": true,
    "categories": ["Other"],
    "relatedQueries": ["michael dell wife", "dell ceo wife", "dell wife", "who is susan dell"],
    "exploreUrl": "https://trends.google.com/trends/explore?q=susan%20dell&geo=US&date=now%207-d",
    "lastHours": 24
}
```

#### How much does it cost?

**Pay per event** — no monthly rental, no start fee, no proxy or compute surcharge:

- **Search term** — each term analysed (all charts included): **$4.00 per 1,000** (volume discounts on higher Apify plans).
- **Trending search** — each trending search returned: **$1.50 per 1,000**.

Example: comparing 3 terms = 3 search terms ≈ $0.012; the top 50 trends of 5 countries every day ≈ $0.38 a month. Set **Max cost per run** for a hard cap on spending.

#### Automate & integrate

Schedule daily or hourly runs, trigger webhooks, or send results to Google Sheets, Slack, Make, Zapier or n8n. Call it from any language through the Apify API.

#### Use with AI assistants (MCP)

Add this Actor as a tool to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server (`https://mcp.apify.com`). Your assistant can then check search trends on demand.

#### Agent-ready: autonomous payments (x402 & Skyfire)

AI agents can discover, run and pay for this Actor on their own — no Apify account or API key needed — using x402 (USDC on Base) or Skyfire.

#### FAQ

**How accurate is the data?**
We compared the Actor with Google Trends opened in a browser in Italy (October 2026): 212 of 212 timeline values and 60 of 60 regional values were identical, for single terms and comparisons. Google Trends computes its numbers on a sample that depends on the viewer's country — the same search seen from another country can differ by a few points. That's why **Accuracy mode: Local** (default) looks from the country you analyse; set **Look from country** to see the data as another country does.

**Why are some related queries removed?**
Google sometimes sends automated tools a fake list of related queries ("pizza" → "gardening, hospitals, meditation") or mixes unrelated entries into a real one. With **Clean up related queries** on (default) the Actor asks again when a whole list is fake, drops rising queries that share no word with your term, and reports the number in `relatedQueriesRemoved`. Top related queries are left untouched: in our checks they matched the browser. Turn the option off to get Google's raw lists.

**Where are the related topics?**
Google currently returns an empty related-topics list to automated requests, so the Actor doesn't offer it rather than return empty data.

**Can I paste a Google Trends link?**
Yes: paste an explore link (trends.google.com/trends/explore?q=…) as a line in **Search terms**. Its terms, location, period, category and search type are used for that line.

**How accurate is "Trending now"?**
We opened Google Trends' "Trending now" page for Italy (past 24 hours) right after a run: the first 10 trends and their search volumes were identical and in the same order. Categories are filtered by the Actor using the categories Google assigns to each trend.

**Why are the values 0–100 and not search volumes?**
That's how Google Trends works: values are relative to the highest point in the chart (100). Compare terms on one line to put them on the same scale.

**Is it legal to scrape Google Trends?**
This Actor only collects publicly available, aggregated data. Check Google's terms and your local laws before using the data.

**Something is broken — what now?**
Open an issue on the **Issues** tab with the run link. We usually fix problems within 24–48 hours.

#### More tools from us

- [Kleinanzeigen Scraper & API](https://apify.com/surefeed/kleinanzeigen-scraper) — every listing for any search on Kleinanzeigen.de, past the 1,250 limit, with price drops and only-new monitoring.
- [Google Hotels Scraper & API](https://apify.com/surefeed/google-hotels-scraper) — hotel prices with taxes, every booking site's offer, and hotels near any address.
- [Google Flights Scraper & API](https://apify.com/surefeed/google-flights-scraper) — fares, stops, layovers and CO2 emissions for any route, flexible dates.
- [Google Play Scraper & API](https://apify.com/surefeed/google-play-scraper) — Android app data, star histograms and reviews.
- [App Store Scraper & API](https://apify.com/surefeed/app-store-scraper) — iPhone app data, top charts and reviews by country.
- [Workday Jobs Scraper & API](https://apify.com/surefeed/workday-jobs-scraper) — every job from any Workday careers site, with exact posting date, salary range and remote status.
- [Eventbrite Scraper & API](https://apify.com/surefeed/eventbrite-scraper) — every event in any city or online, with ticket prices, sold out and organizer details.

#### Legal

**Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC. It only collects publicly available data. All trademarks belong to their respective owners.

# Actor input Schema

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

One search per line. To compare up to 5 terms on the same 0–100 scale (like on Google Trends), put them on one line separated by commas, e.g. "bitcoin, ethereum". You can also paste a Google Trends explore link: its terms, location, period and category are used. Each term is one result.

## `trendingCountries` (type: `array`):

Trending searches right now for each country, with estimated search volume, growth, start time, categories and related queries. Two-letter country codes, e.g. US, GB, IT, DE.

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

Time window for trending searches.

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

Optional: keep only trends in these categories. Empty = all.

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

Skip trends that have already ended.

## `maxTrendingPerCountry` (type: `integer`):

Keep at most this many trends per country, in Google's order (the 7-day list can hold 1,000+).

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

Where the searches come from. Empty = worldwide. A country ("US", "IT") or a region ("US-CA", "IT-25"), as in the geo= part of a Google Trends link.

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

Period to analyse. Google picks the granularity: hours for the past day, days up to ~9 months, weeks for longer periods.

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

Optional. Overrides "Time range": two dates, e.g. "2025-01-01 2025-12-31".

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

Which Google search to measure.

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

Optional Google Trends category id to narrow the meaning of a term (0 = all categories). Examples: 7 Finance, 71 Food & Drink, 958 Jobs & Education, 18 Shopping. You can copy the number from cat= in a Google Trends link.

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

The 0–100 popularity timeline, its average and the peak date.

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

Where the term is most popular (countries, or regions inside the chosen country).

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

Level of detail for "Interest by region". Automatic = countries worldwide, regions inside a country.

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

Top and rising searches related to the term (rising ones show growth, e.g. +250% or Breakout).

## `hideUnrelatedQueries` (type: `boolean`):

Google sometimes mixes unrelated entries into the related queries it sends to automated tools (e.g. "black friday" rising → "laptop stand"), or replaces a whole list (e.g. "running shoes" → "hotel booking, coffee grinder…"). When on, a list made only of unrelated entries is requested again, rising queries that share no word with your term are dropped, and relatedQueriesRemoved tells how many. Turn off to get Google's raw lists.

## `proxyType` (type: `string`):

Google Trends computes its numbers on a sample that depends on the viewer's country, so the same search can differ by a few points between countries. "Local" looks from a residential IP in the country you analyse (or the US for worldwide), so results match what people there see in their browser. "Datacenter" is slightly cheaper and faster but shows the US sample.

## `proxyCountry` (type: `string`):

Optional. Two-letter country to look from in Local mode, if different from Location (e.g. analyse worldwide data as seen from Italy: IT).

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

Language of region and topic names, e.g. en-US, it, de, fr, es.

## Actor input object example

```json
{
  "searchTerms": [
    "bitcoin"
  ],
  "trendingHours": "24",
  "trendingCategories": [],
  "trendingActiveOnly": false,
  "maxTrendingPerCountry": 100,
  "geo": "",
  "timeRange": "today 12-m",
  "searchType": "",
  "category": 0,
  "interestOverTime": true,
  "interestByRegion": true,
  "regionResolution": "",
  "relatedQueries": true,
  "hideUnrelatedQueries": true,
  "proxyType": "local",
  "language": "en-US"
}
```

# Actor output Schema

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

Items produced by the run.

## `runSummary` (type: `string`):

Duration, charged events and whether the spending limit was reached.

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

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

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

```

## MCP server setup

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