What it does
Google Trends has no official public API, and the website is built for clicking, not for feeding a newsroom alert, a content calendar or an ad team every hour. This actor reads Google's official Trending Now RSS feed for any of the 125 countries the feed accepts and turns it into one row per trend: country, rank, keyword, approximate search traffic parsed to a number (2K+ becomes 2000, with the original text kept), the time the trend started, a picture and the news articles behind it.
Switch on onlyNewSinceLastRun and schedule it, and each run returns only the trends it has not delivered before for that country, keyword and start day. Skipped trends are not charged, so an hourly monitor costs only what is genuinely new.
There is a second, best-effort part for keyword research: up to 20 keywords with interest over time, interest by region and top + rising related queries, for any timeframe, location, category and search type (web, news, YouTube, images or Google Shopping). Google rate-limits those endpoints, so when it answers with a 429, 403 or CAPTCHA the actor stops that part, keeps what it already has and charges nothing for unfinished keywords.
How it works
- For each country in
geos, the actor requests Google's official Trending Now RSS feed (one request per country, paced at about one per second). - Each trend becomes a row with its rank, keyword, traffic bucket parsed to a number, start time, picture and news articles (title, URL, publisher, picture).
- With
onlyNewSinceLastRun, trends already returned under the samemonitorNameare skipped and not charged; the memory lives in the key-value store trends-seen-<name>. - If you add
keywords, it calls the same JSON endpoints the Trends website uses, one request every 3 seconds, and returns timeline, region and related-query rows. - On any rate limit or CAPTCHA it stops the explore part for the rest of the run, never retries blocks, uses no proxies, and respects robots.txt and your run budget.
Input example
A typical run input (JSON). Every field is also available as a form in the Apify console.
{
"geos": [
"US",
"GB",
"DE",
"BR"
],
"maxItemsPerGeo": 10,
"onlyNewSinceLastRun": true,
"monitorName": "newsroom-hourly",
"keywords": [],
"timeframe": "today 12-m",
"property": "web"
}All input fields
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
geos | array | no | ["US"] | Countries to read Trending Now for (one request per country). All 125 countries the official feed accepts are listed. Leave empty to only explore keywords. |
maxItemsPerGeo | integer | no | 10 | Upper limit of trending searches per country. The feed currently lists up to 10 per country (fewer for small countries). |
onlyNewSinceLastRun | boolean | no | false | For schedules: skip trends this monitor already returned (same country, keyword and start day). Skipped trends are not charged. |
monitorName | string | no | "default" | Name of the seen-trends memory used by 'Only new trends' (stored in the key-value store trends-seen-<name>). Use one name per schedule. |
keywords | array | no | [] | Search terms to explore (up to 20). Each keyword returns interest over time, interest by region and top + rising related queries. Values are relative (0-100) within each comparison. |
keywordsPerComparison | integer | no | 5 | Keywords are compared in groups of this size (Google allows at most 5). Use 1 to explore every keyword on its own scale. |
timeframe | string | no | "today 12-m" | Time range for interest over time, regions and related queries. |
customTimeframe | string | no | "" | Optional "YYYY-MM-DD YYYY-MM-DD" range; overrides Timeframe. |
exploreGeo | string | no | "" | Country (US), region (US-CA) or empty for worldwide. Regions in the output are the next level down (countries, states, ...). |
category | integer | no | 0 | Google Trends category id (0 = all categories; e.g. 71 = Food & Drink, 7 = Finance). |
property | string | no | "web" | Which Google search property to measure. |
Output example
Trending Now rows look like this, one per trend and country, with the parsed traffic number next to Google's original bucket text:
| geo | rank | keyword | approxTraffic | approxTrafficText | startedAt | newsCount | topNewsTitle |
|---|---|---|---|---|---|---|---|
| US | 3 | slayground | 2000 | 2000+ | 2026-10-20T14:00:00.000Z | 3 | The First ‘Slayground’ Trailer Teases Death as a Treat |
| GB | 1 | interest rate | 200 | 200+ | 2026-10-20T14:10:00.000Z | 3 | The Treasury market has been acting weird lately |
| DE | 2 | psg barca | 500 | 500+ | 2026-10-20T14:10:00.000Z | 3 | Fußball: Wird der Champions-League-Knaller verschoben? PSG – Barça |
| BR | 2 | tocantins | 2000 | 2000+ | 2026-10-20T13:30:00.000Z | 3 | Os números da pesquisa Real Time Big Data para governo do Tocantins no 2º turno |
Pricing
Pay per event: you are charged only for the results you receive, with no subscription. Set a maximum total charge on any run and it stops cleanly at the cap.
| Charged for | When | Price | Per 1,000 | Worked example |
|---|---|---|---|---|
| Trend result | Charged per Trending Now row (keyword, traffic, start time, picture, news articles) | $0.0005 | $0.50 | 10 countries × 10 trends = $0.05; an hourly 'only new' schedule pays only for trends it hasn't returned before |
| Keyword explored | Charged per keyword whose interest over time, interest by region and related queries were all fetched (every row for it included) | $0.003 | $3 | 5 keywords = $0.015 for ~90 timeline rows + regions + 50 related queries each; keywords Google rate-limited are free |
| Actor Start (platform start fee) | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.00005 | — | One run at 256 MB = $0.0000125 |
Prices are read from the live Apify Store listing when this page is built. The listing is always authoritative.
Try Google Trends Scraper on Apify. Pay only for the results you get.
Run on Apify →Use cases
Newsroom and social alerts
Schedule the actor hourly with only-new mode for the countries you cover and push each fresh row to Slack or a CMS. Each alert carries the top news headline and link, so an editor can see why a term is spiking without opening Google.
Content and SEO calendars
Collect a daily snapshot of trending searches for your markets and look for topics that keep reappearing. The news articles attached to each trend give writers a starting point for a timely post.
Ad and campaign timing
Spot sudden interest in a team, product or event in a specific country and adjust bids or creatives while the trend is still rising. Approximate traffic is a bucketed estimate, so treat it as a ranking signal rather than a volume figure.
Keyword comparison for a brief
Add up to 20 keywords to get interest over time, interest by region and rising related queries in one dataset. This part is best-effort and may be cut short by Google's rate limits, but you only pay for keywords that were fully fetched.
How it compares
| ActorForge Google Trends | Using the Trends website by hand | Unofficial Trends libraries on your own server | |
|---|---|---|---|
| Trending searches for many countries in one run | Yes, 125 countries | One country at a time | Partial, depends on the library |
| Traffic parsed to a number | Yes, plus original text | No, text only | Partial |
| News articles per trend | Yes, title, URL, publisher, picture | Yes, on screen | Partial |
| Only-new monitoring for schedules | Built in, skipped trends free | No | You build it |
| Full Trending Now page with 24/48-hour filters | No, the feed lists about 10 newest trends per country | Yes | Partial |
| Interest over time and related queries | Best-effort, stops on rate limits | Yes, reliable for a person | Best-effort, same rate limits |
| Cost | $0.50 per 1,000 trends, $3 per 1,000 keywords explored | Free, your time | Free code, your server and maintenance |
If you need a handful of keyword comparisons once in a while, the Trends website itself is free and more reliable for a person than any automated call. This actor is the better fit when you want trending searches across many countries on a schedule, as structured data.
Limits and honest notes
- Trending Now comes from Google's official RSS feed, which currently lists about 10 trends per country (fewer for small countries) — the newest ones, not the full Trending Now page with 24/48-hour filters. Traffic is Google's bucketed estimate (200+, 2K+, 1M+), not an exact count.
- The 125 countries in the input list are every ISO country code the feed accepted on 2026-10-20; Google answers unknown codes with an error.
- Interest over time / by region / related queries is best-effort. It uses the same JSON endpoints as trends.google.com and Google rate-limits them, especially from shared cloud IPs. On a 429, 401/403, CAPTCHA or 'unusual traffic' page the actor stops that part for the rest of the run (blocks are never retried and no proxies are used; only network errors and Google 5xx errors are retried once), delivers what it already has and charges nothing for unfinished keywords. Run small keyword lists and try again later if you are blocked.
- Requests are sequential and paced (one every 3 seconds for explore, one per second for the feed), so 20 keywords take about 1-2 minutes.
- Values are Google's relative scores (0-100 within a comparison, region values 0-100 per keyword), not search volumes. Related 'rising' values are growth percentages; 'Breakout' means more than +5000%. Regions without enough data are left out.
- robots.txt on trends.google.com is re-read every run and respected: the /explore? web pages are never requested (trendsUrl in the output is only a link for you to open).
- The run's spend limit is respected: rows are charged before they are delivered and the run stops when the limit is reached.
FAQ
Is there an official Google Trends API for trending searches?
Google publishes Trending Now as an RSS feed per country, which this actor reads and normalizes. The interest-over-time, region and related-query data uses the same JSON endpoints the Trends website calls, which are rate-limited, so that part is best-effort.
How many trending searches per country does it return?
The official feed currently lists up to about 10 of the newest trends per country, fewer for small countries. You can cap it lower with maxItemsPerGeo. It is not the full Trending Now page with its 24 and 48-hour filters.
Is the traffic number an exact search count?
No. Traffic is Google's bucketed estimate such as 200+, 2K+ or 1M+. The actor parses it to a number (2K+ becomes 2000) so you can sort and filter, and keeps the original text in approxTrafficText.
What happens if Google blocks the keyword explore part?
On a 429, 401/403, CAPTCHA or unusual-traffic page the actor stops the explore part for the rest of the run, delivers what it has and charges nothing for keywords it could not finish. Trending Now from the RSS feed is unaffected. Run smaller keyword lists and try again later.
How do I only get new trends on an hourly schedule?
Set onlyNewSinceLastRun to true and give each schedule its own monitorName. Trends already returned for the same country, keyword and start day are skipped and not charged.
Are the interest values search volumes?
No. They are Google's relative scores from 0 to 100 within each comparison (up to 5 keywords at once), and region values are 0-100 per keyword. Rising related queries show growth percentages, and Breakout means more than +5000%.
Use it from code
Run the actor through the Apify API with the input above.
cURL
curl -X POST "https://api.apify.com/v2/acts/actor-forge~google-trends/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"geos": ["US", "GB", "DE", "BR"], "maxItemsPerGeo": 10, "onlyNewSinceLastRun": true, "monitorName": "newsroom-hourly", "keywords": [], "timeframe": "today 12-m", "property": "web"}'JavaScript (Node.js)
// Node.js 18+ (built-in fetch). Set APIFY_TOKEN in your environment.
const input = {
"geos": [
"US",
"GB",
"DE",
"BR"
],
"maxItemsPerGeo": 10,
"onlyNewSinceLastRun": true,
"monitorName": "newsroom-hourly",
"keywords": [],
"timeframe": "today 12-m",
"property": "web"
};
const res = await fetch(
"https://api.apify.com/v2/acts/actor-forge~google-trends/run-sync-get-dataset-items",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIFY_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(input),
}
);
const items = await res.json();
console.log(items.length, items[0]);Python
# pip install apify-client (set APIFY_TOKEN in your environment)
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"geos": [
"US",
"GB",
"DE",
"BR"
],
"maxItemsPerGeo": 10,
"onlyNewSinceLastRun": True,
"monitorName": "newsroom-hourly",
"keywords": [],
"timeframe": "today 12-m",
"property": "web"
}
run = client.actor("actor-forge/google-trends").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)The run-sync-get-dataset-items endpoint waits for the run (up to 5 minutes) and returns the dataset rows directly. For longer runs, start the run asynchronously and read the dataset when it finishes, as the Python example does. Replace APIFY_TOKEN with your own token from the Apify console.
Step-by-step guides
How to Track Google Trends Trending Searches by Country
Run the ActorForge Google Trends actor with a list of country codes, schedule it daily with only-new mode, and keep a small pandas history to see…
Related actors
Keyword Suggestions — Google, YouTube, Bing Autocomplete
Bulk keyword suggestions from Google, YouTube, Bing and Baidu autocomplete. Expand each seed with a-z, question words or prepositions for long-tail…
$0.30 per 1,000 · seed expandedGoogle Ads Transparency Scraper — Competitor Ads | $0.60/1K
Scrape competitor ads from the Google Ads Transparency Center by domain, advertiser name or ID: format, first/last shown, regions, impressions, ad…
$0.60 per 1,000 · ad resultChina Trending Topics — Weibo, Douyin, Baidu Hot Search
Real-time trending topics from China's top five platforms in one dataset: Weibo hot search (微博热搜), Douyin hot list (抖音热榜), Baidu hot search (百度热搜)…
$2 per 1,000 · topic resultApp Store & Google Play Scraper — Apps, Charts, Reviews
Scrape Google Play and App Store app details (rating, histogram, installs, price, version, developer, screenshots, similar apps), Apple top charts…
$0.80 per 1,000 · app resultTry Google Trends Scraper on Apify. Pay only for the results you get.
Run on Apify →