# Google Trends Scraper — All Data Types, Reliable (`surefetch/google-trends`) Actor

Interest over time, interest by region, related queries & topics (top + rising) and trending searches — complete Google Trends data as clean JSON. HTTP-only, fail-soft, no browser timeouts. The pytrends alternative that just works.

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

## Pricing

from $5.00 / 1,000 keyword analyzed (full data)s

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Trends Scraper — All Data Types, Reliable

### What does this Google Trends Scraper do?

Complete Google Trends data as clean JSON — the **pytrends alternative** that
just works, with **all five data types in one Actor**:

- **Interest over time** — the classic 0–100 trend curve for any time range
- **Interest by region** — country/state/city breakdown
- **Related queries** — top *and* rising, the data most tools skip
- **Related topics** — top and rising
- **Trending searches** — what's trending right now, per country

Works for Web, YouTube, News, Images and Shopping search. Batch keywords via
input list or a Google Sheet. Built HTTP-only: no browser, no timeouts, no
4 GB memory bills.

### Why this Actor?

The most-used Google Trends actor in the store fails or times out on **~30% of
its runs** (public Apify run stats, August 2026) and is rated 3.2★ — its
headless-browser architecture waits up to 180 seconds for pages that never
finish. Popular alternatives skip related queries entirely.

|  | This Actor | Most-used alternative |
|---|---|---|
| Run reliability | HTTP-only, fail-soft, designed >98% | ~70% (public stats 08/2026) |
| Related queries & topics | ✔ top + rising | ✔ (when it finishes) |
| Memory needed | 256 MB | 4,096 MB |
| Failed keywords | error item, **never charged** | run hangs or dies |
| One bad keyword in a batch | others still delivered | often kills the run |

**Fail-soft promise:** you never get an empty run. Keywords that Google blocks
are returned as error items — visible, retryable, and never charged.

### How much does it cost?

| What | Price |
|---|---|
| Actor start | $0.005 |
| Complete keyword analysis (timeline + regions + related) | $0.005 |
| Trending search item | $0.0008 |

A full keyword analysis costs about **$0.01** — SerpApi charges $0.025 for
less, and browser-based actors burn more than that in compute alone. 100
keywords ≈ $0.51.

### Input example

```json
{
    "operation": "keywords",
    "keywords": ["ai agents", "web scraping"],
    "timeRange": "today 12-m",
    "geo": "US"
}
```

Or point it at a public Google Sheet with keywords in the first column
(`spreadsheetUrl`) — perfect for batch jobs and recurring schedules.

### Output example

```json
{
    "keyword": "ai agents",
    "geo": "US",
    "ok": true,
    "interestOverTime": [{ "date": "Aug 2025", "ai agents": 64 }],
    "interestByRegion": [{ "region": "California", "value": 100 }],
    "relatedQueries": { "top": [], "rising": [{ "query": "ai agent tools", "formattedValue": "+350%" }] },
    "relatedTopics": { "top": [], "rising": [] }
}
```

### FAQ

#### Is this a pytrends replacement?

Yes. pytrends was archived in April 2025 and no longer works. This Actor uses
the same internal API the Google Trends website uses, maintained daily, with
proper session handling — callable from Python, n8n, Zapier, Make or as an
MCP tool for AI agents.

#### Why do I need residential proxies?

Google rate-limits datacenter IPs aggressively. The default configuration uses
Apify residential proxies; the HTTP-only design keeps traffic (and cost) tiny —
a keyword needs ~0.2 MB, not the multi-megabyte page loads of browser actors.

#### Can I compare multiple keywords?

Up to 5 keywords per chart (like the Google Trends UI), unlimited keywords per
run — each gets its own complete analysis.

#### What time ranges are supported?

Past 7 days to "2004 – present", including custom ranges. Note that Google
normalizes values to 0–100 per request.

# Actor input Schema

## `operation` (type: `string`):

<b>trending</b>: current trending searches for a country (fast, cheap). <b>keywords</b>: full analysis per keyword — interest over time, regions, related queries & topics.

## `trendingGeo` (type: `string`):

Two-letter country code for trending searches, e.g. US, DE, GB, JP.

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

Keywords to analyze (each gets the full data set). Up to 5 keywords are also compared against each other like in the Google Trends UI.

## `spreadsheetUrl` (type: `string`):

Public Google Sheet URL — keywords are read from the first column. Great for batch jobs.

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

Time window for the interest-over-time curve.

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

Country/region code (e.g. US, DE, GB) or empty for Worldwide.

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

Google Trends category ID (0 = all categories).

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

Which Google property to analyze trends for.

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

Also fetch the country/state/city breakdown per keyword.

## `includeRelated` (type: `boolean`):

Also fetch related queries and topics (top + rising) per keyword.

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

Cap on trending searches pushed per run.

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

Residential proxies are strongly recommended for keyword analysis (Google rate-limits datacenter IPs).

## Actor input object example

```json
{
  "operation": "trending",
  "trendingGeo": "US",
  "timeRange": "today 12-m",
  "geo": "",
  "category": 0,
  "property": "",
  "includeRegions": true,
  "includeRelated": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("surefetch/google-trends").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("surefetch/google-trends").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 '{}' |
apify call surefetch/google-trends --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,surefetch/google-trends"
        }
    }
}

```

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/fXNkt4UnjfjCbQePs/builds/d52vCatsUc0Oy4aDA/openapi.json
