Google Trends Trending Now Scraper — Searches + News by Country avatar

Google Trends Trending Now Scraper — Searches + News by Country

Pricing

from $2.00 / 1,000 per trending search returneds

Go to Apify Store
Google Trends Trending Now Scraper — Searches + News by Country

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

Scrapers Delight

Maintained by Community

Actor 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 ActorOthers
Rows per country per 24 hthe whole list Google publishes — 457–606 for the US on repeat pulls10/day (RSS-based Actors)
Countries per runas many as you list — one request eachone geo string per run
Related news articles on the rowyes, title + URL + source + time + imagemostly no; one article or none
Growth %, category, breakdown keywordsyespartial
Start feenone$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 + searchVolume together. 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.

  1. searchVolume is a bucket, not a count. Google publishes 100 / 200 / 500 / 1K / 2K / 5K / 10K / 20K / 50K / 100K / 200K / 500K / 1M+ and nothing finer. searchVolumeLabel is the same number as Google prints it ("100K+"). Do not add buckets up and call it traffic.
  2. percentGrowth is Google's rounded figure (50, 75, 100, 200 … 1000). 1000 means "1,000% or more" — it is capped, so every breakout trend reads 1000.
  3. A 7-day pull is big. 2,959 rows for the US alone on 2026-08-22, 2,273 for GB. With maxItems: 0 and twelve countries you are asking for 20,000+ rows. maxItems (default 100) is your cost cap — set it deliberately.
  4. The same query can appear twice in a 7-day window — as two different trends with two different startedAt times (a nightly sports fixture trends every evening). They are two rows with two trendIds, because Google counts them as two trends. Within one run a given trendId is never delivered twice.
  5. 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.

GroupFieldsExample
IdentitytrendId, query, normalizedQuery, rankUS:1787350200:blue jays vs yankees · blue jays vs yankees · 1
Geogeo, geoNameUS · United States
SizesearchVolume, searchVolumeLabel, percentGrowth100000 · 100K+ · 1000
TimingstartedAt, endedAt, isActive, activeHours2026-08-21T22:10:00Z · null · true · 19.4
TopiccategoryIds[], categories[], breakdownKeywords[], breakdownKeywordCount[17] · ["Sports"] · ["blue jays vs yankees","blue jays - yankees","mason fluharty"] · 3
NewsnewsEnriched, newsArticleCount, newsArticles[]{title,url,source,publishedAt,imageUrl}true · 3 · CBS Sports / Sportsnet / Yahoo Sports
ProvenancetimeframeHours, language, trendsUrl, exploreUrl, scrapedAt24 · 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.

FieldFillNotes
trendId / query / normalizedQuery / geo / geoName / rank100%
searchVolume / searchVolumeLabel100%buckets on this pull: 1K+ 2 · 2K+ 14 · 5K+ 24 · 10K+ 22 · 20K+ 23 · 50K+ 3 · 100K+ 10 · 200K+ 2
percentGrowth100%
startedAt / isActive / activeHours100%
categoryIds / categories100%Sports 48 · Law and Government 16 · Entertainment 14 · Other 8 · Business and Finance 8 …
breakdownKeywords / breakdownKeywordCount100%median 2 keywords per trend, mean 4.1 (one row carried 42)
newsEnriched / newsArticleCount / newsArticles100%2.98 articles per trend; all 298 articles carried title, URL, source, publishedAt and imageUrl
timeframeHours / language / trendsUrl / exploreUrl / scrapedAt100%
endedAt1%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 Schedule0 */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:

  • rank is the position in Google's own list for that geo and window, recorded before any sortBy re-ordering — so a sortBy: "volume" dataset shows ranks like 214, 333, 171.
  • activeHours is hours from startedAt to endedAt, or to now for an active trend.
  • trendId is geo:startEpoch:normalizedQuery — stable across runs, use it to dedupe a scheduled feed.

Input

FieldTypeDefaultWhat it does
geosstring list["US"]Country or region codes as Google Trends writes them (US, GB, US-CA). One request per geo.
hoursselect"24"4, 24, 48 or 168 — the four windows the page offers.
categoriesmulti-select[]Keep only trends in these categories (ids or names). Applied before billing.
trendStatusselectallactive (no endedAt) · ended · all.
minSearchVolumeinteger0Drop trends below this bucket.
sortByselectdefaultGoogle's order · search volume · most recent · growth %. Applied per geo before the caps.
includeNewsbooleantrueAttach related news articles. Off = no news event charged.
maxNewsPerTrendinteger3Cap articles per trend (max 10). Google's news lookup returns at most 3, so higher values change nothing.
maxItemsinteger100Your hard cost cap across all geos. 0 = everything.
maxItemsPerGeointeger0Per-geo cap so one big country does not use the whole budget.
languagestringen-USGoogle Trends locale (hl) for geo names and linked-news language.
proxyConfigurationproxyApify datacenterGoogle 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.

RunRowsCost
The shipped default (US, 24 h, 100 rows, news on)100$0.30
Ten countries × top 50 by volume, news on500$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. maxItems cannot 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 trendId if 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 (
    UK: Google returned no trending rows … unknown geo code?
    ) before the run moves on to the next geo. A code that is not shaped like an ISO country/region code at all ("USA") is dropped before the request — and if that leaves no valid geos the run falls back to US and says so in the log. Codes must be the ones Google Trends uses (GB, not UK).
  • 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: 0 and 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):

RungTrend feedNews batches
Direct, no proxy9/9 HTTP 200
Apify proxy, datacenter20/20 geos, 5,880 rows20/20 batches, 200/200 trends with articles
Apify RESIDENTIAL + country US19/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 teamsbreakdownKeywords are the exact query variants to target while a topic is rising; percentGrowth + searchVolume say 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.


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.