# Google Trends Trending Now Scraper (`steadydata/google-trending-searches`) Actor

Trending searches from Google Trends per country: every trend of the last 4 hours to 7 days with search volume, growth, start and end time, category and related queries. Up to 200 countries per run, pay only for delivered trends.

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

## Pricing

$0.60 / 1,000 trend listeds

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 Trending Now Scraper (trending searches per country)

Every trending search Google Trends lists for a country, **up to 200 countries per run**:
the trend, its search volume, growth percentage, when it started and (if already over)
when it ended, its category and the related queries people typed with it. Windows of 4
hours, 24 hours, 48 hours or 7 days. **You only pay for trends that are actually
delivered.**

### Why this scraper

- **The full list, not the top 10.** Google's public RSS feed stops at 10 trends per
  country. This actor reads the same data the "Trending now" page reads: in a test on
  13-09-2026 that was 227 trends for the Netherlands in 24 hours and 2,633 for the
  United States in 7 days.
- **Filters that save money.** Keep only trends that are still rising, set a minimum
  search volume, or pick categories such as Sports, Technology or Business and Finance.
  Filtered-out trends are never charged.
- **One flat table across countries.** Paste 50 country codes and get one dataset with
  the country and rank on every row, ready to compare what is trending where.
- **Built on a lightweight route.** One request per country, about 0.3 KB per trend and
  under a second per country in testing, which is where the low price comes from.
- **Still works.** The `dailytrends` endpoint that most libraries and tutorials call has
  answered 404 since 2025. This actor uses the route behind the current page.

### Who this is for

Newsrooms and content teams deciding what to write about today. SEO and social teams
catching a topic while it is still rising. Market researchers comparing what countries
care about. Anyone who wants a feed of rising search demand without refreshing a page.

### Who this is not for

This actor reports **what is trending**. It does not give interest-over-time curves or
year-long comparisons for your own keywords; for that, use the Google Trends Batch
Scraper from the same publisher. Search volume is Google's rounded figure (100, 200,
500, 1,000 ... 5,000,000), not an exact count, because that is what Google publishes.

### Input example

```json
{
    "countries": ["US", "GB", "NL"],
    "hours": "24",
    "maxTrendsPerCountry": 500,
    "activeOnly": false,
    "minSearchVolume": 0,
    "categories": [],
    "language": "en"
}
```

Supported categories: Autos and Vehicles, Beauty and Fashion, Business and Finance,
Climate, Entertainment, Food and Drink, Games, Health, Hobbies and Leisure, Jobs and
Education, Law and Government, Other, Pets and Animals, Politics, Science, Shopping,
Sports, Technology, Travel and Transportation.

### Output example

```json
{
    "country": "NL",
    "hours": 24,
    "rank": 1,
    "title": "fortuna - ajax",
    "searchVolume": 100000,
    "growthPercent": 1000,
    "startedAt": "2026-09-12T17:10:00Z",
    "endedAt": null,
    "isActive": true,
    "categories": ["Sports"],
    "relatedQueries": ["fortuna - ajax", "oscar gloukh", "stand eredivisie", "ajax"],
    "trendsUrl": "https://trends.google.com/trends/explore?q=fortuna+-+ajax&geo=NL&date=now+7-d",
    "status": "ok"
}
```

A country that returns nothing produces an error record instead, and is **not** charged:

```json
{
    "input": "XX",
    "status": "error",
    "errorCode": "NO_RESULTS",
    "error": "No trend data for XX; Google Trends does not list trending searches for this country code"
}
```

Error codes: `INVALID_COUNTRY`, `INVALID_CATEGORY`, `NO_RESULTS`, `BLOCKED`. `INPUT_TRUNCATED` appears once when your input is longer than this actor accepts.

### Related actors from steadydata

- [google-trends-batch](https://apify.com/steadydata/google-trends-batch): interest over time for a trend you spotted
- [google-news](https://apify.com/steadydata/google-news): the articles behind the trend

### Pricing

Pay per event: one `trend-listed` event per delivered trend. No charge for countries
that fail, for trends removed by your filters, or as a separate platform-usage
surcharge. Use `maxTrendsPerCountry` as a hard cost ceiling.

### FAQ

**How many trends will I get?**
It depends on the country and the window. Large countries produce a few hundred trends
in 24 hours and a few thousand in 7 days; small countries fewer. The 4-hour window is
the smallest and can be empty on a quiet night, which comes back as a free error record.

**What does `growthPercent` mean?**
Google's own figure for how much the search volume rose compared with the period before,
capped at 1000%. Trends marked 1000% are the ones that came out of nowhere.

**Why is `endedAt` empty on some rows?**
Those trends are still active: Google has not yet marked them as over. `isActive` says
the same thing as a boolean so you can filter on it.

**Which countries work?**
The countries Google Trends itself offers on its Trending now page, around 50. A code it
does not support returns a free `NO_RESULTS` record naming the code.

**Can I run this every hour?**
Yes; that is what the 4-hour window is for. Combine it with `activeOnly` to receive only
what is rising right now.

**Is personal data collected?**
No. Search trends and their related queries are aggregate public data about what many
people search for. Nothing about any individual is collected.

**What happens when Google changes something?**
Internal routes shift from time to time. The actor is monitored daily and fixed fast, and
while it is broken you are not charged, because only delivered trends cost anything.

# Actor input Schema

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

Two-letter country codes, one per row (e.g. US, GB, NL, DE, IN). Each country is one input; a country without trends comes back as an error record at no cost.

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

How far back to look: 4, 24 or 48 hours, or 168 for the last 7 days. Longer windows return more trends, most of them already finished.

## `maxTrendsPerCountry` (type: `integer`):

Cost ceiling: at most this many trends per country, ranked the way Google Trends ranks them. A 24-hour window typically holds 100 to 500 trends, a 7-day window up to 3,000.

## `activeOnly` (type: `boolean`):

Keep only trends that are still rising right now; drop the ones Google marks as ended.

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

Skip trends below this many searches in the window (Google reports volume in steps: 100, 200, 500, 1,000 ... 5,000,000). 0 keeps everything.

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

Optional filter. Leave empty for all categories. Values: Autos and Vehicles, Beauty and Fashion, Business and Finance, Climate, Entertainment, Food and Drink, Games, Health, Hobbies and Leisure, Jobs and Education, Law and Government, Other, Pets and Animals, Politics, Science, Shopping, Sports, Technology, Travel and Transportation.

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

Interface language for the request (hl), e.g. en, nl, de. Trend titles are in the language people searched in and do not change with this setting.

## Actor input object example

```json
{
  "countries": [
    "US",
    "GB",
    "NL"
  ],
  "hours": "24",
  "maxTrendsPerCountry": 500,
  "activeOnly": false,
  "minSearchVolume": 0,
  "categories": [],
  "language": "en"
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "countries": [
        "US",
        "GB",
        "NL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("steadydata/google-trending-searches").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 = { "countries": [
        "US",
        "GB",
        "NL",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("steadydata/google-trending-searches").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 '{
  "countries": [
    "US",
    "GB",
    "NL"
  ]
}' |
apify call steadydata/google-trending-searches --silent --output-dataset

```

## MCP server setup

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

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/5zOj5kwMx2MwekeDN/builds/uX12NBpYKHltEAgrq/openapi.json
