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

Reliable Google Trends API alternative: interest over time, interest by region, related queries and topics for any keyword, country and time range, plus what is trending now. Automatic retries on Google rate limits.

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

## Pricing

from $1.80 / 1,000 keyword or trends

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

A **reliable Google Trends API alternative**. Get **interest over time, interest by region and related queries (top & rising)** for any keyword, country and time range — plus **what is trending on Google right now** in any country. No API key, no login.

Built for reliability: Google Trends aggressively rate-limits automated requests (HTTP 429). This Actor paces its requests and automatically retries with a fresh session and a new proxy IP, so your runs finish instead of failing.

### What you can do with it

- **Keyword research & SEO:** find rising searches and compare keyword popularity.
- **Market & product research:** see where and when demand grows, country by country.
- **Content planning:** spot breakout topics before your competitors.
- **Investing & analytics:** use search interest as a signal (e.g. crypto, stocks, brands).
- **AI agents & apps:** give your agent real search-trend data through the Apify API or MCP.

### What data do you get?

One result per search term:

| Field | Description |
|---|---|
| `keyword`, `geo`, `timeRange` | What was analyzed |
| `averageInterest`, `peakInterest`, `peakDate`, `latestInterest` | Quick summary of the trend (0-100 scale) |
| `interestOverTime` | Full time series: `date`, `value` (0-100), `isPartial` |
| `interestByRegion` | Countries, regions or cities with their interest value |
| `relatedQueries` | `top` and `rising` related searches (`formattedValue` like `+250%` or `Breakout`) |
| `comparedWith` | Other terms in the same comparison (if comparison mode is on) |
| `trendsUrl` | Link to the same view on Google Trends |

#### Trending now (what people search for right now)

Add **Trending now countries** to also get the full **Trending now** list of Google Trends — the same list as on trends.google.com/trending, often **200–600 trends per country**, not just the top 10 of the RSS feed. One result per trend:

| Field | Description |
|---|---|
| `title`, `rank`, `geo` | The trending search, its position in Google's list and the country |
| `searchVolume`, `approxTraffic` | Search volume as a number (`1000000`) and as Google shows it (`1M+`) |
| `increasePercent` | How much searches grew (`1000` = +1,000%) |
| `startedAt`, `endedAt`, `isActive` | When the trend started and whether it is still trending |
| `categories` | Sports, Entertainment, Politics, Business and Finance, Technology, Climate… |
| `trendBreakdown` | Related searches that make up the trend |
| `news` | Up to 3 news articles: `title`, `url`, `source`, `publishedAt`, `picture` |

Filter by **time window** (past 4 h, 24 h, 48 h, 7 days), **category**, **minimum search volume** and **active trends only**, and sort by relevance, search volume or newest.

```json
{
  "type": "trendingNow",
  "geo": "GB",
  "rank": 51,
  "title": "croatia vs england",
  "searchVolume": 1000000,
  "approxTraffic": "1M+",
  "increasePercent": 1000,
  "isActive": false,
  "startedAt": "2026-10-03T14:30:00Z",
  "endedAt": "2026-10-04T14:20:00Z",
  "categories": ["Sports"],
  "trendBreakdown": ["croatia vs england", "england vs croatia", "england v croatia"],
  "news": [{
    "title": "UEFA Nations League Matchday 3 highlights, round-up: Harry Kane inspires England, Yamal sparks Spain",
    "url": "https://www.uefa.com/uefanationsleague/news/02aa-21b9c92be12f-a190457ae8e6-1000--uefa-nations-league-matchday-3-highlights-round-up-harry-/",
    "source": "UEFA.com",
    "publishedAt": "2026-10-03T23:40:35Z"
  }],
  "trendsUrl": "https://trends.google.com/trends/explore?q=croatia%20vs%20england&geo=GB&date=now%207-d"
}
```

#### Example keyword result (shortened)

```json
{
  "type": "keyword",
  "keyword": "bitcoin",
  "geo": "Worldwide",
  "timeRange": "today 3-m",
  "averageInterest": 39.8,
  "peakInterest": 100,
  "peakDate": "2026-09-21",
  "latestInterest": 29,
  "interestOverTime": [{ "date": "2026-07-06", "value": 34, "isPartial": false }],
  "interestByRegion": [{ "geoCode": "CH", "geoName": "Switzerland", "value": 100 }],
  "relatedQueries": {
    "top": [{ "query": "bitcoin price", "value": 100, "formattedValue": "100" }],
    "rising": [{ "query": "how to buy bitcoin safely", "value": 200, "formattedValue": "+200%" }]
  },
  "trendsUrl": "https://trends.google.com/trends/explore?date=today%203-m&q=bitcoin&hl=en"
}
```

### How to use

1. Enter one or more **search terms**.
2. Choose a **country/region** (or leave empty for worldwide) and a **time range** — from the past hour to 2004–present, or custom dates.
3. Optionally switch on **Compare terms on one chart** to compare up to 5 terms at a time, pick the search type (web, images, news, Google Shopping, YouTube), or add **Trending now countries**.
4. Click **Start** and export as JSON, CSV, Excel, or via API.

### Separate vs. compared terms

- **Separate (default):** each term gets its own 0-100 scale, exactly like searching it alone on Google Trends.
- **Compared:** terms are put on one chart (groups of up to 5), so you can see which one is searched more. In this mode, `interestByRegion` values show each term's **share** of searches among the compared terms in that region.

### Pricing

Pay per result: **$1.80 per 1,000 results (one result = one search term or one trending-now item)**, plus a tiny start fee of $0.00005 per run. Platform usage (compute and proxies) is included — you are not charged anything else.

