# Google Trends Trending Now Scraper with News (`curiousanand/google-trends-trending-now`) Actor

Google Trends' full Trending Now list for any country or region, with the news articles behind each trend, search volume, growth %, start and end times. Pay only per trend delivered. No browser.

- **URL**: https://apify.com/curiousanand/google-trends-trending-now.md
- **Developed by:** [Abhishek Anand](https://apify.com/curiousanand) (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 $0.30 / 1,000 trends

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

## Google Trends Trending Now Scraper with News

Every trend on Google Trends' Trending Now page, for any country or region, with the news articles behind each one. Search volume, growth %, and when it started and ended. One row per trend, and **you only pay for trends you actually receive.**

Most Trending Now scrapers give you one of two things: the short RSS feed (10 to 20 trends, with a news link) or the full list without any news. I wanted both, so this actor reads the full list the way the Trends website does and then fetches the articles Google ties to each trend.

- **The whole list.** About 630 trends for the US over 24 hours, about 3,300 over 7 days.
- **News for each trend**, when Google has it: headline, link, source, time and image. 3 articles by default, up to 30.
- **Volume, growth and timing**: search volume, growth %, start, end and duration.
- **Any country, or all of them.** Use codes (`US`, `IN`), regions (`US-CA`) or names ("Germany"), or `"ALL"` for all 125 countries Google covers.
- **Only what you care about.** Filter by 19 categories, active or ended trends, and a minimum search volume. Sort by volume, growth or newest before taking the top N.
- **Only new trends**, for alerts. Turn on `onlyNew` and a scheduled run returns just the trends you haven't seen.

### How it compares

| | RSS-feed scrapers | List-only scrapers | This actor |
|---|---|---|---|
| Trends per country (24 h, US) | 10–20 | Hundreds | Hundreds (about 630) |
| News articles per trend | One to a few | None | 3 by default, up to 30 |
| Growth %, start and end times | No | Some | Yes |
| Several countries per run | Varies | Varies | Up to 50, or all 125 |
| Minimum volume and sorting | No | Rarely | Yes |
| "Only new since last run" | Rarely | Rarely | Yes |
| Charged when news fails | n/a | n/a | No, that trend is free |

### What it costs

$1.00 per 1,000 trends delivered on the Free plan; lower on paid Apify plans: Bronze $0.80, Silver $0.60, and $0.30 on Gold, Platinum and Diamond. News is included. Trends whose news fails are free. Apify also adds a tiny standard start fee, well under $0.001 per run. Compute and the default proxy are included.

| You run | You pay (Free plan) |
|---|---|
| The top 25 in one country | $0.025 |
| One country, past 4 hours (about 100 trends) | about $0.10 |
| One country, past 24 hours (about 630 trends) | about $0.63 |
| One country, past 48 hours (about 1,050 trends) | about $1.05 |
| One country, past 7 days (about 3,300 trends) | about $3.30 |
| All 125 countries, top 10 each | about $1.25 |
| A trend whose news failed | $0 |

The input form starts at 25 trends per country so a first try costs a few cents. If you call the API without `maxItemsPerGeo`, you get the full list. Set a **maximum cost per run** and the actor stops exactly there. Invalid input and countries Google doesn't cover are never charged.

### Quick start

The top 25 in the US:

```json
{ "geo": ["US"], "hours": "24", "maxItemsPerGeo": 25 }
```

Three countries, two categories, past 4 hours:

```json
{ "geo": ["US", "GB", "IN"], "hours": "4", "categories": ["Sports", "Technology"] }
```

The 10 biggest trends in every country, past 24 hours:

```json
{ "geo": ["ALL"], "hours": "24", "sortBy": "volume", "maxItemsPerGeo": 10 }
```

New active trends in California this week, for a daily alert:

```json
{ "geo": ["US-CA"], "hours": "168", "status": "active", "onlyNew": true }
```

`hours` is `"4"`, `"24"`, `"48"` or `"168"`, or plain English like "past 7 days". `sortBy` is `relevance` (Google's order, the default), `volume`, `growth` or `newest`, and `minSearchVolume` drops anything smaller, e.g. `10000`. With `"ALL"` you have to set `maxItemsPerGeo`, because the full lists for all 125 countries add up to about 50,000 trends. `categories` takes names or ids written as text (`"17"`). Set `includeNews` to `false` if you only want the list, or `maxNewsPerTrend` (up to 30) for more articles.

### Output

One item per trend. This is real output, trimmed to a few related terms and one article:

```json
{
  "trendId": "7937204593e56c29",
  "rank": 1,
  "term": "texans vs jaguars",
  "normalizedTerm": "texans vs jaguars",
  "geo": "US",
  "hours": 24,
  "searchVolumeMin": 100000,
  "searchVolumeLabel": "100K+",
  "growthPercent": 1000,
  "isActive": true,
  "startedAt": "2026-10-18T01:50:00.000Z",
  "endedAt": null,
  "durationMinutes": 723,
  "categoryIds": [17],
  "categories": ["Sports"],
  "relatedTerms": ["jaguars vs texans", "texans", "texans game", "cj stroud"],
  "newsStatus": "ok",
  "newsCount": 3,
  "topNewsTitle": "Texans vs. Jaguars: Three must-know storylines for NFL Week 6 London game",
  "topNewsUrl": "https://www.nfl.com/news/texans-vs-jaguars-preview-week-6-london-game",
  "topNewsSource": "NFL.com",
  "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqDEBmWymjqr3u-a1lj6f1E4FbN8KgL8LLEMfHANFeQxR9SaI4qnCiSaQyZFQ",
  "imageSource": "NFL.com",
  "news": [
    {
      "title": "Texans vs. Jaguars: Three must-know storylines for NFL Week 6 London game",
      "url": "https://www.nfl.com/news/texans-vs-jaguars-preview-week-6-london-game",
      "source": "NFL.com",
      "publishedAt": "2026-10-16T16:27:57.000Z",
      "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqDEBmWymjqr3u-a1lj6f1E4FbN8KgL8LLEMfHANFeQxR9SaI4qnCiSaQyZFQ"
    }
  ],
  "exploreUrl": "https://trends.google.com/trends/explore?q=texans+vs+jaguars&geo=US&date=now+1-d",
  "scrapedAt": "2026-10-18T13:53:22.319Z"
}
```

What the less obvious fields mean:

- `rank` is the trend's position in Google's own list, before any filter. Google orders by relevance, not volume.
- `searchVolumeMin` is Google's bucket, so read it as "at least". `searchVolumeLabel` is the same thing as text (`100K+`).
- `growthPercent` is also Google's bucket. 1000 is the highest value it shows, and it can be null.
- `endedAt` is null while a trend is still active. `durationMinutes` runs from start to end, or to now for active trends.
- The same term can appear twice in a long window if it trended, stopped and trended again. Each episode has its own `trendId`.
- `newsStatus` is `ok`, `none` (Google lists no news for it), `skipped` (news turned off), or `failed` / `timeout`. A trend whose news failed is delivered free.
- `topNews*`, `newsCount` and `imageUrl` keep CSV and Excel exports tidy. The full articles are in `news`.
- For a 48-hour list, `exploreUrl` opens Google's 7-day view, the closest one Google offers.
- Images are links to Google's thumbnails. Nothing is downloaded or stored.

Each run also saves a `SUMMARY` record: trends per country, how many were charged, `newsFailed` (trends whose news failed or timed out, delivered free) and `pricing`.

### Measured on Apify

| Test (18 Oct 2026) | Result |
|---|---|
| US, past 24 hours, full list with news | 662 trends in 8.4 s, every one with news, 15 requests and no blocks from Google |
| US and Germany, 20 each, with a max cost | 40 trends delivered, exactly 40 charged |
| Memory | 256 MB is plenty |

### Monitoring with onlyNew

Turn on `onlyNew` and schedule the actor hourly or daily. Each run returns only trends you haven't received before, so you pay only for new ones. Send them to Slack, Google Sheets or a webhook with Apify's integrations.

- The memory lives in a key-value store called `trending-now-seen` in your own Apify account. Entries older than 8 days are dropped.
- Different filter settings keep separate memories, so a "Sports only" run never hides trends from an "everything" run. Changing how many trends you take per country doesn't reset the memory. To share memory on purpose, give runs the same `stateKey`.
- A trend is remembered only once you've been charged for it. If its news failed, the next run delivers it again with news.
- A term that trends again later counts as new.
- To start over, delete the `trending-now-seen` store in the Apify console.
- Don't run two `onlyNew` runs with the same settings at the same moment, or both may deliver the same new trend.

### Use it from code and AI agents

**API.** Start a run and get the results in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/curiousanand~google-trends-trending-now/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"geo": ["US"], "hours": "24", "maxItemsPerGeo": 25}'
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("curiousanand/google-trends-trending-now").call(run_input={"geo": ["US"], "hours": "24", "maxItemsPerGeo": 25})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["rank"], item["term"], item["searchVolumeLabel"], item["topNewsTitle"])
```

**Claude, ChatGPT, Cursor and other agents (MCP).** Add Apify's MCP server with just this tool:

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

Then ask something like *"What's trending in Germany in Technology right now, and what's the news behind it?"*

**No code.** Apify's integrations send results to Google Sheets, Slack, Zapier, Make, n8n or a webhook when a run finishes.

**Need history for a keyword?** [Google Trends Scraper & API](https://apify.com/curiousanand/google-trends-scraper) gives you interest over time, by region, and related queries and topics.

### FAQ

**What is Google Trends Trending Now?** It's the page on trends.google.com that lists what people in a country are searching for right now, refreshed through the day. Each trend shows its search volume, how fast it grew, and news coverage.

**How many countries does it cover?** All 125 countries that have a Trending Now page on Google Trends (I checked every country code on 18 Oct 2026), plus many sub-regions such as US states (`US-CA`), German states (`DE-BY`) and Indian states (`IN-MH`). If Google has no list for a region (for example `FR-IDF`), that one region is reported as unsupported, the rest of the run continues, and nothing is charged for it. There's no worldwide list, so list the countries you want.

**How fresh is the data?** It's whatever Google shows at the moment the run starts. Run it on a schedule for a running record.

**Can I export it to CSV or Excel?** Yes. Open the dataset and click Export. The "Trends" and "News" views give you clean tables.

**Do I need proxies or a Google account?** No. The default Apify proxy is included in the price. If Google ever starts blocking, the actor switches to residential proxies on its own, with a cap so a small run can't run up a big proxy bill.

**Is this legal?** It collects public, aggregated data that anyone can see on trends.google.com. News items are just headlines and links, and images are Google thumbnail links that aren't stored. Trend terms can include people's names, so make sure your own use of the data is lawful, including under GDPR.

**Something isn't working?** Open an issue on the Issues tab with your run link and I'll take a look.

# Actor input Schema

## `geo` (type: `array`):

Country codes (US, GB, IN), regions (US-CA, DE-BY) or country names (Germany). Up to 50 per run. Trending Now has no worldwide list, but "ALL" gives every country that has one (125; set maxItemsPerGeo with it).

## `hours` (type: `string`):

How far back Trending Now looks. Also accepts "past 7 days", "last 24 hours", "48h". US list size: 4 h ≈ 100, 24 h ≈ 630, 48 h ≈ 1,050, 7 days ≈ 3,300 trends.

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

Only trends in these categories. Empty = all. Names or ids as text ("17").

## `status` (type: `string`):

All trends, only those still trending (active), or only those that have ended.

## `minSearchVolume` (type: `integer`):

Only trends with at least this many searches (Google's lower bound, e.g. 1000 for "1K+"). 0 = no minimum. Trends without a volume are dropped when this is above 0.

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

Order of the trends in each country, applied before the per-country limit, so "top 20 by volume" works. Ties keep Google's order. The rank field always keeps Google's position.

## `maxItemsPerGeo` (type: `integer`):

Keep the first N trends per geo after filters and sorting (Google's order unless you sort). 0 = the full list. Cost: $1.00 per 1,000 trends delivered (US 24 h full list ≈ $0.63).

## `includeNews` (type: `boolean`):

Fetch the news articles behind each trend (title, link, source, time, image). Included in the price; trends whose news fails are free.

## `maxNewsPerTrend` (type: `integer`):

Up to 30. 0 turns news off.

## `onlyNew` (type: `boolean`):

For scheduled monitoring: skip trends an earlier run with the same settings already delivered. Remembered in your key-value store "trending-now-seen" for 8 days. Don't run two of these at the same time with the same settings.

## `stateKey` (type: `string`):

Name for the onlyNew memory, e.g. "daily-us-sports". Empty = automatic per filter settings. Letters, digits, - and \_ only.

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

Apify Proxy is included in the price. If Google blocks, the run switches to residential proxies on its own.

## Actor input object example

```json
{
  "geo": [
    "US"
  ],
  "hours": "24",
  "categories": [],
  "status": "all",
  "minSearchVolume": 0,
  "sortBy": "relevance",
  "maxItemsPerGeo": 25,
  "includeNews": true,
  "maxNewsPerTrend": 3,
  "onlyNew": false,
  "stateKey": "",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per trend: volume, growth, start/end times, categories, related searches and news articles.

## `summary` (type: `string`):

Per-geo outcomes, trends charged and free, requests and proxy traffic for this run.

# 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 = {
    "geo": [
        "US"
    ],
    "maxItemsPerGeo": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("curiousanand/google-trends-trending-now").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 = {
    "geo": ["US"],
    "maxItemsPerGeo": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("curiousanand/google-trends-trending-now").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 '{
  "geo": [
    "US"
  ],
  "maxItemsPerGeo": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call curiousanand/google-trends-trending-now --silent --output-dataset

```

## MCP server setup

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

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/GgwpvqUZ3xl2lhH9O/builds/LsxfDc7z9CLbNknfT/openapi.json
