# Google Trends Scraper | Regions, Rising Queries, $1.50/1K (`aurelix/google-trends-scraper`) Actor

Scrape Google Trends with runs that finish: unlike Apify's own Trends scraper (56.5% run success in 30 days), blocked keyword groups are retried and reported, at $1.50 per 1,000 results, half its $3.00. Trends URLs or any number of keywords: interest over time, by region, rising queries.

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

## Pricing

from $0.90 / 1,000 trends 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 is Google Trends Scraper?

**Google Trends for hundreds of keywords in one run (interest over time, by region, rising Breakout queries) for $1.50 per 1,000 results, no login, with runs that finish.**

For SEO, content and market researchers. Paste keywords or Google Trends links; every keyword lands on one comparable 0-100 scale, and blocked keyword groups are retried and named, never a crashed run. Your first run with the example input costs about $0.012 (3 results in our test run).

[![Google Trends Scraper: example output from a real run](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/google-trends-scraper-card-v2.png)](https://console.apify.com/actors/Kradf9R2t2wKetQ9Q?addFromActorId=Kradf9R2t2wKetQ9Q)

[![Google Trends Scraper: 75-second demo video](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/google-trends-scraper-demo-thumb-v1.png)](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/google-trends-scraper-demo-v1.mp4)

**[▶ Watch the 75-second demo](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/google-trends-scraper-demo-v1.mp4)**

| | |
|---|---|
| **Search by** | Keywords (any number) or Google Trends explore URLs; location, time range, category, search type |
| **Per keyword** | Interest over time, interest by region, top and rising related queries |
| **Trending** | Google's Trending now searches per country: past 4 hours to 7 days |
| **Output** | One flat record per keyword or trending search; JSON, CSV, Excel, API |
| **Automate** | Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents |
| **Price** | $1.50 per 1,000 results ($0.90 per 1,000 results on paid Apify plans) |
| **Login needed** | No |

### Why Google Trends Scraper users pick this one

- **Runs that finish.** Blocked groups are retried and named (Apify's own: 56.5% run success).
- **One comparable scale.** Every keyword on the same 0-100 axis through a shared anchor keyword.
- **Paste a Trends link.** Location, dates, category and search type are read from it.
- **Half the price of Apify's own.** $1.50 per 1,000 results against $3.00.
- **Trending now, too.** Google's trending searches per country with volume, growth and topics.

### Get started in 3 steps

1. Type your keywords into 'Keywords', one per line (e.g. air fryer), and set the location, e.g. US (empty = worldwide), or paste Google Trends explore links into 'Google Trends URLs'.
2. Optionally pick a time range, category, search type and region level, or add countries under 'Trending searches'.
3. Click Start, then download JSON, CSV or Excel, or schedule it and send results to Google Sheets, Zapier, Make or n8n.

**[▶ Try it with the example input](https://console.apify.com/actors/Kradf9R2t2wKetQ9Q?addFromActorId=Kradf9R2t2wKetQ9Q)**

The form opens with an example input already filled in: that run costs about $0.012 on the free plan.

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

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

| Results | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| 100 | $0.16 | $0.0975 |
| 1,000 | $1.51 | $0.91 |
| 10,000 | $15.01 | $9.01 |

Totals include the $0.0075 start fee per run, rounded to the cent. Apify's free plan includes $5 of credit a month, enough for about 3,300 results (a result is one keyword's full trends record or one trending search).

A result is one keyword's whole record (timeline, regions and related queries together) or one trending search. Keywords Google has no data for are not charged. The run start fee is $0.0075; it covers runs that return nothing.

#### Billing events

| Event | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| `trends-result` | $1.50 per 1,000 results | $0.90 per 1,000 results |
| `apify-actor-start` | $0.0075 per run | $0.0075 per run |

### Google Trends Scraper vs alternatives

| | **This Actor** | apify/google-trends-scraper | data_xplorer/google-trends-fast-scraper |
|---|---|---|---|
| **Price per 1,000 results, free plan** | $1.50 | $3.00 | $2.00 |
| **Price per 1,000 results, paid plans** | $0.90 | $1.00 | $1.00 |
| **Start fee per run** | $0.0075 | $0 | $0.025 |
| **Platform usage billed on top** | No | Yes (4 GB default memory) | No |
| **Google Trends URL input** | ✓ | ✓ | ✗ |
| **Keywords per run** | Any number, one 0-100 scale | List of search terms | 1 |
| **Interest by region** | ✓ country, state, metro, city | ✓ subregion, city | ✓ |
| **Related queries** | ✓ top and rising, Breakout flag | ✓ top and rising | ✓ |
| **Trending searches by country** | ✓ | ✗ | ✓ |
| **YouTube, News, Images, Shopping search** | ✓ | not stated | ✗ |

Prices checked regularly on each Actor's Store page.

### Benchmarks: how we compare

| Test | Input | Result | Run time |
|---|---|---|---|
| First run (prefilled input) | 3 US keywords | 3 results for $0.012 in total | not recorded |
| Default input, 3 runs | 3 US keywords (one run also with 5 US trending searches) | 3 of 3 keywords every time | 43 to 97 s |
| Own scale per keyword | 10 US keywords, one shared scale off | 10 of 10 keywords | 55 s |
| Medium batch | 20 keywords | 20 results, no rate limits hit | 60 s |
| Volume | 300 US keywords, 12 months, timeline, regions and related queries | 300 of 300 keywords, every one with regions and related queries; 33 rate limits all recovered | 739 s |
| No data | one keyword with too little search volume | 0 results, nothing charged but the start fee | 40 s |
| All test runs | 12 test runs before release | 12 of 12 succeeded |  |

Apify cloud runs at the default 256 MB, one run per row, with the automatic datacenter-then-residential proxy. In the 300-keyword run 4.2% of data requests were rate-limited by Google; each was retried with backoff and a fresh session, so no keyword was lost. Run times depend mostly on how hard Google rate-limits at that moment.

### What data you get

**Google Trends Scraper** turns Google Trends into clean rows: for every keyword you get the interest-over-time timeline with average, peak and latest value, interest by country, state, metro area or city, and top and rising related queries with growth such as +250% or Breakout. Type keywords or paste Google Trends explore links (the terms, location, time range, category and search type are read from each link). Give hundreds of keywords at once: they are compared 5 at a time with a shared anchor keyword, so every value sits on one 0-100 scale. Choose any time range, category and search type (web, YouTube, News, Images, Shopping), and add Google's Trending now searches for any country.

- keyword, geo, time_range, category, property, compared_with, anchor_keyword, on_shared_scale
- average_interest, peak_interest, peak_time, latest_interest, top_region, top_related_query, top_rising_query
- interest_over_time: \[{time, value, is_partial}]
- interest_by_region: \[{geo_code, geo_name, value}] (cities add lat and lng), region_resolution
- related_queries_top / related_queries_rising: \[{query, value, growth, is_breakout, link}]; related_topics_top / related_topics_rising
- trending records: trending_query, country, search_volume, increase_percent, started_at, ended_at, is_active, topics, related_searches
- trends_url, source_url, scraped_at in ISO 8601 UTC

| keyword | average_interest | peak_interest | latest_interest | top_region | top_related_query | top_rising_query |
|---|---|---|---|---|---|---|
| air fryer | 64.15 | 100 | 54 | Wyoming | air fryer chicken | laptop stand |
| pickleball | 25.49 | 40 | 17 | Wyoming | pickleball paddle | charlie kirk mentor pickleball |
| solar panels | 8.57 | 24 | 8 | Wyoming | solar panels cost | laptop stand |

One full result record, exactly as a real run returned it (long text and lists shortened here). From a real run:

```json
{
  "record_type": "keyword",
  "keyword": "pickleball",
  "geo": "US",
  "time_range": "today 12-m",
  "category": 0,
  "property": "web",
  "compared_with": [
    "air fryer",
    "solar panels"
  ],
  "anchor_keyword": "air fryer",
  "on_shared_scale": true,
  "average_interest": 25.49,
  "peak_interest": 40,
  "peak_time": "2026-04-12T00:00:00Z",
  "latest_interest": 17,
  "top_related_query": "pickleball paddle",
  "top_rising_query": "charlie kirk mentor pickleball",
  "top_region": "Wyoming",
  "interest_over_time": [
    {
      "time": "2025-11-02T00:00:00Z",
      "value": 22,
      "is_partial": false
    },
    {
      "time": "2025-11-09T00:00:00Z",
      "value": 22,
      "is_partial": false
    },
    {
      "time": "2025-11-16T00:00:00Z",
      "value": 21,
      "is_partial": false
    },
    "... [50 more]"
  ],
  "interest_by_region": [
    {
      "geo_code": "US-WY",
      "geo_name": "Wyoming",
      "value": 100
    },
    {
      "geo_code": "US-UT",
      "geo_name": "Utah",
      "value": 68
    },
    {
      "geo_code": "US-HI",
      "geo_name": "Hawaii",
      "value": 66
    },
    "... [48 more]"
  ],
  "region_resolution": "REGION",
  "related_queries_top": [
    {
      "query": "pickleball paddle",
      "value": 100,
      "link": "https://trends.google.com/trends/explore?q=pickleball+paddle&date=today+12-m&geo=US"
    },
    {
      "query": "pickleball courts",
      "value": 49,
      "link": "https://trends.google.com/trends/explore?q=pickleball+courts&date=today+12-m&geo=US"
    },
    {
      "query": "pickleball near me",
      "value": 37,
      "link": "https://trends.google.com/trends/explore?q=pickleball+near+me&date=today+12-m&geo=US"
    },
    "... [22 more]"
  ],
  "related_queries_rising": [
    {
      "query": "charlie kirk mentor pickleball",
      "value": 3800,
      "growth": "+3,800%",
      "is_breakout": false,
      "link": "https://trends.google.com/trends/explore?q=charlie+kirk+mentor+pickleball&date=today+12-m&geo=US"
    },
    {
      "query": "jeff webb pickleball accident",
      "value": 3500,
      "growth": "+3,500%",
      "is_breakout": false,
      "link": "https://trends.google.com/trends/explore?q=jeff+webb+pickleball+accident&date=today+12-m&geo=US"
    },
    {
      "query": "best pickleball paddles 2026",
      "value": 3150,
      "growth": "+3,150%",
      "is_breakout": false,
      "link": "https://trends.google.com/trends/explore?q=best+pickleball+paddles+2026&date=today+12-m&geo=US"
    },
    "... [22 more]"
  ],
  "related_topics_top": [],
  "related_topics_rising": [],
  "trends_url": "https://trends.google.com/trends/explore?date=today%2012-m&q=pickleball&geo=US",
  "source_url": "https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=%7B%22comparisonItem%22%3A%5B%7B%22keyword%22%3A%22air%20... [321 more characters]",
  "scraped_at": "2026-11-04T19:28:07Z"
}
```

### Use cases

- SEO and content teams ranking hundreds of keyword ideas by real search interest
- E-commerce and product teams spotting seasonal peaks and rising product searches
- Market researchers comparing brands or products across states, metro areas and cities
- Newsrooms and social teams monitoring what is trending now in each country
- Analysts and data scientists feeding search-interest series into dashboards and models

### Use-case recipes

#### Rank product ideas by search demand

For e-commerce sellers and product teams. List the candidate products in `keywords`, with one of middling popularity first, and keep the shared scale on. Sort by `average_interest` to rank demand, and compare `latest_interest` with `average_interest` to see which ideas are rising right now.

```json
{
  "keywords": [
    "air fryer",
    "pickleball",
    "solar panels",
    "heat pump",
    "standing desk"
  ],
  "geo": "US",
  "timeRange": "today 12-m",
  "includeInterestByRegion": false,
  "includeRelatedQueries": false
}
```

#### Choose where to advertise

For marketers planning local campaigns. Give one keyword, a US location and the metro level (`DMA`). `interest_by_region` comes sorted highest first, so its top entries are the metro areas to target first in your ad platform's location settings.

```json
{
  "keywords": [
    "heat pump"
  ],
  "geo": "US",
  "regionResolution": "DMA",
  "includeRelatedQueries": false
}
```

#### Find YouTube video topics that are taking off

For creators. Set `property` to `youtube` and keep related queries on. Filter `related_queries_rising` for `is_breakout` = true, then send `top_rising_query` to Keyword Expander for long-tail titles.

```json
{
  "keywords": [
    "sourdough",
    "matcha"
  ],
  "geo": "US",
  "timeRange": "today 3-m",
  "property": "youtube",
  "includeInterestByRegion": false
}
```

#### Daily trending-searches watch

For newsrooms and social teams. Leave `keywords` empty, add countries to `trendingCountries` and schedule the task daily. Each row has `trending_query`, `search_volume`, `increase_percent` and `is_active`; push it to Google Sheets or Slack through the task's Integrations tab.

```json
{
  "trendingCountries": [
    "US",
    "GB"
  ],
  "trendingTimeWindow": "24",
  "maxTrendingPerCountry": 20
}
```

### Input

| Field | Type | What it does | Default |
|---|---|---|---|
| `keywords` (Keywords) | array | Search terms to look up, one per line, e.g. 'air fryer', 'pickleball'. |  |
| `geo` (Location) | string | Country or sub-region code, e.g. 'US', 'GB', 'US-CA' (California), 'CA-ON' (Ontario). |  |
| `startUrls` (Google Trends URLs) | array | Optional: paste Google Trends explore links, e.g. https://trends.google.com/trends/explore?q=air%20fryer,instant%20pot\&geo=US\&date=today%2012-m. |  |
| `timeRange` (Time range) | string | Period to look at, as on the Google Trends page. | "today 12-m" |
| `category` (Category) | integer | Google Trends category ID to narrow the search, e.g. 0 = all categories, 71 = Food & Drink, 7 =... | 0 |
| `property` (Search type) | string | Which Google search to measure: web search, YouTube, Google News, Google Images or Google Shopping. |  |

All 18 fields, with examples: see the **Input** tab.

### Switching from apify/google-trends-scraper

Already running `apify/google-trends-scraper`? Map its input fields to this Actor's like this:

| `apify/google-trends-scraper` input | This Actor's input | Notes |
|---|---|---|
| `searchTerms` | `keywords` | One keyword per line, any number. By default they are compared on one shared 0-100 scale, 5 per Google comparison with your first keyword as the anchor. |
| `isMultiple` | not needed | Every keyword is its own row. To compare given terms together exactly as Google does, paste an explore link with comma-separated terms into `startUrls`. |
| `startUrls` | `startUrls` | Same idea: explore links; their terms, geo, date, cat and gprop are read from the link, and the link itself is never loaded. |
| `timeRange` | `timeRange` | Preset codes as on the Trends page, e.g. `today 12-m`, `today 5-y`, `now 7-d`. |
| `customTimeRange` | `customTimeRange` | Same format: `YYYY-MM-DD YYYY-MM-DD`; it overrides `timeRange`. |
| `geo` | `geo` | Country or sub-region code such as `US` or `US-CA`; empty = worldwide. Pick the region level with `regionResolution`. |
| `category` | `category` | A numeric Google Trends category ID, e.g. 71 = Food & Drink; 0 = all categories. |
| `spreadsheetId` | no equivalent | Paste the keywords into `keywords`, or pass them through the API. |
| `viewedFrom` | no equivalent | The proxy is chosen for you: datacenter first, residential only if Google keeps answering with rate limits. |
| `maxConcurrency` / `maxRequestRetries` / `pageLoadTimeoutSecs` | not needed | No browser pages are loaded. Up to 3 comparison groups run at once, and each request is tried up to 8 times with backoff. |

- Output is one row per keyword with everything together (timeline, regions, related queries) plus summary columns such as `average_interest`, `peak_interest` and `top_rising_query`.
- With one shared scale on (the default), values are relative to all keywords in the run. Turn `compareKeywords` off to get each keyword on its own 0-100 scale, like a single search on the Trends page.
- Pricing is per result with no platform usage on top: $1.50 per 1,000 on the free plan against $3.00 plus platform usage at 4 GB (comparison table above), plus a $0.0075 start fee per run.
- Keywords are de-duplicated without regard to case, and keywords Google has no data for are not charged.

### Use with AI agents (Apify MCP server, Claude, ChatGPT, n8n AI agent)

Google Trends Scraper is a ready-made tool for AI agents. Through the Apify MCP server an agent reads this Actor's input schema, fills in the input from your request, starts the run and reads the results back. You pay the same per-result price as a run started by hand, from your own Apify account.

#### Example prompts

- "Compare Google Trends interest in the US over the past 12 months for air fryer, pickleball, solar panels and heat pump, and tell me which is growing fastest"
- "Which US metro areas search most for heat pump? Give me the top 10 with their Google Trends values"
- "What is trending on Google right now in the US and the UK? List the top 20 searches per country with their search volume"

#### Claude (claude.ai and Claude Desktop)

Open **Settings > Connectors**, choose **Add custom connector**, paste `https://mcp.apify.com/?tools=aurelix/google-trends-scraper` and sign in to Apify when asked. Then ask Claude one of the prompts above.

#### Claude Code, Cursor, VS Code and other MCP clients

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/google-trends-scraper"
```

Clients configured with JSON take the same URL:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=aurelix/google-trends-scraper"
    }
  }
}
```

A client without Apify sign-in sends the header `Authorization: Bearer <YOUR_APIFY_TOKEN>`; to run the server locally instead, use `npx -y @apify/actors-mcp-server --actors aurelix/google-trends-scraper` with `APIFY_TOKEN` set.

#### ChatGPT

Where your ChatGPT plan offers custom connectors (developer mode), add `https://mcp.apify.com/?tools=aurelix/google-trends-scraper` as a connector, sign in to Apify, and ask for the data in plain words.

#### n8n AI agent

Give an **AI Agent** node an **MCP Client Tool** with the endpoint `https://mcp.apify.com/?tools=aurelix/google-trends-scraper` and a Bearer credential holding your Apify token. The agent can then call Google Trends Scraper whenever a workflow step needs results; for a fixed, non-agent workflow use Apify's n8n node with **Run Actor** instead.

### Use it from AI agents (MCP), the API or no-code

#### Copy this to your AI assistant

```text
Use the Apify Actor aurelix/google-trends-scraper (Google Trends Scraper) through Apify's MCP server or API. Main input: keywords (Keywords); geo (Location). Example input: {"keywords": ["air fryer", "pickleball", "solar panels", "heat pump"], "startUrls": [{"url": "https://trends.google.com/trends/explore?q=air%20fryer,instant%20pot&geo=US&date=today%2012-m&gprop=youtube"}], "geo": "US", "timeRange": "today 12-m", "regionResolution": "REGION", "trendingCountries": ["US"]}. Each result is one result with fields such as record_type, keyword, geo, time_range, category, property, compared_with, anchor_keyword. It costs $1.50 per 1,000 results on Apify's free plan plus a $0.0075 start fee per run, and needs no login.
```

MCP server URL for this Actor: `https://mcp.apify.com/?tools=aurelix/google-trends-scraper` (setup for each client in the section above).

#### API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/google-trends-scraper").call(run_input={"keywords": ["air fryer", "pickleball", "solar panels", "heat pump"], "startUrls": [{"url": "https://trends.google.com/trends/explore?q=air%20fryer,instant%20pot&geo=US&date=today%2012-m&gprop=youtube"}], "geo": "US", "timeRange": "today 12-m", "regionResolution": "REGION", "trendingCountries": ["US"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

1. Fill in the input, then click **Save as a new task**.
2. In the task, click **Schedule** and pick daily or weekly (Apify Schedules).
3. Open the task's **Integrations** tab to send every run's results to Slack, Google Sheets, email or any webhook.

Prefer n8n or Make? Ask in the **Issues** tab and we will share a ready-made workflow for it.

### FAQ

#### Can I scrape Google Trends without login?

Yes. It never logs in, so you need no Google account, password or cookies; only a free Apify account to run it.

#### Is there a Google Trends API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

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

About $1.51 for 1,000 results on Apify's free plan and $0.91 on paid plans, start fee included. The free $5 monthly credit covers about 3,300 results (a result is one keyword's full trends record or one trending search).

#### Can I export Google Trends data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's **Storage** tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

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

It reads only public data any logged-out visitor can see: aggregated Google Trends search-interest data. It goes at a polite pace, never logs in and never solves CAPTCHAs. It returns aggregate, anonymous search statistics; no personal data. To have a record removed, open an issue on this Actor's Issues tab; if Google formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

#### Why do Google Trends scrapers get blocked?

Google rate-limits Trends requests hard. This Actor backs off, opens a fresh session on every rate limit and uses a residential proxy only when needed; keyword groups still blocked are named in the run status.

#### What does one result include?

Everything for one keyword: the interest-over-time timeline, interest by region, top and rising related queries (and related topics when Google returns them), plus summary fields. A trending search is also one result.

#### Can I paste Google Trends links?

Yes. Paste explore links such as https://trends.google.com/trends/explore?q=air%20fryer,instant%20pot\&geo=US\&date=today%2012-m into 'Google Trends URLs'. Each link's terms, location, time range, category and search type are used for that link, and you can mix links with 'Keywords'. A link that is not a Trends explore link, or has an unsupported setting, is skipped and named in the run status; the rest of the run continues.

#### How are values comparable across hundreds of keywords?

Google compares at most 5 keywords at once and scales each comparison to its own peak of 100. The Actor puts your first keyword in every group of 5 and rescales each group so that keyword matches across groups, then sets the overall peak to 100. Choose a first keyword of middling popularity: a very rare one gives coarse values, a very popular one pushes small keywords to 0.

#### Why do my values differ from typing one keyword into Google Trends?

With 'Put all keywords on one scale' on, values are relative to every keyword in the run, not to that keyword alone. Turn it off to get each keyword on its own 0-100 scale, exactly like a single search on the Trends page. Google also samples its data, so repeated runs can differ by a few points.

#### Which locations and region levels work?

Any country code (US, GB, DE) or sub-region code (US-CA, CA-ON), or empty for worldwide. Region level can be country, sub-region, US metro area (DMA) or city. If Google does not offer the level you chose for that location, the Actor uses Google's default level and says so in the run status.

#### What are Breakout queries?

Rising related queries whose searches grew by more than 5,000% in the period. They are marked growth 'Breakout' and is_breakout true.

#### Does it handle Google's rate limits?

Yes. On every 'too many requests' answer it waits with exponential backoff and starts a fresh session; if the datacenter proxy keeps getting limited, the rest of the run moves to Apify's residential proxy. Results already read are kept.

#### What am I charged when a keyword has no data?

Nothing for that keyword. Keywords with too little search volume, comparison groups Google kept refusing, and the anchor keyword repeated in later groups are never charged. A run that returns nothing costs only the $0.0075 start fee, and its status message names the keywords that had no data.

#### What happens when Google blocks the run?

Each request is tried up to 8 times with growing waits and a fresh session. After 6 rate limits in a row on the datacenter proxy, the rest of the run moves to Apify's residential proxy. If 3 comparison groups in a row still end blocked, the run stops, keeps every result already read, and names the keywords it could not read.

#### How long does a big run take?

About 2 to 3 Google requests per keyword at a polite pace, with up to 3 comparison groups running at once. In our test 300 keywords with timelines, regions and related queries took about 12 minutes. If the run nears its timeout, it stops cleanly and keeps the results already read.

#### Are duplicate keywords charged twice?

No. Keywords are de-duplicated without regard to case, so air fryer and Air Fryer are read once. Keywords longer than 100 characters are skipped and named in the run status.

#### Can I get only trending searches?

Yes. Leave Keywords empty and add countries under Trending searches. Each trending search is one result, up to Max trending per country (1 to 1,000, highest first as Google lists them), over the past 4, 24 or 48 hours or 7 days.

#### What do average_interest, peak_interest and latest_interest mean?

They summarise the timeline on the same 0-100 scale as its values: the mean over the period, the highest point (with peak_time), and the last complete point. A point for a period still running is marked is_partial in interest_over_time and is not used as the latest value.

#### Can I schedule it to track the same keywords every week?

Yes. Save the input as a task and add a weekly schedule. Each run reads the full time range again, so compare runs by keyword; Google samples its data, so expect a few points of difference between runs.

### Limits (stated honestly)

- Google Trends values are relative (0-100), not absolute search counts; trending searches give Google's approximate volume such as 200000.
- Related topics: Google currently returns empty topic lists to automated visitors (we tested plain requests and a real browser); the option is kept and costs nothing extra, but expect empty lists.
- Google samples its data, so the same request can differ by a few points between runs; rising related queries vary more, since Google samples them per request and per network.
- Keywords with very low search volume return no data; they are named in the run status and not charged.
- On one shared scale, keywords far smaller than the largest one can round to 0; run them separately or with a smaller first keyword.
- Large runs take time: about 2 to 3 Google requests per keyword at a polite pace; results are saved if the run nears its timeout.
- If Google keeps refusing a comparison group after every retry, its keywords are named in the run status and not charged.
- Google Trends URLs: only explore links are read (not Trending now or Year in Search pages), and their date must be one of the preset ranges or 'YYYY-MM-DD YYYY-MM-DD'.

### Related Aurelix tools

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

#### AI, content and SEO

- **[Website to Markdown Crawler](https://apify.com/aurelix/website-to-markdown)**: Crawls a site and returns one row of clean main-content Markdown per page, with title, headings and links.

#### Jobs and hiring data

- **[Greenhouse Jobs Scraper](https://apify.com/aurelix/greenhouse-jobs-scraper)**: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
- **[LinkedIn Jobs Scraper](https://apify.com/aurelix/linkedin-jobs)**: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.

#### E-commerce and product data

- **[AliExpress Scraper](https://apify.com/aurelix/aliexpress-product-search)**: AliExpress search results by keyword: price, discount, rating, units sold, ship-from country and sponsored flag.
- **[Amazon Best Sellers Scraper](https://apify.com/aurelix/amazon-best-sellers)**: Amazon Best Sellers and New Releases top 100 on 10 marketplaces: rank, ASIN, price, rating, rank change.

#### Leads and company data

- **[Google Maps Business Scraper](https://apify.com/aurelix/google-maps-scraper)**: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
- **[Recently Funded Companies](https://apify.com/aurelix/recently-funded-companies)**: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.

#### Ad intelligence

- **[Facebook Ad Library Scraper](https://apify.com/aurelix/facebook-ad-library-scraper)**: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.

#### Canada and government data

- **[Canada Building Permits Scraper](https://apify.com/aurelix/canada-building-permits-scraper)**: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, contractor company.

### Recent changes

- **0.2**: Google Trends explore URLs as input (startUrls): terms, location, time range, category and search type are read from each link and can be mixed with keywords; invalid links are skipped and reported.
- **0.1**: Store page corrected: the start fee is $0.0075 per run, not $0.001.

The full history is on the **Changelog** tab.

### Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 4 results come back with `record_type`, `source_url`, `scraped_at` filled in; a failed check alerts the maintainer straight away.

### Your feedback

Missing a field, found a bug or need another filter? Open an issue on the **Issues** tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.

# Changelog

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

# Actor input Schema

## `keywords` (type: `array`):

Search terms to look up, one per line, e.g. 'air fryer', 'pickleball'. Any number: they are compared 5 at a time with the first keyword in every group, so all values share one 0-100 scale. Put a keyword of middling popularity first.

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

Optional: paste Google Trends explore links, e.g. https://trends.google.com/trends/explore?q=air%20fryer,instant%20pot\&geo=US\&date=today%2012-m. Each link's terms (q), location (geo), time range (date), category (cat) and search type (gprop) are used for that link; a setting missing from the link uses Google's default (worldwide, past 12 months, all categories, web search). Works together with 'Keywords'. Invalid links are skipped and named in the run status.

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

Country or sub-region code, e.g. 'US', 'GB', 'US-CA' (California), 'CA-ON' (Ontario). Leave empty for worldwide.

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

Period to look at, as on the Google Trends page. Past hour to past 7 days give minute or hourly points; longer ranges give daily, weekly or monthly points.

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

Exact dates 'YYYY-MM-DD YYYY-MM-DD', e.g. '2024-01-01 2024-12-31'. Overrides 'Time range' when set.

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

Google Trends category ID to narrow the search, e.g. 0 = all categories, 71 = Food & Drink, 7 = Finance, 18 = Shopping, 958 = Jobs, 29 = Real Estate.

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

Which Google search to measure: web search, YouTube, Google News, Google Images or Google Shopping.

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

On: keywords are compared with each other (5 per Google comparison, the first keyword repeated in every group as the anchor), so 'pickleball 40' and 'solar panels 20' mean pickleball had twice the searches. Off: each keyword gets its own 0-100 scale, like typing it alone into Google Trends.

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

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

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

Where each keyword is searched most: countries (worldwide), states/provinces, metro areas or cities.

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

Region breakdown level. 'Automatic' is countries for worldwide and sub-regions for a country; worldwide always uses countries. Metro areas exist for the US only; city works for most countries.

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

Top and rising related searches for each keyword, with growth such as '+250%' or 'Breakout'.

## `includeRelatedTopics` (type: `boolean`):

Top and rising related topics. Google currently returns an empty topics list to automated visitors; when it does, you get empty lists and are charged nothing extra.

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

Also get Google's 'Trending now' searches for these countries, e.g. 'US', 'GB', 'DE'. Leave empty to skip.

## `trendingTimeWindow` (type: `string`):

Trending in the past 4 hours (real time), 24 hours (daily), 48 hours or 7 days.

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

Most trending searches to return per country, highest first as Google lists them, e.g. 50.

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

Language for region and topic names, e.g. 'en-US', 'de', 'fr'.

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

Leave as is: the Actor starts on Apify's datacenter proxy and moves to residential only if Google keeps answering 'too many requests'.

## Actor input object example

```json
{
  "keywords": [
    "air fryer",
    "pickleball",
    "solar panels"
  ],
  "startUrls": [],
  "geo": "US",
  "timeRange": "today 12-m",
  "category": 0,
  "property": "",
  "compareKeywords": true,
  "includeInterestOverTime": true,
  "includeInterestByRegion": true,
  "regionResolution": "auto",
  "includeRelatedQueries": true,
  "includeRelatedTopics": false,
  "trendingCountries": [],
  "trendingTimeWindow": "24",
  "maxTrendingPerCountry": 50,
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per keyword (interest over time, by region, related queries) and one per trending search.

# 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 = {
    "keywords": [
        "air fryer",
        "pickleball",
        "solar panels"
    ],
    "geo": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("aurelix/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 = {
    "keywords": [
        "air fryer",
        "pickleball",
        "solar panels",
    ],
    "geo": "US",
}

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

```

## MCP server setup

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