Google Trends Scraper — Interest, Rising Queries & Trending
Pricing
from $4.00 / 1,000 search terms
Google Trends Scraper — Interest, Rising Queries & Trending
Google Trends data without a browser: interest over time, interest by region and rising related queries for up to 5 compared terms, plus the full Trending Now list per country with search volume, growth, category and news.
Pricing
from $4.00 / 1,000 search terms
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Get Google Trends data without a browser: interest over time, interest by region and related queries (top and rising, with "Breakout") for up to 5 compared search terms, with a per-term summary (average, latest, peak, momentum). Or get the Trending Now list of a country — up to a few hundred trends with search volume, growth %, start and end time, category, the searches behind each trend and the news stories Google shows.
No Google account, no API key, no browser.
Quick start (API)
curl -X POST "https://api.apify.com/v2/acts/foxlabs~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms": ["chatgpt, gemini, claude"], "geo": "US", "timeframe": "today 12-m"}'
Trending Now:
curl -X POST "https://api.apify.com/v2/acts/foxlabs~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "trending", "trendingGeos": ["US", "GB"], "trendingHours": "24"}'
What you get
Keyword analysis — one row per query (a query is 1 to 5 terms compared in one chart):
| Group | Fields |
|---|---|
| Query | query, terms, geo, geoName, timeframe, timeframeLabel, dateFrom, dateTo, resolution (MINUTE / EIGHT_MINUTE / HOUR / DAY / WEEK / MONTH), category, property |
| Summary per term | summary[]: average (Google's own figure; with many empty points it is lower than the mean of the points shown — 19 vs 31 in one test), latest (last complete point), latestDate, peak (highest complete point; the unfinished last point is not counted), peakDate, momentumPercent (last 4 complete points vs the 4 before) |
| Interest over time | interestOverTime[]: date, label, values (0-100 per term, null where Google has no data for that point), isPartial (the current, unfinished period) |
| Interest by region | interestByRegion[]: geoCode, geoName, values (null for a term without data in that region; cities have latitude / longitude instead of a code); regionValueType, regionResolution |
| Related queries | relatedQueries[term].top[] and .rising[]: query, value, formattedValue (top: "100", "84"; rising: "+250%" or "Breakout"), isBreakout (rising only), exploreUrl |
| Related topics | relatedTopics[term] (off by default, see Notes) |
| Links & status | exploreUrl (the same query on trends.google.com: terms, location, range, category, search type), relatedQueriesStatus, interestByRegionStatus, error, scrapedAt |
Trending Now — one row per trend:
| Field | Meaning |
|---|---|
trendId | Stable ID of the trend period (country + search + start time), for example US-1656ac0022a1. It stays the same between runs while Google keeps the trend's title; Google sometimes renames, splits or merges trends between runs, and the period then gets a new ID |
rank, title, geo, geoName | Position in Google's list, the trend, the country |
searchVolume, searchVolumeLabel | Google's search-volume bucket (100+ … 1M+) |
increasePercent | Growth Google reports for the trend, in steps (50, 75, 100, 200 … 1000). 1000 is the top step and about a quarter of the trends sit on it (181 of 720 in run HkzNaumU8Vjom5oce) |
startedAt, endedAt, isActive | When the trend started, when it ended (empty while active) |
categories, categoryIds | 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 |
relatedQueries | The searches that make up the trend (all of them; up to 68 in our test runs) |
newsArticles[] | title, url, source, publishedAt, imageUrl of the news stories Google shows |
exploreTerm, exploreUrl, windowHours, scrapedAt, error | Link to explore the trend, the window asked for |
The same search can trend twice in one window, and each period is its own row. In a test run, "astros" trended in the US from 02:40 to 05:30 UTC and again from 20:50 to 23:00 UTC on 2026-09-27: two rows, trendId US-e3bf7a6085df and US-1656ac0022a1. So a row is unique by geo + title + startedAt, which is what trendId encodes. The start time Google reports does not change between runs (636 of 636 trends kept it in two runs 58 minutes apart), so trendId lets you merge scheduled runs; a trend Google renamed or merged in the meantime appears under its new ID (2 of 665 shared trends in two runs 15 minutes apart, for example "where to watch patriots game" became "patriots vs jaguars where to watch").
Sample output
Keyword analysis, query chatgpt, gemini, claude, perplexity, copilot, United States, past 12 months (real row from a local test run on 2026-09-27 UTC, arrays trimmed; the platform run an hour later, LFjdHStVzqA8bojvL, differed by a point or two, for example claude latest 19):
{"type": "keywords","query": "chatgpt, gemini, claude, perplexity, copilot","terms": ["chatgpt", "gemini", "claude", "perplexity", "copilot"],"geo": "US","geoName": "United States","timeframe": "today 12-m","dateFrom": "2025-09-27","dateTo": "2026-09-27","resolution": "WEEK","summary": [{ "term": "chatgpt", "average": 78, "latest": 74, "latestDate": "2026-09-20", "peak": 100, "peakDate": "2025-10-12", "momentumPercent": 10 },{ "term": "claude", "average": 18, "latest": 20, "latestDate": "2026-09-20", "peak": 33, "peakDate": "2026-05-24", "momentumPercent": -1 }],"interestOverTime": [{ "date": "2026-09-20", "label": "Sep 20 – 26, 2026", "values": { "chatgpt": 74, "gemini": 32, "claude": 20, "perplexity": 1, "copilot": 6 }, "isPartial": false }],"interestByRegion": [{ "geoCode": "US-CA", "geoName": "California", "values": { "chatgpt": 55, "gemini": 24, "claude": 16, "perplexity": 2, "copilot": 3 } }],"regionResolution": "REGION","regionValueType": "share-of-compared-terms","relatedQueries": {"claude": {"top": [{ "query": "claude code", "value": 82, "formattedValue": "82", "exploreUrl": "https://trends.google.com/trends/explore?q=claude+code&date=today+12-m&geo=US" }],"rising": [{ "query": "claude cowork", "value": 188550, "formattedValue": "Breakout", "isBreakout": true, "exploreUrl": "https://trends.google.com/trends/explore?q=claude+cowork&date=today+12-m&geo=US" }]}},"exploreUrl": "https://trends.google.com/trends/explore?date=today+12-m&q=chatgpt%2Cgemini%2Cclaude%2Cperplexity%2Ccopilot&hl=en-US&geo=US"}
Trending Now, United Kingdom, last 24 hours (real row from a local run on 2026-09-27 UTC; the same trend is in platform runs rhtmfMoMQUPNAUNPY and EenH98bupTt2O0roe):
{"type": "trending","trendId": "GB-f94b81933378","rank": 1,"title": "google's birthday","geo": "GB","startedAt": "2026-09-27T05:10:00.000Z","endedAt": null,"isActive": true,"searchVolume": 1000000,"searchVolumeLabel": "1M+","increasePercent": 1000,"categories": ["Other"],"newsArticles": [{ "title": "Google celebrates its 28th birthday with nostalgic doodle", "url": "https://www.standard.co.uk/news/uk/google-birthday-doodle-28th-b1298537.html", "source": "London Evening Standard", "publishedAt": "2026-09-27T08:11:06.000Z" }]}
Input & filters
| Input | What it does | Default |
|---|---|---|
mode | keywords (keyword analysis) or trending (Trending Now) | keywords |
searchTerms | One query per line; up to 5 comma-separated terms on a line are compared in one chart | — |
geo | Country, or empty for worldwide (250 locations, Google's own list) | worldwide |
geoCode | A country, first-level subregion or US metro code, for example US-CA, GB-ENG, TR-34 or US-NY-501 (New York metro); overrides geo. Checked against Google's own list (3,130 subregions in 192 countries, 301 US metro codes) | — |
timeframe | now 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all (since 2004) or custom with dateFrom / dateTo | today 12-m |
category | Google Trends category ID (the cat= number on trends.google.com), 0 = all; checked against Google's list of 1,132 categories | 0 |
property | web, images, news, youtube, shopping (web, YouTube and Shopping tested) | web |
includeRegions, regionResolution | Region breakdown and its level: auto, COUNTRY, REGION, CITY, DMA (US metro areas) | on, auto |
includeRelatedQueries | Top and rising searches per term | on |
includeRelatedTopics | Related topics per single-term query | off |
trendingGeos | Countries for Trending Now | US |
trendingHours | 4, 24, 48 or 168 hours | 24 |
trendingCategory | One Trending Now category, or all | all |
trendingNewsPerTrend | News stories per trend, 0 = none | 5 |
trendingActiveOnly, maxTrendsPerGeo | Only active trends; cap per country | off, 100 |
maxConcurrency | Queries fetched in parallel | 3 |
proxyConfiguration | Proxy for the requests to Google (see Notes) | Apify residential |
Invalid input stops the run before any request, marked as failed with the reason in its status message: an unknown country, subregion or metro code (for example US-ZZ), an unknown category ID, search type or window, a custom range with a date that does not exist or dateFrom after dateTo, metro areas outside the US. A line with more than 5 terms, or a Trending Now location that is not a country, leaves a free row with the reason in error and the rest of the run continues; if no line or country is valid, the run fails with the reason. If Google still refuses a query (HTTP 400), its free row says so and names the location, category and time range to check. Every run ends with a status message that sums up the result, for example "Done: 7 of 8 queries returned data (1 empty; reasons in SOURCE_REPORT)." A line with the same terms as an earlier line is fetched once; it is listed as "skipped" in SOURCE_REPORT, without a dataset row.
Example inputs
Brand comparison with rising searches:
{ "searchTerms": ["nike, adidas, puma, new balance"], "geo": "US", "timeframe": "today 12-m" }
Seasonality over 5 years, worldwide, by country:
{ "searchTerms": ["electric car", "heat pump", "solar panels"], "timeframe": "today 5-y" }
YouTube search interest in the United Kingdom over the past 90 days:
{ "searchTerms": ["minecraft, roblox, fortnite"], "geo": "GB", "timeframe": "today 3-m", "property": "youtube" }
Custom period with US metro areas:
{ "searchTerms": ["tax refund"], "geo": "US", "timeframe": "custom", "dateFrom": "2025-01-01", "dateTo": "2025-06-30", "regionResolution": "DMA" }
Trending Now in three countries, sports only, active trends:
{ "mode": "trending", "trendingGeos": ["US", "GB", "TR"], "trendingHours": "24", "trendingCategory": "17", "trendingActiveOnly": true }
Use cases
- SEO and content: find rising searches ("Breakout") around a topic and plan content before it peaks.
- Market and brand research: compare up to 5 brands or products, see where each one leads by state or country.
- Seasonality: 5-year weekly series or monthly data since 2004 for demand planning.
- Newsrooms, agencies, traders: watch what a country is searching right now, with volume, growth and the news behind it.
Performance & throughput
Measured on the Apify platform on 2026-09-28 (build 0.1.1, 1 GB memory; time from start to finish, container start included):
| Run | Result | Requests | Time |
|---|---|---|---|
electric car, worldwide, 12 months — the form's starting input (run SoaiDZSd7gLuhuUx9) | 54 weekly points, 49 countries, 25 top + 17 rising queries | 5 | 26 s |
8 queries (one 5-term comparison + 7 single terms), US, 12 months, 3 in parallel (run LFjdHStVzqA8bojvL) | 8 of 8 complete: 53-54 weekly points and 51 regions each, related queries for 12 of 12 terms | 39 | 37 s |
electric car, worldwide, 5 years (run 69OtT6MlXW5JP2bIT) | 262 weekly points, 54 countries | 6 | 18 s |
Trending Now US + TR + GB, 24 hours, 5 news per trend, max 1,000 per country — the default is 100 (run HkzNaumU8Vjom5oce) | 720 trends (US 439, GB 189, TR 92) | 3 | 72 s |
The same Trending Now input on build 0.1.2, 1 GB (run rhtmfMoMQUPNAUNPY) | 725 trends | 3 | 16.8 s |
The same Trending Now input on build 0.1.2, 512 MB (run EenH98bupTt2O0roe) | 723 trends | 3 | 18.1 s |
Memory use peaked at 68-84 MB in these runs. Build 0.1.1 wrote Trending Now rows one at a time; 0.1.2 writes each country's list in one step, which took the same input from 72 s to 16.8 s.
Options measured in local test runs through Apify residential proxy (local):
| Run | Result | Requests | Time |
|---|---|---|---|
tax refund, US, custom 2025-01-01 to 2025-06-30, metro areas | 181 daily points, 209 metro areas | 4 | 32.0 s |
pizza, New York metro (US-NY-501), 12 months | 53 weekly points, 25 cities with data | 5 | 14.0 s |
football, United Kingdom, cities | 54 weekly points, 17 cities with data | 5 | 16.6 s |
minecraft, roblox, fortnite, UK, YouTube search, 90 days | 93 daily points | 3 | 13.1 s |
weather, US, past 4 hours | 238 points, one per minute | 3 | 5.2 s |
bitcoin, worldwide, since 2004 | 273 monthly points | 3 | 11.8 s |
The step follows the range, as on trends.google.com: minutes for the past 4 hours, 8 minutes for the past day, hours for 7 days, days for 90 days and custom half-years, weeks for 12 months and 5 years, months since 2004. A single-term query takes 4 requests (5 with the first cookie exchange of a proxy session); each compared term adds one request for its related queries. A Trending Now country is one request.
Data quality
- Fill (the platform runs above, all sections on): interest over time, region breakdown and related queries were present for 14 of 14 terms; every term had 25 top queries and 16-25 rising queries. Shorter ranges and other search types return shorter lists (YouTube, 90 days: 5-13 rising, run
uS9LdaaTuqhCszX2N; Shopping, 7 days: 12-25 top, 1-2 rising, run2aEgq1gqtyVD8W370). In Trending Now, volume, start time and category were present on 720 of 720 trends and news on 716 (99%). In one local run a Turkish list came back without any news; the Actor now asks again on a new connection when that happens (the repeat had news on 89 of 90). - Region shares check: for compared terms, the shares in every region add up to 100 (51 of 51 US regions, local run).
- Unique rows:
geo+title+startedAt(=trendId) is unique for 720 of 720 Trending Now rows (runHkzNaumU8Vjom5oce);geo+titlealone repeats once, because "astros" trended twice (see above). One row per query in keyword mode. - Links (local check): 6 of 10 sampled news links opened a page whose title matches the article's
newsArticles[].titleword for word; the other 4 could not be opened from our test machine (3 bot checks, 1 TLS error), not a mismatch. An independent check of 10 other links: 7 of 7 opened pages matched, 3 were blocked. - Where the figures come from: most performance and data-quality figures come from platform runs (run IDs above); figures marked local come from local runs through the same residential proxy.
Pricing
Search terms: $4 per 1,000 ($0.004 per term), interest by region and related queries included. Trending Now: $1 per 1,000 trends ($0.001 per trend). Only delivered data is charged; rows that report an error or an empty result are free. Each run also has Apify's Actor start event ($0.00005 per GB of memory; the default 512 MB is one event). Current prices are also on the Pricing tab.
FAQ
Why are the numbers 0-100? Google Trends scales interest to the highest point of the chart (100). Values are relative, not search counts. Compared terms share one scale.
What does isPartial mean? The last point covers a period that has not ended yet (this week, this hour), so it is usually lower.
Why are the region values different for compared terms? With 2-5 terms, Google gives each term's share of the searches in that region (they add up to 100). With one term, the region values are the 0-100 interest scale. regionValueType says which one a row has.
What is "Breakout"? A rising query that grew more than 5,000%. value still holds Google's number for sorting.
Can I track the same terms every week? Yes, schedule the Actor; each run returns the current chart.
Troubleshooting
- A query returned
error: "empty: …": the term has too little search volume in that location and period. Try worldwide or a longer range. - Related topics are empty: see Notes.
- The run failed with "Unknown subregion code" or "Unknown category ID": the code is not in Google's list. The message shows what valid codes look like; category numbers are the
cat=value of a trends.google.com address. - Many queries fail with a rate-limit error: keep the residential proxy on; it lets the Actor retry from a new IP, which it cannot do without a proxy.
Notes, limits & legal
- Related topics: in our tests Google answered automated requests with an empty related-topics list (4 of 4), while related queries were returned. The option stays available and off by default; rows say
"empty"inrelatedTopicsStatuswhen that happens. - Proxy: Apify residential proxy is the default and the setup all figures above were measured with. The keyword endpoints answer the first request of a connection with HTTP 429 and a cookie (Trending Now answers at once); the Actor retries with the cookie and switches to a new residential IP if Google keeps refusing (1 of 72 cookie requests in our tests needed that). Your proxy setting is respected: your own proxy URLs or other Apify proxy groups are used as given, and with the proxy switched off every request comes from one IP, so the Actor cannot switch IP. Those setups were not tested.
SOURCE_REPORTrecords which proxy a run used. - Dates are UTC.
- This Actor reads the public trends.google.com website. It is not affiliated with or endorsed by Google. Use the data in line with Google's terms and the laws that apply to you.
Support
Open an issue on the Issues tab with the run ID and the input.
Changelog
0.1.3 — 2026-09-28
Locations and categories are checked against Google's own lists before the run: an unknown code now fails the run with a clear reason instead of a bare "HTTP 400" row, and US metro codes such as US-NY-501 work. Every run ends with a status message that sums up the result. A proxy you switch off stays off. README corrected after an independent review. See CHANGELOG.md.
0.1.2 — 2026-09-28
Trending Now rows have a stable trendId (one per trend period; stays the same while Google keeps the trend's title) and are written one country at a time instead of one row at a time. Most performance and data-quality figures now come from platform runs. See CHANGELOG.md.
0.1 — 2026-09-28
First version. See CHANGELOG.md.