| Example | Cost |
|---|---|
| 50 keywords | $0.10 |
| 1,000 keywords | $1.80 |
| top 50 trending searches in 10 countries | $0.90 |

Set a maximum cost for a run and the Actor stops when it is reached.

### Tips

- Values are **relative** (0-100), not absolute search counts — that is how Google Trends works.
- For rare terms Google may return no related queries or region data; the fields are then empty and `hasData` tells you whether Google had enough data.
- Google Trends currently does not provide "related topics" data, so this Actor focuses on related queries.
- Running hundreds of terms? Select the **RESIDENTIAL** proxy group for the fewest rate limits.
- Schedule the Actor (e.g. daily) in Apify Console to track trends over time.
- For a daily trend report, use **Trending now** with *Past 24 hours*, sort by **Search volume** and send the results to Slack or Google Sheets.

### FAQ

**Is this an official Google API?** No. It collects the publicly available data shown on Google Trends, without logging in. Please use the data responsibly and in line with applicable laws.

**Why do values differ slightly between runs?** Google Trends computes values from a sample of searches, so small variations are normal — also on the Google Trends website.

**Missing a feature?** Open an issue on the Issues tab — feedback is welcome.

### More scrapers by dataspace

- [Google News Scraper](https://apify.com/dataspace/google-news-scraper) — news articles for any keyword or topic
- [YouTube Scraper](https://apify.com/dataspace/youtube-video-channel-scraper) — videos, channels and search results
- [Google Ads Transparency Scraper](https://apify.com/dataspace/google-ads-transparency-scraper) — ads that any company runs on Google

**Like it?** If this Actor saves you time, please leave a review on the Reviews tab — it helps others find it. Found a problem? Open an issue and it will be fixed quickly.

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google LLC. Google and Google Trends are trademarks of their respective owners and are mentioned only to describe the publicly available data source. It collects only publicly available, aggregated and anonymized search-interest data shown on Google Trends — without logging in and without collecting personal data. You are responsible for making sure that your use of the data complies with applicable laws (including copyright and data protection laws such as GDPR) and with the terms of the source website.

# Actor input Schema

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

Keywords or phrases to analyze on Google Trends, e.g. <code>bitcoin</code>, <code>electric cars</code>. Each term is one result.

## `compareKeywords` (type: `boolean`):

Off: every term is analyzed separately on its own 0-100 scale. On: terms are compared in groups of up to 5 (like typing them together into Google Trends), so values are relative to each other.

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

Leave empty for worldwide. Use a 2-letter country code (<code>US</code>, <code>GB</code>, <code>DE</code>, <code>TR</code>) or a region code (<code>US-CA</code>, <code>GB-ENG</code>).

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

Period to analyze. Pick 'Custom' to set exact dates below.

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

Only used when Time range is 'Custom'. Format: <code>2024-01-01 2024-12-31</code>.

## `searchProperty` (type: `string`):

Which Google search to analyze.

## `includeInterestOverTime` (type: `boolean`):

Time series of search interest (0-100) with average, peak and latest value.

## `includeInterestByRegion` (type: `boolean`):

Where the term is most popular: countries, or regions/cities inside the selected country.

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

Level of detail for interest by region. 'Auto' = countries for worldwide, regions for a country.

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

Top and rising searches related to the term (rising ones show % growth or 'Breakout').

## `trendingNowCountries` (type: `array`):

Optional. 2-letter country codes (e.g. <code>US</code>, <code>GB</code>, <code>TR</code>) to also get the <b>Trending now</b> list of Google Trends for those countries — the same list as on trends.google.com/trending: search volume, % increase, start time, category, related searches and news. Each trend is one result.

## `trendingNowHours` (type: `string`):

Trends that started in the last 4 hours, 24 hours, 48 hours or 7 days.

## `trendingNowSortBy` (type: `string`):

Order of the trends; the max-trends limit is applied after sorting.

## `maxTrendsPerCountry` (type: `integer`):

How many trends per country (after filters and sorting). 0 = all — often 200–600 per country.

## `trendingNowCategories` (type: `array`):

Keep only trends in these categories. Empty = all categories.

## `trendingNowMinVolume` (type: `integer`):

Skip smaller trends, e.g. <code>10000</code> keeps only 10K+ searches.

## `trendingNowActiveOnly` (type: `boolean`):

Skip trends that Google marks as no longer trending.

## `includeTrendNews` (type: `boolean`):

Up to 3 news articles for each trend (title, URL, source, time, image).

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

Google Trends category ID to narrow results (0 = all categories). Example: 7 = Finance, 71 = Food & Drink.

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

Language of related queries (e.g. en-US, de, fr, tr).

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

Proxies are used automatically when Google rate-limits a request. If you run many terms and see repeated blocks, select the RESIDENTIAL proxy group.

## Actor input object example

```json
{
  "searchTerms": [
    "bitcoin",
    "ethereum"
  ],
  "compareKeywords": false,
  "geo": "",
  "timeRange": "today 12-m",
  "searchProperty": "",
  "includeInterestOverTime": true,
  "includeInterestByRegion": true,
  "regionResolution": "auto",
  "includeRelatedQueries": true,
  "trendingNowHours": "24",
  "trendingNowSortBy": "relevance",
  "maxTrendsPerCountry": 50,
  "trendingNowActiveOnly": false,
  "includeTrendNews": true,
  "category": 0,
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per search term: interest over time, average/peak/latest interest, interest by region and related queries.

## `trendingNow` (type: `string`):

What is trending on Google right now in the selected countries, with approximate search volume and news.

## `allFields` (type: `string`):

Every result with all fields, including full time series and region lists.

# 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",
        "ethereum"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspace/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",
        "ethereum",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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