# 🔥 Google Trends : Trending Search Scraper (`citrine_venus/google-trends-trending-search-scraper`) Actor

Scrape Google Trends trending searches for 55+ countries. Search volume,growth %, categories, related queries and news — one row per trend.

- **URL**: https://apify.com/citrine\_venus/google-trends-trending-search-scraper.md
- **Developed by:** [Data Minds](https://apify.com/citrine_venus) (community)
- **Categories:** Developer tools, News, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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/platform/actors/running/actors-in-store#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 : Trending Search Scraper — Real-Time Trending Keywords API

**Google Trends Trending Search Scraper** is a fast, production-grade [Apify Actor](https://docs.apify.com/platform/actors) for **Google Trends scraping**, **trending searches extraction**, and **real-time keyword research**. It reads the live **Trending Now** list from [Google Trends](https://trends.google.com/trending) for **any country**, and returns **one clean row per trending search term** — with **search volume**, **growth percentage**, **category**, **related queries**, **trend start time**, and the **news articles** behind each trend.

Every trending term is written to your Apify **Dataset the moment it is found**, so you can watch results stream in live and export them to **JSON, CSV, Excel, XML, or HTML** — or pull them straight from the [Apify API](https://docs.apify.com/api/v2).

> 💡 **Need a custom version, private integration, or a tailored trends pipeline?** Email **<hello.dataminds@gmail.com>**.

Google offers **no official public Google Trends API**. This Actor is the reliable, no-code **Google Trends API alternative** for SEO teams, newsrooms, marketers, analysts, and AI agents.

***

### 📑 Table of contents

- [What is Google Trends Trending Search Scraper?](#-what-is-google-trends-trending-search-scraper)
- [Main features](#-main-features)
- [Who is this Actor for?](#-who-is-this-actor-for)
- [What data you can extract](#-what-data-you-can-extract)
- [Output format (Dataset)](#-output-format-dataset)
- [Example output (JSON)](#-example-output-json)
- [Quick start](#-quick-start)
- [Input parameters reference](#%EF%B8%8F-input-parameters-reference)
- [Countries & categories supported](#-countries--categories-supported)
- [Smart network handling & anti-blocking](#%EF%B8%8F-smart-network-handling--anti-blocking)
- [Integrations: Make, n8n, Zapier, Google Sheets, MCP](#-integrations-make-n8n-zapier-google-sheets-mcp)
- [Pricing & how to control cost](#-pricing--how-to-control-cost)
- [Best use cases](#-best-use-cases)
- [Frequently asked questions (FAQ)](#-frequently-asked-questions-faq)
- [Troubleshooting](#%EF%B8%8F-troubleshooting)
- [Help, support & custom builds](#-help-support--custom-builds)
- [Is web scraping legal?](#%EF%B8%8F-is-web-scraping-legal)
- [SEO keywords targeted](#-seo-keywords-targeted)

***

### 🔥 What is Google Trends Trending Search Scraper?

**Google Trends Trending Search Scraper** is an Apify-hosted **Google Trends API alternative** that turns the public Google Trends *Trending Now* feed into clean, structured, analysis-ready data. Unlike generic scrapers, this Actor:

- **Collects trending searches** for **55+ countries** — in bulk, in a single run.
- **Returns one row per trending term**, ready for spreadsheets, BI tools, and pay-per-result pipelines.
- **Captures search volume** in both formatted (`500K+`) and raw numeric (`500000`) form.
- **Measures momentum** with the growth percentage Google reports for each trend.
- **Attaches related news** — headline, publisher, publish time, thumbnail and article URL.
- **Reads Google Trends URLs** you paste in bulk, so saved links and dashboards work as-is.
- **Streams results live** into an Apify **Dataset** with **five ready-made table views**.

If you need a **trending keywords API**, **real-time search trends feed**, **newsjacking radar**, or a **daily trending topics database**, this is the Actor.

***

### ✨ Main features

| Feature | What it gives you |
|---|---|
| 🌍 **55+ countries, bulk input** | Select many countries at once — each is collected independently, so one failure never stops the rest. |
| 🔗 **Bulk Google Trends URLs** | Paste any number of `trends.google.com/trending?geo=…` links. Country, time window and category are read straight from each URL. |
| ⏱️ **4 time windows** | Past **4h**, **24h**, **48h**, or **7 days** — from breaking bursts to weekly patterns. |
| 🏷️ **19 category filters** | Sports, Technology, Entertainment, Politics, Health, Business & Finance, Climate and more. |
| 📈 **Volume + growth** | `trend_volume` (`1M+`), `trend_volume_raw` (`1000000`) and `trend_delta_percent` for sorting and scoring. |
| 🔗 **Related search queries** | Every associated query people typed alongside the trend — a ready-made long-tail keyword list. |
| 📰 **Related news articles** | Headline, source, publish timestamp, thumbnail and link for each trend. Full coverage or a fast headlines-only pass. |
| ↕️ **Built-in sorting** | Keep Google's own order, or sort by volume, recency, or growth before the limit is applied. |
| 💾 **Real-time streaming** | Rows land in your Dataset as they are found — a stopped run still leaves usable data. |
| 📊 **5 output table views** | ✨ Overview · 📊 Volume & Momentum · 🔗 Related terms · 📰 News · 🕒 Timing & source. |
| 🛡️ **Automatic network fallback** | Starts **direct (no proxy)**, and only escalates to a **datacenter** then **residential** proxy if Google pushes back. |
| ⚡ **No browser needed** | Pure HTTP with browser-grade fingerprints — seconds per country, not minutes. |
| 🧭 **Self-healing parser** | Field positions are re-derived from every response, so an upstream layout change degrades one field instead of breaking the run. |

***

### 👥 Who is this Actor for?

- 🔍 **SEO specialists & content strategists** — catch rising queries before competitors write about them.
- 📰 **Newsrooms & editors** — a live newsjacking radar with the articles already attached.
- 📈 **Market researchers & analysts** — track category-level demand across markets.
- 📱 **Social media & performance marketers** — align posts and campaigns with what is trending *today*.
- 🛒 **E-commerce & retail teams** — spot product and brand spikes as they happen.
- 🤖 **AI engineers & agent builders** — feed live trend context into LLM pipelines, RAG systems, and MCP-connected agents.
- 📊 **Data teams** — build a historical trending database by scheduling hourly or daily runs.

***

### 📋 What data you can extract

| Field | Type | Description |
|---|---|---|
| `rank` | number | Position in the trending list for that country |
| `term` | string | The trending search query |
| `category` | string | Human-readable category name(s) |
| `category_ids` | array | Numeric category IDs |
| `trend_volume` | string | Formatted search volume, e.g. `1M+`, `500K+` |
| `trend_volume_raw` | number | Raw numeric volume for sorting and analysis |
| `trend_delta_percent` | number | Growth percentage reported for the trend |
| `is_active` | boolean | Whether the trend is still running |
| `started` / `started_timestamp` | string / number | When the trend started (local text + epoch) |
| `trend_start` / `trend_end` | string | UTC start and end of the trend window |
| `trend_timeframe` | object | `{ start, end }` convenience object |
| `related_terms` | array | Related search queries people used |
| `related_terms_count` | number | How many related queries were returned |
| `related_terms_text` | string | Same list, comma-joined for spreadsheets |
| `related_news` | array | Articles: `title`, `url`, `source`, `published`, `published_timestamp`, `image` |
| `news_count` | number | How many articles were attached |
| `top_news_title` / `top_news_source` / `top_news_url` / `top_news_published` / `top_news_image` | string | Flattened headline article for quick scanning |
| `geo` / `country` | string | Country code and country name |
| `language` | string | Language used for the request |
| `timeframe_hours` | string | Time window: `4`, `24`, `48`, `168` |
| `trends_url` | string | Direct Google Trends link to explore the term |
| `source_url` | string | The trending page this row came from |
| `scraped_at` | string | Collection timestamp |
| `article_ids` | array | *(optional)* Raw article identifiers |
| `orderNo` | number | Global row number across the whole run |

***

### 📤 Output format (Dataset)

Every trending term is **one dataset item**, pushed the instant it is ready. The Output tab ships with **five table views** so you can read the same data through different lenses:

| View | Shows |
|---|---|
| ✨ **Overview** | Rank, term, category, volume, growth %, news count, country, start time, explore link |
| 📊 **Volume & Momentum** | Rank, term, formatted + raw volume, growth %, still-trending flag, geo, window |
| 🔗 **Related search terms** | Rank, term, related-query count, joined text and full list |
| 📰 **Related news** | Rank, term, article count, top headline, source, publish time, link, thumbnail, all articles |
| 🕒 **Timing & source** | Rank, term, start (local + epoch + UTC), end, window, language, collected-at, source page |

A **run summary** (totals per country, network route used, and any countries that returned nothing) is stored in the run's key-value store under the `RUN-SUMMARY` key.

Export everything as **JSON**, **CSV**, **Excel**, **XML**, **HTML**, or **RSS** from the Console, or via the Apify API.

***

### 🧪 Example output (JSON)

```json
{
  "rank": 1,
  "term": "tmobile outage",
  "category": "Technology",
  "category_ids": [18],
  "trend_volume": "1M+",
  "trend_volume_raw": 1000000,
  "trend_delta_percent": 1000,
  "is_active": true,
  "started": "2026-07-28 02:10:00",
  "started_timestamp": 1785183000,
  "trend_start": "2026-07-27 20:10:00 UTC",
  "trend_end": null,
  "trend_timeframe": { "start": "2026-07-27 20:10:00 UTC", "end": null },
  "related_terms_count": 82,
  "related_terms": ["t mobile outage", "tmobile", "is t mobile down", "tmobile down detector"],
  "related_terms_text": "t mobile outage, tmobile, is t mobile down, tmobile down detector",
  "news_count": 3,
  "top_news_title": "T-Mobile breaks silence over nationwide outage",
  "top_news_source": "Mashable",
  "top_news_url": "https://mashable.com/tech/t-mobile-outage-statement-amid-customer-dissatisfaction",
  "top_news_published": "2026-07-28 21:21:17",
  "top_news_image": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSO3EFvzScB1Zt",
  "related_news": [
    {
      "title": "T-Mobile’s huge outage is officially over.",
      "url": "https://www.theverge.com/tech/971930/t-mobiles-huge-outage-is-officially-over",
      "source": "The Verge",
      "published_timestamp": 1785256068,
      "published": "2026-07-28 22:27:48",
      "image": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRe_JrKAwtA8DPg"
    }
  ],
  "geo": "US",
  "country": "United States",
  "language": "en-US",
  "timeframe_hours": "24",
  "trends_url": "https://trends.google.com/trends/explore?geo=US&q=tmobile+outage&hl=en-US",
  "source_url": "https://trends.google.com/trending?geo=US&hl=en-US&hours=24",
  "scraped_at": "2026-07-28 23:02:35",
  "orderNo": 1
}
```

With 300 trending queries you get **300 individual rows** — ready for direct analysis, dashboards, or export.

***

### 🚀 Quick start

#### Run in Apify Console

1. Log in at [console.apify.com](https://console.apify.com) → **Actors**.
2. Open **🔥 Google Trends Trending Search Scraper**.
3. Pick one or more **🌍 countries** (and/or paste **🔗 Google Trends URLs** in bulk).
4. Choose a **🕒 time window** — Past 4h, 24h, 48h, or 7 days.
5. *(Optional)* Filter by **🏷️ category**, set **📬 max trends per country**, and pick a **📰 news mode**.
6. Click **Start** ▶️ and watch trends stream into the **Output** tab in real time.
7. Switch between the ✨ Overview / 📊 Volume / 🔗 Related terms / 📰 News / 🕒 Timing tabs.
8. Export to **JSON**, **CSV**, **Excel**, **XML**, or **HTML**.

No coding required.

#### Run via API

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "countries": ["US", "GB", "IN"],
        "timeframe": "24",
        "categories": [],
        "maxItems": 50,
        "newsMode": "full"
      }'
```

#### Run from Python

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("<ACTOR_ID>").call(run_input={
    "countries": ["US"],
    "timeframe": "24",
    "maxItems": 25,
    "newsMode": "full",
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["rank"], item["term"], item["trend_volume"])
```

***

### 🛠️ Input parameters reference

#### 🚀 Start here

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `["https://trends.google.com/trending?geo=US&hl=en-US&hours=24"]` | Google Trends *Trending Now* URLs — bulk supported. Country, hours and category are read from each URL. |
| `countries` | array | `["US"]` | One or more country codes. Bulk supported; each country is collected independently. |
| `extraCountryCodes` | array | `[]` | Any two-letter code not in the picker, e.g. `LK`, `NP`, `QA`. Merged with your selection. |

#### ⏱️ Trend window & filters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `timeframe` | string | `"24"` | `4`, `24`, `48`, or `168` hours. Wider window = far more terms. |
| `categories` | array | `[]` | Category IDs to keep. Empty = all categories. |
| `maxItems` | integer | `25` | Max trends saved **per country**. `0` = everything Google returns. |
| `language` | string | `"en-US"` | Language for trend labels and news headlines. |
| `sortBy` | string | `"default"` | `default` (Google's order), `volume`, `recency`, or `growth`. |

#### 📰 News enrichment

| Parameter | Type | Default | Description |
|---|---|---|---|
| `newsMode` | string | `"full"` | `full` (news for every trend), `rss` (fast headlines pass over top trends), `off`. |
| `newsLimit` | integer | `25` | Max trends per country to enrich with news. `0` = all. |
| `newsConcurrency` | integer | `4` | Parallel news lookups. |

#### 🧩 Fields to include

| Parameter | Type | Default | Description |
|---|---|---|---|
| `includeRelatedTerms` | boolean | `true` | Include the related-query list and its joined text form. |
| `includeArticleIds` | boolean | `false` | Include raw article identifiers for advanced pipelines. |

#### 🛡️ Network & proxy

| Parameter | Type | Default | Description |
|---|---|---|---|
| `proxyConfiguration` | object | `{ "useApifyProxy": false }` | **Default is no proxy.** Fallback to datacenter → residential is automatic. Turn Apify Proxy on only to start from a proxy immediately. |

#### ⚙️ Performance & retries

| Parameter | Type | Default | Description |
|---|---|---|---|
| `maxConcurrency` | integer | `4` | Countries collected in parallel. |
| `maxRequestRetries` | integer | `3` | Attempts per request, with exponential backoff and jitter. |
| `pageLoadTimeoutSecs` | integer | `120` | Per-request timeout in seconds. |
| `requestsPerSecond` | number | `6` | Global outbound request ceiling. Automatically reduced if Google throttles. |
| `requestDelaySeconds` | number | `0.5` | Extra randomised pause before each request. |

#### 🔧 Diagnostics

| Parameter | Type | Default | Description |
|---|---|---|---|
| `debugLog` | boolean | `false` | Adds DEBUG-level detail (per-request outcomes, retry timings, network fallbacks). |

***

### 🌍 Countries & categories supported

**Countries (55+ in the picker, plus any two-letter code via `extraCountryCodes`):**
🇺🇸 US · 🇬🇧 GB · 🇨🇦 CA · 🇦🇺 AU · 🇮🇳 IN · 🇧🇩 BD · 🇵🇰 PK · 🇩🇪 DE · 🇫🇷 FR · 🇮🇹 IT · 🇪🇸 ES · 🇳🇱 NL · 🇧🇪 BE · 🇨🇭 CH · 🇦🇹 AT · 🇸🇪 SE · 🇳🇴 NO · 🇩🇰 DK · 🇫🇮 FI · 🇮🇪 IE · 🇵🇹 PT · 🇬🇷 GR · 🇵🇱 PL · 🇨🇿 CZ · 🇭🇺 HU · 🇷🇴 RO · 🇺🇦 UA · 🇷🇺 RU · 🇹🇷 TR · 🇮🇱 IL · 🇸🇦 SA · 🇦🇪 AE · 🇪🇬 EG · 🇳🇬 NG · 🇰🇪 KE · 🇿🇦 ZA · 🇲🇦 MA · 🇧🇷 BR · 🇲🇽 MX · 🇦🇷 AR · 🇨🇱 CL · 🇨🇴 CO · 🇵🇪 PE · 🇯🇵 JP · 🇰🇷 KR · 🇨🇳 CN · 🇹🇼 TW · 🇭🇰 HK · 🇸🇬 SG · 🇲🇾 MY · 🇹🇭 TH · 🇻🇳 VN · 🇵🇭 PH · 🇮🇩 ID · 🇳🇿 NZ

**Categories:**

| ID | Category | ID | Category |
|---|---|---|---|
| 1 | 🚗 Autos & Vehicles | 11 | 📦 Other |
| 2 | 💄 Beauty & Fashion | 13 | 🐾 Pets & Animals |
| 3 | 💼 Business & Finance | 14 | 🏛️ Politics |
| 4 | 🎬 Entertainment | 15 | 🔬 Science |
| 5 | 🍔 Food & Drink | 16 | 🛍️ Shopping |
| 6 | 🎮 Games | 17 | 🏆 Sports |
| 7 | 🏥 Health | 18 | 💻 Technology |
| 8 | 🎨 Hobbies & Leisure | 19 | ✈️ Travel & Transportation |
| 9 | 🎓 Jobs & Education | 20 | 🌍 Climate |
| 10 | ⚖️ Law & Government | | |

***

### 🛡️ Smart network handling & anti-blocking

Most trending scrapers force a proxy on every request, which costs money and slows runs down. This Actor is smarter:

1. 🔓 **Direct connection first** — no proxy, no proxy cost, fastest possible response.
2. 🏢 **Datacenter proxy** — used **only** if Google rejects or blocks a request.
3. 🏠 **Residential proxy** — used if the datacenter route is refused too, with **3 automatic retries** on fresh addresses.
4. 📌 **Sticky route** — once the Actor steps up, that route is kept for the **rest of the run**; no flip-flopping.
5. 📣 **Fully logged** — every fallback is announced in the run log so you always know which route produced your data.

On top of that:

- ⏳ A **global request-rate ceiling** keeps total throughput polite no matter how many countries run in parallel.
- 🐢 If Google starts throttling, the allowance **halves automatically** and recovers gradually.
- ♻️ Transient failures are retried with **exponential backoff + jitter**.
- 🧭 Browser-grade **TLS and HTTP fingerprints** mean far fewer challenges than a plain HTTP client — with none of the cost of a headless browser.

You do not have to configure any of this. It just works.

***

### 🔌 Integrations: Make, n8n, Zapier, Google Sheets, MCP

Connect trending data to the rest of your stack:

- ⚡ **Make (Integromat)** — [Apify + Make](https://docs.apify.com/platform/integrations/make)
- 🔄 **n8n** — [Apify + n8n](https://docs.apify.com/platform/integrations/n8n)
- 🔧 **Zapier** — [Apify + Zapier](https://docs.apify.com/platform/integrations/zapier)
- 📊 **Google Sheets / Drive** — push trending rows straight into a live spreadsheet
- 💬 **Slack** — post the day's top trends to a channel
- 🤖 **MCP for AI agents** — [Apify MCP Server](https://docs.apify.com/platform/integrations/mcp) lets Claude, Cursor and other agents call this Actor as a tool
- 🪝 **Webhooks & scheduler** — trigger downstream jobs when a run finishes; schedule hourly, daily, or weekly runs

Full list: [Apify integrations](https://docs.apify.com/platform/integrations).

***

### 💸 Pricing & how to control cost

This Actor uses **pay per event** — you pay for the trending terms you actually receive.

#### Billable event

| Event | When it fires |
|---|---|
| `trending-result` | Once per trending term saved to the dataset |

Nothing is charged for terms that are filtered out, for countries that return nothing, or for retries.

#### To control cost, tune:

| Setting | Effect |
|---|---|
| 📬 `maxItems` | The single biggest lever — caps saved rows **per country**. |
| 🌍 `countries` | Each extra country multiplies the row count. |
| ⏱️ `timeframe` | `4` hours returns a short list; `168` hours can return hundreds of terms per country. |
| 🏷️ `categories` | Narrow to your niche instead of paying for every category. |
| 📰 `newsMode` | `off` is the cheapest and fastest; `rss` is a light middle ground; `full` is richest. |
| 🔢 `newsLimit` | Enrich only the top N trends with news. |
| 🧩 `includeRelatedTerms` | Turn off for slimmer rows and faster exports. |

💡 **Tip:** start with `maxItems: 10` and `newsMode: "off"` for a cheap smoke test, then scale up.

***

### 💡 Best use cases

🔍 **SEO & content strategy** — find rising queries and their long-tail variants before the competition publishes.

📰 **News & media monitoring** — a live newsjacking feed with the source articles already attached.

📊 **Market research** — compare category demand across dozens of markets in one run.

📈 **Social media marketing** — schedule hourly runs and post while a trend is still climbing.

🛒 **E-commerce & retail** — catch product, brand, and seasonal spikes as they form.

🤖 **AI & data pipelines** — feed real-time trend context into LLMs, agents, dashboards, and alerting systems.

🌍 **Multi-market intelligence** — spot which trends are global and which are strictly local.

📚 **Historical trend databases** — schedule recurring runs and build your own time series of what the world searched for.

***

### ❓ Frequently asked questions (FAQ)

#### Is there an official Google Trends API?

No. Google does not publish a public Google Trends API for trending searches. This Actor is a **reliable Google Trends API alternative** — run it from the Console, the [Apify API](https://docs.apify.com/api/v2), Python, Node.js, or an MCP-connected AI agent.

#### How many trending searches can I get per run?

It depends on country and time window. A 4-hour window typically returns a short burst list; 24 hours commonly returns **100–300 terms** per country, and 7 days can return **400+**. Set `maxItems: 0` to take everything available.

#### How fresh is the data?

It is the live Trending Now list — the same one Google shows on `trends.google.com/trending` at the moment your run executes. Schedule the Actor hourly for near-real-time monitoring.

#### Can I scrape several countries in one run?

Yes. Select as many countries as you like, or paste multiple Google Trends URLs. Countries are processed in parallel (`maxConcurrency`) and **one failing country never stops the others**.

#### Can I paste Google Trends URLs instead of picking countries?

Yes — `startUrls` accepts bulk input. Country, time window and category are read directly from each URL, so bookmarked links and dashboard exports work unchanged. You can mix URLs and picked countries in the same run.

#### Do I need a proxy?

No. The Actor starts with a **direct connection** and only escalates to a datacenter and then a residential proxy if Google pushes back — automatically, and reported in the log.

#### What is the difference between the news modes?

`full` fetches the articles behind **every** trend (richest data, slower). `rss` is a single fast pass that covers the **top** trends only. `off` skips news entirely and is the fastest, cheapest option.

#### Why do some rows have no related news?

Not every trending term has articles attached upstream — and in `rss` mode only the top trends are covered. Switch to `full` for the widest coverage.

#### How do I export the results?

From the Console **Output** tab choose **Export** → JSON, CSV, Excel, XML, HTML or RSS. Via API: `GET https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv`.

#### Can I schedule recurring runs?

Yes — use the Apify [Scheduler](https://docs.apify.com/platform/schedules) for hourly, daily, or weekly runs, and a webhook to push each finished run downstream.

#### Does the Actor return rows if a run is stopped early?

Yes. Every trending term is pushed the moment it is ready, so an aborted or timed-out run still leaves a usable partial dataset.

***

### 🛠️ Troubleshooting

| Symptom | Likely cause | Fix |
|---|---|---|
| **No rows saved** | Country code is not supported by Google Trends, or the category filter matched nothing | Try `US` first, clear `categories`, and widen `timeframe` |
| **Fewer rows than expected** | `maxItems` cap, or a narrow time window | Raise `maxItems` (or set `0`) and use `48` / `168` hours |
| **A country returned nothing** | Google has no trending data for that market right now | Check the run log — other countries still complete normally |
| **No news attached** | `newsMode: "rss"` covers only top trends, or the trend has no articles | Switch to `newsMode: "full"` and raise `newsLimit` |
| **Run is slow** | `newsMode: "full"` with a high `newsLimit`, or many countries | Lower `newsLimit`, use `rss` / `off`, or reduce `maxItems` |
| **Network fallback in the log** | Google refused the direct route | Nothing to do — the Actor switched to a proxy automatically and kept going |
| **Rows are large** | Long related-term lists and many articles | Set `includeRelatedTerms: false` or lower `newsLimit` |
| **Want more detail in the log** | Default log level | Set `debugLog: true` |

***

### 💬 Help, support & custom builds

For **custom solutions**, **private integrations**, **white-label trend pipelines**, or **implementation help**:

📧 **<hello.dataminds@gmail.com>**

Useful Apify documentation:

- 📘 [Apify documentation](https://docs.apify.com/)
- 🤖 [Actors overview](https://docs.apify.com/platform/actors)
- 🔌 [Apify API reference](https://docs.apify.com/api/v2)
- 📚 [Apify Academy — web scraping](https://docs.apify.com/academy)
- 🧰 [Apify SDKs](https://docs.apify.com/sdk)

***

### ⚖️ Is web scraping legal?

This Actor collects only **publicly available** data from Google Trends. Use it responsibly and respect:

- ✅ website terms of service,
- ✅ rate limits and politeness norms,
- ✅ data-protection laws (GDPR, CCPA, etc.) in your jurisdiction,
- ✅ copyright and licensing of any content you republish.

You are responsible for **compliant data collection, storage, and use**. When in doubt, consult a qualified attorney.

***

### 🔍 SEO keywords targeted

This README is intentionally keyword-rich for discovery on **Google Search**, **Apify Store search**, and **Bing**. Primary and secondary terms covered include:

**Primary:** google trends scraper · google trends api · trending searches scraper · trending now scraper · google trends trending searches · real-time trending keywords · google trends data extraction · trending topics api

**Keyword & SEO:** keyword research tool · trending keywords api · long-tail keyword scraper · search volume scraper · rising queries · related queries extraction · search demand data · seo trend monitoring · content ideas generator

**Data & analytics:** search trends dataset · trending topics dataset · google trends csv export · google trends json api · trend analytics pipeline · time series of search interest · market demand signals · category trend analysis

**Use cases:** newsjacking tool · breaking news monitoring · social media trend tracker · viral topic detector · e-commerce demand forecasting · competitor trend tracking · brand monitoring · daily trending report

**Coverage:** trending searches by country · google trends by region · worldwide trending searches · multi-country trend scraper · google trends bangladesh · google trends india · google trends uk · google trends usa

**Integrations & AI:** apify actor · make integration · n8n workflow · zapier automation · google sheets export · mcp server tool · ai agent data source · llm trend context · rag pipeline data

***

*Reference patterns for structure and section ordering:*

- 📘 [Apify Store — Google Trends Actors](https://apify.com/store?search=google%20trends)
- 📗 [Apify publishing & monetization guidance](https://docs.apify.com/platform/actors/publishing)
- 🔥 [Google Trends — Trending Now](https://trends.google.com/trending)

# Actor input Schema

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

📋 **Optional.** Paste one or many Google Trends *Trending Now* URLs — one per line. Example: `https://trends.google.com/trending?geo=GB&hours=48`. Country, hours and category are read straight from each URL. Leave empty to just use the country picker below.

## `countries` (type: `array`):

🗺️ Select **one or more countries**. Each country is collected independently — one failing country never stops the others. Add as many as you like for a multi-market sweep.

## `extraCountryCodes` (type: `array`):

🧭 Any two-letter code Google Trends supports, e.g. `LK`, `NP`, `QA`. Handy for markets missing from the picker above. Codes are merged with your selection.

## `timeframe` (type: `string`):

How recent should a trend be to show up? Google decides how many terms exist for each window — wider window = more terms.

## `categories` (type: `array`):

🎯 Keep only trends in the categories you pick. Leave **empty** to get every category. A term can belong to more than one category.

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

🎁 Hard stop on how many trending terms are saved **for each country**. Use a small number for a quick sample, or `0` to take every trend Google returns.

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

Language used for the trend labels and news headlines you get back.

## `sortBy` (type: `string`):

How rows are ordered inside each country before the max-items cap is applied.

## `newsMode` (type: `string`):

**Full coverage** fetches articles for every trend that has them (richest data). **Headlines only** is a quick pass that covers just the top trends. **Off** is the fastest option.

## `newsLimit` (type: `integer`):

📉 Cap how many trends get the news treatment, per country. Lower = faster and cheaper. `0` means every trend that has articles.

## `newsConcurrency` (type: `integer`):

How many news lookups run at the same time. Higher = faster, but be gentle — Google throttles aggressive clients.

## `includeRelatedTerms` (type: `boolean`):

Adds the full list of related queries people searched alongside the trend. Turn off for slimmer rows.

## `includeArticleIds` (type: `boolean`):

Adds Google's internal article identifiers for each trend. Mostly useful for advanced pipelines and de-duplication.

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

🌐 **Optional.** Default is **no proxy** — requests go straight to Google Trends. If Google rejects or blocks a request, the Actor automatically falls back to a **datacenter** proxy, then to a **residential** proxy (with 3 retries), and sticks with it for the rest of the run. Turn *Apify Proxy* on here only if you want to start from a proxy right away.

## `maxConcurrency` (type: `integer`):

How many countries are collected at the same time. Only matters when you selected more than one country.

## `maxRequestRetries` (type: `integer`):

♻️ Total attempts before a request is given up on (`3` = one try plus two retries, with exponential backoff and jitter).

## `pageLoadTimeoutSecs` (type: `integer`):

⏲️ How long to wait for Google to respond before treating a request as failed.

## `requestsPerSecond` (type: `number`):

Global ceiling on outbound requests per second across the whole run. Lower values are gentler and get blocked far less often. Automatically reduced if Google starts throttling.

## `requestDelaySeconds` (type: `number`):

Additional randomised pause added before each request. Use `0` to go as fast as the rate ceiling allows.

## `debugLog` (type: `boolean`):

📣 Adds DEBUG-level detail (per-request outcomes, retry timings, network fallbacks) to the run log.

## Actor input object example

```json
{
  "startUrls": [
    "https://trends.google.com/trending?geo=US&hl=en-US&hours=24"
  ],
  "countries": [
    "US"
  ],
  "extraCountryCodes": [],
  "timeframe": "24",
  "categories": [],
  "maxItems": 25,
  "language": "en-US",
  "sortBy": "default",
  "newsMode": "full",
  "newsLimit": 25,
  "newsConcurrency": 4,
  "includeRelatedTerms": true,
  "includeArticleIds": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 4,
  "maxRequestRetries": 3,
  "pageLoadTimeoutSecs": 120,
  "requestsPerSecond": 6,
  "requestDelaySeconds": 0.5,
  "debugLog": false
}
```

# Actor output Schema

## `items` (type: `string`):

Every trending term collected in this run.

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

Totals per country, network route used, and any countries that could not be collected.

# 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 = {
    "startUrls": [
        "https://trends.google.com/trending?geo=US&hl=en-US&hours=24"
    ],
    "countries": [
        "US"
    ],
    "extraCountryCodes": [],
    "categories": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("citrine_venus/google-trends-trending-search-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 = {
    "startUrls": ["https://trends.google.com/trending?geo=US&hl=en-US&hours=24"],
    "countries": ["US"],
    "extraCountryCodes": [],
    "categories": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("citrine_venus/google-trends-trending-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://trends.google.com/trending?geo=US&hl=en-US&hours=24"
  ],
  "countries": [
    "US"
  ],
  "extraCountryCodes": [],
  "categories": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call citrine_venus/google-trends-trending-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=citrine_venus/google-trends-trending-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/ZFtSsINMEqZ3lTUhH/builds/k5bMAknyGVnndoySc/openapi.json
