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

Get Google Trends data for any keyword: interest over time, interest by region (country, state, metro, city) and top and rising related queries, for any country, time range, category or Google property; compare up to 5 keywords. Plus Trending Now. $2 per 1,000 keywords; no-data terms are free.

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

## Pricing

from $2.00 / 1,000 keywords

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

### What does Google Trends Scraper do?

**Google Trends Scraper** gets the data behind [Google Trends](https://trends.google.com/) for any keyword: **interest over time**, **interest by region** (country, state, metro area or city) and **top and rising related queries**, for any country or region, time range, category and Google property (Web, Image, News, YouTube search and Google Shopping). Compare up to 5 keywords on one shared scale, and get the current **Trending Now** searches of any country with their traffic and news articles.

Use it as a **Google Trends API**: run it from the Apify API, a schedule, Make, Zapier, n8n or an AI agent, and get clean JSON instead of the CSV downloads of the Trends website. It works over plain HTTP, with no browser. No login, account or cookies needed from you.

### Why use it?

- **Keyword and content research**: see which keywords are growing before you write, film or launch, and which related queries are rising ("Breakout" means growth above 5,000%).
- **SEO and marketing planning**: find seasonal peaks (`peakDate`) and the regions where a product is searched most (`topRegion`).
- **Product and market research**: compare brands, products or competitors on the same 0-100 scale with **Compare terms**.
- **Trend monitoring**: schedule a daily run on your keywords and on **Trending Now** for the countries you care about.
- **Data for AI agents and dashboards**: every result has summary fields (latest, peak and average interest, top region, top related query) plus the full timeline.

### What data can it extract?

| Field | Description |
|---|---|
| `searchTerm`, `geo`, `timeRange`, `category`, `property` | What was measured |
| `timeline` | Interest over time: `date`, `formattedTime`, `value` (0-100), `isPartial` |
| `latestValue`, `peakValue`, `peakDate`, `averageValue` | Summary of the timeline |
| `regions` | Interest by region: `geoCode`, `geoName`, `value` (0-100), plus `lat`/`lng` at city level |
| `topRegion` | The region with the highest interest |
| `relatedQueries.top`, `relatedQueries.rising` | Up to 25 top and 25 rising queries: `query`, `value`, `formattedValue` (such as +250% or Breakout) |
| `comparedWith` | The other terms of a comparison |
| `trendsUrl` | Link to the same chart on trends.google.com |
| Trending Now: `title`, `approxTraffic`, `pubDate`, `newsItems` | Current trending searches of a country with approximate traffic and news articles |

### How to scrape Google Trends

1. Open the Actor and add one or more **search terms**.
2. Set the **geo** (US, GB, DE, US-CA, or empty for worldwide) and the **time range** (past hour to 2004 - present, or a custom range).
3. Optionally pick a **category**, a **Google property** (YouTube, News, Image search, Google Shopping) and the **region resolution** (country, region, metro or city).
4. Turn on **Compare terms** to put up to 5 terms on one shared scale.
5. Optionally add **Trending Now countries**.
6. Click **Start** and download the results as JSON, CSV or Excel, or read them through the API.

### How much does it cost?

Pay per result, with **no start fee** beyond a tiny $0.00005 per run:

- **$2 per 1,000 keywords** ($0.002 per search term x geo, with all the data types you select).
- **$0.50 per 1,000 Trending Now searches**.

Terms with no data, invalid geo or time range and failed requests are written as error rows and are **free**. Set **Max results** or a maximum cost per run and the Actor stops cleanly when it is reached (Trending Now searches are fetched first and count toward Max results).

### Input

```json
{
    "searchTerms": ["coffee", "matcha"],
    "geo": "US",
    "timeRange": "today 12-m",
    "category": 0,
    "property": "web",
    "compareTerms": false,
    "includeTimeline": true,
    "includeRegions": true,
    "includeRelatedQueries": true,
    "regionResolution": "auto",
    "trendingNowGeos": ["US"],
    "hl": "en-US",
    "maxItems": 0
}
```

### Output

One result per search term and geo (shortened):

```json
{
    "type": "searchTerm",
    "searchTerm": "matcha",
    "comparedWith": null,
    "geo": "US",
    "timeRange": "today 12-m",
    "category": 0,
    "property": "web",
    "latestValue": 64,
    "peakValue": 100,
    "peakDate": "2026-04-12",
    "averageValue": 71,
    "timeline": [
        { "date": "2026-09-27", "formattedTime": "Sep 27 – Oct 3, 2026", "value": 64, "isPartial": false }
    ],
    "regionResolution": "REGION",
    "topRegion": "Hawaii",
    "regions": [
        { "geoCode": "US-HI", "geoName": "Hawaii", "value": 100 }
    ],
    "topRelatedQuery": "matcha latte",
    "relatedQueries": {
        "top": [{ "query": "matcha latte", "value": 100, "formattedValue": "100" }],
        "rising": [{ "query": "how to make iced matcha", "value": 90, "formattedValue": "+90%" }]
    },
    "trendsUrl": "https://trends.google.com/trends/explore?q=matcha&date=today+12-m&geo=US",
    "scrapedAt": "2026-10-10T03:37:26.195Z"
}
```

A Trending Now result:

```json
{
    "type": "trendingNow",
    "geo": "US",
    "rank": 1,
    "title": "utah football",
    "approxTraffic": "1000+",
    "approxTrafficNumber": 1000,
    "pubDate": "2026-10-10T03:20:00.000Z",
    "newsItems": [{ "title": "Saturday's Utah Football Game vs. Kansas Moved to 6 p.m.", "url": "https://utahutes.com/news/...", "source": "University of Utah Athletics" }]
}
```

Download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

### Tips

- Google Trends values are relative: 100 is the peak of the chart, not a search count. Use **Compare terms** when you need terms on the same scale.
- Short time ranges (past hour, past day) give minute or hourly points; 5 years and longer give weekly or monthly points.
- Low-volume terms in small regions often have no data. Those rows are free.
- Several geos at once: separate them with commas (`US, GB, DE`).

### FAQ

#### Is there a Google Trends API?

Google Trends has no generally available public API for this data. This Actor works as one: you send keywords and get JSON back from the Apify API.

#### Does it need a Google account?

No. No login, account or cookies needed from you. It reads the same public data the Trends website shows.

#### Why do some terms return an error row?

Google shows no data when a term has too little search volume for the place and time range, and it rejects unknown geo codes and malformed time ranges. Those rows explain why and cost nothing.

#### How many terms can I run?

Hundreds per run. The Actor runs 4 reports at a time and retries rate-limited requests on new IP addresses; in our tests 36 keyword reports took under a minute and 120 keyword reports about 5 minutes (119 of 120 succeeded; the failed one was a free row), so a few hundred terms take 10-15 minutes. If Google keeps blocking, the rest of the run is written as free error rows.

#### Can I get daily data for a whole year?

Google decides the resolution from the time range: a range of up to about 9 months gives daily points, longer ranges give weekly points. Run several custom ranges if you need daily data for longer periods.

### Disclaimer

This Actor collects publicly available aggregated search interest data from Google Trends. It is not affiliated with or endorsed by Google. Use the data in line with Google's terms and the laws that apply to you.

### More tools from Tenfold Fleet

| Actor | Price |
|---|---|
| [AliExpress Products Scraper - Search, Prices & Sold Count](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | $1.5 per 1,000 (product) |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | $1.5 per 1,000 (product) |
| [ATS Jobs Scraper - Greenhouse, Lever, Ashby & 5 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | $2 per 1,000 (job posting) |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | $5 per 1,000 (video or comment) |
| [Contact Details Scraper - Website Email & Phone Extractor](https://apify.com/tenfoldfleet/company-contact-finder) | $8 per 1,000 (website with contacts) |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | $1 per 1,000 (ad) |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | $2 per 1,000 (article) |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | $5 per 1,000 (keyword with data) |
| [Remote Jobs Aggregator - RemoteOK, WWR, Himalayas & 4 more](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | $1.2 per 1,000 (unique remote job) |
| [SEEK Job Scraper - Australia, NZ, Jobstreet & JobsDB](https://apify.com/tenfoldfleet/seek-job-scraper) | $0.9 per 1,000 (job listing) |
| [SEO Audit Tool - Technical On-Page SEO Checker & Score](https://apify.com/tenfoldfleet/seo-audit-tool) | $20 per 1,000 (page audit) |
| [Shopify Products Scraper - Prices, Variants & Stock](https://apify.com/tenfoldfleet/shopify-products-scraper) | $0.8 per 1,000 (product) |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | $8 per 1,000 (shopify store) |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | $0.4 per 1,000 (url) |
| [Technology Detector - Wappalyzer & BuiltWith Alternative](https://apify.com/tenfoldfleet/tech-stack-detector) | $10 per 1,000 (website) |
| [URL to Markdown - Web Page to LLM-Ready Text for AI Agents](https://apify.com/tenfoldfleet/url-to-markdown) | $1 per 1,000 (page) |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | $1.5 per 1,000 (job posting) |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | $0.6 per 1,000 (comment) |
| [YouTube Shorts Scraper - Views, Likes & Hashtags by Channel](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | $2 per 1,000 (short) |
| [YouTube Transcript Scraper - Captions & Subtitles API](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | $3 per 1,000 (transcript) |

# Actor input Schema

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

Keywords to look up on Google Trends. Each term x geo is one result with its interest over time, interest by region and related queries.

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

Where to measure interest: a 2-letter country code (US, GB, DE, IN) or a region code (US-CA, GB-ENG). Leave empty for worldwide. Several codes separated by commas give one result per term per geo.

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

Google Trends time range: now 1-H (past hour), now 4-H, now 1-d (past day), now 7-d (past 7 days), today 1-m (past 30 days), today 3-m (past 90 days), today 12-m (past 12 months), today 5-y (past 5 years), all (2004 to now), or a custom range such as "2024-01-01 2024-12-31".

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

Google Trends category id, 0 for all categories. Examples: 7 Finance, 71 Food & Drink, 18 Shopping, 45 Health, 20 Sports, 5 Computers & Electronics, 47 Autos & Vehicles, 67 Travel.

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

Which Google search to measure: Web search, Image search, News search, YouTube search or Google Shopping.

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

Put the terms on one shared 0-100 scale, as when you compare terms on trends.google.com. Google compares at most 5 terms at once; longer lists are compared in groups of 5. Off: each term gets its own 0-100 scale.

## `includeTimeline` (type: `boolean`):

Timeline of interest (0-100) for the time range, with the latest, peak and average value.

## `includeRegions` (type: `boolean`):

Interest (0-100) per country, state, metro area or city, highest first.

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

Top related queries (up to 25) and rising related queries (with growth such as +250% or Breakout).

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

Level of the interest-by-region breakdown. Auto: countries for worldwide, regions or states inside a country. Metro areas (DMA) exist for the US only.

## `trendingNowGeos` (type: `array`):

Optional. Country codes (US, GB, IN, DE, JP, BR ...) whose current Trending Now searches you want: each trending search comes with its approximate traffic, start time and news articles. Google lists about 10 per country.

## `hl` (type: `string`):

Interface language for region names and related queries, such as en-US, de, fr, es or ja.

## `maxItems` (type: `integer`):

Stop after this many charged results (keyword results plus trending searches; Trending Now is fetched first). 0 = no limit.

## Actor input object example

```json
{
  "searchTerms": [
    "coffee",
    "matcha"
  ],
  "geo": "US",
  "timeRange": "today 12-m",
  "category": 0,
  "property": "web",
  "compareTerms": false,
  "includeTimeline": true,
  "includeRegions": true,
  "includeRelatedQueries": true,
  "regionResolution": "auto",
  "hl": "en-US",
  "maxItems": 0
}
```

# Actor output Schema

## `results` (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"
    ],
    "geo": "US"
};

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

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

```

## MCP server setup

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