Google Trends Trending Now Scraper — Searches + News by Country
Pricing
from $2.00 / 1,000 per trending search returneds
Google Trends Trending Now Scraper — Searches + News by Country
Get Google Trends "Trending Now" searches for any country or region: up to 600+ live trending queries per geo with search volume, % growth, start/end time, category, breakdown keywords and related news articles. Many geos per run, 4h–7 day windows. No login, no browser, no start fee.
Pricing
from $2.00 / 1,000 per trending search returneds
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Turn the Google Trends "Trending Now" feed into a clean table. One row per trending query per country or region: query, geo, geoName, rank, searchVolume, searchVolumeLabel, percentGrowth, startedAt, endedAt, isActive, activeHours, categories, breakdownKeywords and newsArticles (title, URL, source, published time, image). Pick the window (4 h / 24 h / 48 h / 7 days), filter by category, status and volume, and pull many countries in one run. No login. No browser. No CAPTCHA solving. No start fee.
Scope: 606 trending searches for the US in the past 24 hours, 2,959 in the past 7 days —
counted live off Google's own feed on 2026-08-22, not the 10-a-day the public RSS feed
publishes. Every one of the 25 fields was 100% filled on 100 live rows (the only exception
is endedAt, which is null on purpose while a trend is still running — so it is filled on
only ~1–2% of a 24 h pull (nearly everything is still live) and on 93% of a 7-day pull).
{"geos": ["US"],"hours": "24","maxItems": 100,"includeNews": true}
Click Try for free and hit Start — that is literally the input the Actor ships with. A run on those shipped defaults returned 100 rows in under 10 seconds, 100% of them with at least one related news article (298 articles on 100 trends, every article with title, URL, source, published time and image).
The wedge: the whole feed, with news, for many countries, at one flat price
Google's Trending Now page is the fastest public signal of what people are searching for right now, and it is the data behind every "trending keyword" dashboard, newsroom alert and content-calendar tool. The public RSS feed only publishes 10 items per day per country and no volume numbers. The page itself lists hundreds per country per day with a search-volume bucket, a growth percentage, the exact start time, a category, the "trend breakdown" keywords and the news Google links to each trend — and that is what this Actor returns.
Measured against the other Trending Now Actors on the Store on 2026-08-22:
| This Actor | Others | |
|---|---|---|
| Rows per country per 24 h | the whole list Google publishes — 457–606 for the US on repeat pulls | 10/day (RSS-based Actors) |
| Countries per run | as many as you list — one request each | one geo string per run |
| Related news articles on the row | yes, title + URL + source + time + image | mostly no; one article or none |
| Growth %, category, breakdown keywords | yes | partial |
| Start fee | none | $0.005–$0.02 per run on the two nearest rivals |
| Price per row | $0.002 (+ $0.001 only when news is attached) | $0.001–$0.003 + start fee |
Two things only this row has:
percentGrowth+searchVolumetogether. Google publishes both; a 1,000% growth on a 2K+ bucket is a brand-new story, a 50% growth on a 500K+ bucket is a story that has already peaked. Sorting by either is an input option.breakdownKeywords— the "trend breakdown" list Google shows under a trend: the query variants people typed. The first entry is the headline query itself; on the measured 100 rows the median trend carried 2 keywords and the mean was 4.1, with the long tail running to 42 on a big story.
Read this before you buy rows
Five things that would otherwise turn into a refund request.
searchVolumeis a bucket, not a count. Google publishes 100 / 200 / 500 / 1K / 2K / 5K / 10K / 20K / 50K / 100K / 200K / 500K / 1M+ and nothing finer.searchVolumeLabelis the same number as Google prints it ("100K+"). Do not add buckets up and call it traffic.percentGrowthis Google's rounded figure (50, 75, 100, 200 … 1000). 1000 means "1,000% or more" — it is capped, so every breakout trend reads 1000.- A 7-day pull is big. 2,959 rows for the US alone on 2026-08-22, 2,273 for GB. With
maxItems: 0and twelve countries you are asking for 20,000+ rows.maxItems(default 100) is your cost cap — set it deliberately. - The same query can appear twice in a 7-day window — as two different trends with two
different
startedAttimes (a nightly sports fixture trends every evening). They are two rows with twotrendIds, because Google counts them as two trends. Within one run a giventrendIdis never delivered twice. - Category filtering is done here, not by Google. Google's feed ignores the category parameter on the request (measured), so the Actor reads the category ids on every row and drops what you did not ask for before billing — filtered rows cost nothing, and the log tells you how many were dropped.
What you get
One row per trending query per geo. Times are ISO-8601 UTC. searchVolume is an integer
bucket; percentGrowth is an integer percent.
| Group | Fields | Example |
|---|---|---|
| Identity | trendId, query, normalizedQuery, rank | US:1787350200:blue jays vs yankees · blue jays vs yankees · 1 |
| Geo | geo, geoName | US · United States |
| Size | searchVolume, searchVolumeLabel, percentGrowth | 100000 · 100K+ · 1000 |
| Timing | startedAt, endedAt, isActive, activeHours | 2026-08-21T22:10:00Z · null · true · 19.4 |
| Topic | categoryIds[], categories[], breakdownKeywords[], breakdownKeywordCount | [17] · ["Sports"] · ["blue jays vs yankees","blue jays - yankees","mason fluharty"] · 3 |
| News | newsEnriched, newsArticleCount, newsArticles[]{title,url,source,publishedAt,imageUrl} | true · 3 · CBS Sports / Sportsnet / Yahoo Sports |
| Provenance | timeframeHours, language, trendsUrl, exploreUrl, scrapedAt | 24 · en-US · link to the trend on Google Trends |
The dataset ships with a saved table view (Trending searches) so the Console shows rank, query, geo, volume, growth, start time, status, categories and news count without any setup.
Field fill — measured on 100 live rows
The shipped default (US, past 24 hours, 100 rows, news on), 2026-08-22 17:38 UTC. Sorted by fill.
| Field | Fill | Notes |
|---|---|---|
trendId / query / normalizedQuery / geo / geoName / rank | 100% | |
searchVolume / searchVolumeLabel | 100% | buckets on this pull: 1K+ 2 · 2K+ 14 · 5K+ 24 · 10K+ 22 · 20K+ 23 · 50K+ 3 · 100K+ 10 · 200K+ 2 |
percentGrowth | 100% | |
startedAt / isActive / activeHours | 100% | |
categoryIds / categories | 100% | Sports 48 · Law and Government 16 · Entertainment 14 · Other 8 · Business and Finance 8 … |
breakdownKeywords / breakdownKeywordCount | 100% | median 2 keywords per trend, mean 4.1 (one row carried 42) |
newsEnriched / newsArticleCount / newsArticles | 100% | 2.98 articles per trend; all 298 articles carried title, URL, source, publishedAt and imageUrl |
timeframeHours / language / trendsUrl / exploreUrl / scrapedAt | 100% | |
endedAt | 1% | null = still trending. On a 7-day US pull (2,959 rows) it is filled on 93.4% — 195 trends were still active |
Every run prints its own measured fill in the log. A 7-day, 12-country run under a short
time budget printed 5,229 rows at 100% on every field except endedAt (92.6%) and
newsArticles (56.2% — 2,269 rows had to skip news enrichment to stay inside the run's time
limit; give the run a longer timeout to get them).
How to run it
1. One country, past 24 hours (the shipped default)
{ "geos": ["US"], "hours": "24", "maxItems": 100 }
2. Many countries in one run
{"geos": ["US", "GB", "CA", "AU", "IN", "DE", "FR", "BR", "JP", "MX"],"hours": "24","maxItemsPerGeo": 50,"maxItems": 500,"sortBy": "volume"}
Each geo is one request. sortBy: "volume" + maxItemsPerGeo: 50 = the 50 biggest trends
in each of the ten countries. Regions work the same way: "US-CA", "US-NY", "GB-ENG",
"IN-MH" — measured 2026-08-22: US-CA 250 rows / 24 h, 1,349 / 7 days.
3. A category feed — e.g. Business + Technology, active only
{"geos": ["US"],"hours": "48","categories": ["3", "18"],"trendStatus": "active","minSearchVolume": 10000,"maxItems": 0}
Category ids (Google's own): 1 Autos and Vehicles · 2 Beauty and Fashion · 3 Business and
Finance · 20 Climate · 4 Entertainment · 5 Food and Drink · 6 Games · 7 Health · 8 Hobbies and
Leisure · 9 Jobs and Education · 10 Law and Government · 11 Other · 13 Pets and Animals ·
14 Politics · 15 Science · 16 Shopping · 17 Sports · 18 Technology · 19 Travel and
Transportation. Names are accepted too ("Technology").
4. The whole 7-day feed, no news (cheapest bulk pull)
{ "geos": ["US"], "hours": "168", "includeNews": false, "maxItems": 0 }
~3,000 rows at $0.002 = about $6. Turning news off removes the news event entirely; the rows still carry every other field.
Daily cron feed
Save the input as a Task (Console → the Actor → Save as Task) and attach a Schedule —
0 */4 * * * for a 4-hour window every four hours gives you a continuous, deduplicated
trend log (any wider gap between runs than the window itself loses short-lived trends; dedupe
across runs on trendId). The dataset is available over the REST API and through the standard
Apify integrations (Zapier, Make, n8n, webhooks, MCP). Starting a run
from the API:
curl -X POST "https://api.apify.com/v2/acts/scrapersdelight~google-trends-trending-now-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"geos":["US","GB"],"hours":"4","maxItems":200}'
Sample row
A real row from an actual run, captured 2026-08-22 17:32 UTC.
{"trendId": "US:1787350200:blue jays vs yankees","query": "blue jays vs yankees","normalizedQuery": "blue jays vs yankees","geo": "US","geoName": "United States","rank": 1,"searchVolume": 100000,"searchVolumeLabel": "100K+","percentGrowth": 1000,"startedAt": "2026-08-21T22:10:00.000Z","endedAt": null,"isActive": true,"activeHours": 19.4,"categoryIds": [17],"categories": ["Sports"],"breakdownKeywords": ["blue jays vs yankees", "blue jays - yankees", "mason fluharty"],"breakdownKeywordCount": 3,"newsEnriched": true,"newsArticleCount": 3,"newsArticles": [{"title": "Yankees vs. Blue Jays prediction, odds, line, time: 2026 MLB picks for Saturday, Aug. 22 by proven model","url": "https://www.cbssports.com/betting/news/yankees-blue-jays-prediction-odds-line-start-time-2026-mlb-picks-for-saturday-august-22/","source": "CBS Sports","publishedAt": "2026-08-22T16:07:55.000Z","imageUrl": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcTR640lIFN8_MS0qBFEOvH_HgIiUMVi1eLKem6ZimIJmPBjvk4ab_nLX3AI_vc"},{"title": "Blue Jays left-hander Mason Fluharty to open game vs. Yankees on Friday","url": "https://www.sportsnet.ca/mlb/article/blue-jays-left-hander-mason-fluharty-to-open-game-vs-yankees-on-friday/","source": "Sportsnet.ca","publishedAt": "2026-08-21T20:57:00.000Z","imageUrl": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTmalFI3Tgpj1H7cJ8cZejJ6JNltXXj0Fyn5h5oNaEAyqJC3tvB6LNrGgosp5s"},{"title": "Jays @ Yankees Game Thread","url": "https://sports.yahoo.com/articles/jays-yankees-game-thread-143114881.html","source": "Yahoo Sports","publishedAt": "2026-08-22T14:31:14.000Z","imageUrl": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ9S9UykDnFhvOSiqa4D727nJOpC2fldZSFNU9GjT2KSuWddRO-HF9MCstLjNg"}],"timeframeHours": 24,"language": "en-US","trendsUrl": "https://trends.google.com/trending?geo=US&hl=en-US&hours=24&q=blue%20jays%20vs%20yankees","exploreUrl": "https://trends.google.com/trends/explore?q=blue%20jays%20vs%20yankees&geo=US&date=now%201-d&hl=en-US","scrapedAt": "2026-08-22T17:32:18.239Z"}
Fields people misread:
rankis the position in Google's own list for that geo and window, recorded before anysortByre-ordering — so asortBy: "volume"dataset shows ranks like 214, 333, 171.activeHoursis hours fromstartedAttoendedAt, or to now for an active trend.trendIdisgeo:startEpoch:normalizedQuery— stable across runs, use it to dedupe a scheduled feed.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
geos | string list | ["US"] | Country or region codes as Google Trends writes them (US, GB, US-CA). One request per geo. |
hours | select | "24" | 4, 24, 48 or 168 — the four windows the page offers. |
categories | multi-select | [] | Keep only trends in these categories (ids or names). Applied before billing. |
trendStatus | select | all | active (no endedAt) · ended · all. |
minSearchVolume | integer | 0 | Drop trends below this bucket. |
sortBy | select | default | Google's order · search volume · most recent · growth %. Applied per geo before the caps. |
includeNews | boolean | true | Attach related news articles. Off = no news event charged. |
maxNewsPerTrend | integer | 3 | Cap articles per trend (max 10). Google's news lookup returns at most 3, so higher values change nothing. |
maxItems | integer | 100 | Your hard cost cap across all geos. 0 = everything. |
maxItemsPerGeo | integer | 0 | Per-geo cap so one big country does not use the whole budget. |
language | string | en-US | Google Trends locale (hl) for geo names and linked-news language. |
proxyConfiguration | proxy | Apify datacenter | Google Trends is not walled — the cheap rung is the default on purpose. |
Pricing
$0.002 per trending search returned — $2 per 1,000, charged on the trend-scraped event.
Plus $0.001 per row that actually receives news articles (news-articles-added) — charged
only when at least one article came back, never when news is off or Google linked none. No
start fee. No monthly fee from this Actor.
| Run | Rows | Cost |
|---|---|---|
| The shipped default (US, 24 h, 100 rows, news on) | 100 | $0.30 |
| Ten countries × top 50 by volume, news on | 500 | $1.50 |
| US, full 7-day feed, news off | ~2,960 | $5.92 |
| US, full 7-day feed, news on | ~2,960 | $8.88 |
- You are charged for rows delivered. Rows removed by your category / status / volume filters, and rows dropped as duplicates, are never charged.
- Rows are charged as they are pushed (
Actor.pushData(items, 'trend-scraped')), per geo, so a budget cap gives you whole rows and stops — never a half-billed dataset. - News is billed only where it ships. If your run's charge limit leaves room for the trend rows but not their news, the Actor ships those rows without articles rather than shipping unbilled ones, and says so in the log.
Honest limits
- Volume is a bucket, growth is capped at 1000%. That is all Google publishes; there is no finer number to get. If you need a real interest-over-time series for a keyword, that is the Google Trends Explore function — a different dataset, not this one.
- Google decides how many trends a geo has. Small markets are short: SE returned 115 rows
for 24 h, ZA 135, AR 149, against 606 for the US.
maxItemscannot raise a geo above what the feed holds; the log reports the raw count per geo. - No historical backfill. The longest window is 7 days. Run it on a schedule and dedupe on
trendIdif you want a longer record. - An unknown geo code returns no rows, not an error. A code Google does not know (
"UK") is requested and comes back empty with a warning () before the run moves on to the next geo. A code that is not shaped like an ISO country/region code at all (UK: Google returned no trending rows … unknown geo code?"USA") is dropped before the request — and if that leaves no valid geos the run falls back toUSand says so in the log. Codes must be the ones Google Trends uses (GB, notUK). - News links are Google's picks — 1 to 3 per trend, 3 on almost every enriched row (97 of
100 on the live default run). A trend with no linked article ships with
newsArticleCount: 0and is not charged the news event. - No login, no cookies, no CAPTCHA solving service. Everything here is what the public Trending Now page itself requests.
How it works, and what it cost to make reliable
The Trending Now page loads its list from one batchexecute RPC; this Actor calls the same RPC
with the same parameters (geo, language, window), reads the 13-slot rows it returns, and packs
the page's geo-name lookup into the same request — so one country is exactly one request. Related
news is a second RPC that accepts the article ids every row carries; up to 30 trends' worth are
packed into one request (measured 30/30 non-empty in 0.56 s). No HTML parsing, no browser, no
token to mint.
Transport ladder, measured 2026-08-22 through Apify (fresh proxy session per request):
| Rung | Trend feed | News batches |
|---|---|---|
| Direct, no proxy | 9/9 HTTP 200 | — |
| Apify proxy, datacenter | 20/20 geos, 5,880 rows | 20/20 batches, 200/200 trends with articles |
| Apify RESIDENTIAL + country US | 19/20 (one truncated read, not a block) | 19/19 |
Google Trends is not walled on this surface — no Cloudflare, no DataDome, no CAPTCHA on any
rung — so the default is the cheap datacenter rung. Sustained load: a single run made
124 batchexecute requests in a row with 0 failures (5,219 rows across the 2 geos it reached
inside the time budget, 122 news batches). robots.txt on trends.google.com disallows only
/explore? and /trends/explore?, which this Actor never requests (the exploreUrl in each
row is a link for you, not a fetch).
Reliability is built in from line one: a wall-clock budget derived from the run's own timeout gates every request (nothing starts with under 8 s left), every request timeout is clamped to the time remaining, crash nets turn an unforeseen error into a clean stop with a status message, and a run that stops at its time or charge limit still delivers and bills every whole row it collected — measured: 12 countries × 7 days under a ~100 s budget delivered 5,229 whole rows from the first 2 geos and exited clean with the message "Stopped early to stay inside this run's time limit".
Duplicates — measured
On a 7-day US pull of 2,959 rows the key geo + startedAt + normalizedQuery had 0
duplicates, while plain geo + query had 181 — recurring fixtures and daily shows that trend
again each day. The Actor keys on the former, drops any repeat before it is pushed or billed,
and asserts uniqueness across everything it pushed before the run may succeed. Across runs use
trendId to dedupe your own store.
When a run fails
- 0 rows → exits cleanly with a status message naming the cause (every request failed / unknown geo codes / nothing matched your filters). Not a FAILED run, because a quiet hour in a small market is not an error.
- A geo fails 3 attempts → that geo is skipped with a warning; the run continues.
- Duplicate leak → the uniqueness assertion fails the run rather than shipping a dirty dataset.
- Time limit → delivers what it has, status message says so; raise the timeout or trim the geo list for the rest.
Who buys this
- SEO and content teams —
breakdownKeywordsare the exact query variants to target while a topic is rising;percentGrowth+searchVolumesay whether it is still rising. - Newsrooms and media monitoring — the related-news links give a ready context for every trend, per country, on a 4-hour cadence.
- Social and paid-media agencies — category-filtered feeds (Shopping, Entertainment, Games) for reactive creative and ad copy.
- Market and product research — cross-country comparison of what is trending, with a consistent schema per geo.
- AI agents and automations — one call, flat rows, a stable
trendId, pay per row.
FAQ
Does this need a Google account, a login or cookies? No. It requests the same public RPC the Trending Now page requests, logged out.
How many rows does a country have? What Google lists: for the past 24 h on 2026-08-22 — US 606, GB 544, JP 515, DE 424, FR 356, IN 308, BR 308, ES 289, CA 266, MX 232, PL 220, NL 216, KR 215, AU 178, AR 149, ZA 135, SE 115. 7 days is roughly 5× the 24 h number.
Can I get interest-over-time for a keyword? No — that is the Explore function, a different dataset. This Actor is Trending Now only.
Do I get charged for rows a filter removed? No. Category, status and volume filters run before billing.
Will a run ever succeed with zero rows? Yes, cleanly, with a status message saying why. It will never end FAILED for an empty hour.
Legal & fair use
This Actor reads the public Trending Now feed on trends.google.com without logging in and
without touching any path Google's robots.txt disallows. Rows are search queries and links to
publicly published news articles; they contain no personal data beyond what is in a public
search query. Google Trends is a trademark of Google LLC; this Actor is not affiliated with or
endorsed by Google. You are responsible for complying with Google's terms and with how you use
the data.
Feedback
Found a missing field or want a new filter? Open an issue on the Issues tab, and if the Actor earns it, a review on the Reviews tab helps other buyers find it.