Google Trends Scraper (interest over time, regions, related) avatar

Google Trends Scraper (interest over time, regions, related)

Pricing

from $1.50 / 1,000 search term processeds

Go to Apify Store
Google Trends Scraper (interest over time, regions, related)

Google Trends Scraper (interest over time, regions, related)

Scrape Google Trends: interest over time, interest by region, related queries, related topics and Trending Now, for any keyword, country and time range. Built-in retries, cookie sessions and proxy rotation. Pay per search term.

Pricing

from $1.50 / 1,000 search term processeds

Rating

0.0

(0)

Developer

ScrapeMole

ScrapeMole

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Trends Scraper

Scrape Google Trends data for any keyword, country and time range: interest over time, interest by region (country, state, city, metro), related queries (top and rising, including Breakout), related topics, and Trending Now daily searches with news. No code, no Google account, no API key. Export to JSON, CSV, Excel or Google Sheets, or call it from your app, Python, n8n, Make, Zapier or an AI agent.

Built to fix the things that make Google Trends scrapers fail: HTTP 429 errors, empty related topics and silently missing data.

What you get

DataDetails
Interest over time0-100 values per date (hourly, daily, weekly or monthly, chosen by Google for the range), with partial-period flag and averages
Interest by regionCountries, regions/states, cities or US metro areas (DMA), with ISO-style geo codes
Related queriesTop and Rising lists, growth % and Breakout flag, with links
Related topicsTop and Rising topics with topic type and Google Knowledge Graph ID
Compare modeUp to 5 terms on the same scale, exactly like Compare on trends.google.com
Trending NowToday's trending searches per country with approximate search volume, start time and news articles
Google propertiesWeb, Image, News, Google Shopping and YouTube search

Why this scraper is reliable

Most Google Trends failures come from four things. This Actor handles each of them:

  1. HTTP 429 "Too Many Requests". Google rejects API calls that arrive without a browser cookie. Every session first picks up a cookie like a real visitor does, then calls the API.
  2. Rate limits and blocks. Blocked requests are retried with exponential backoff on a fresh IP and cookie session. If Google keeps blocking, the Actor switches to residential IPs automatically. You don't pay extra for that.
  3. Silently empty related topics. Google tags some IPs as automated traffic and quietly returns empty "related topics" for them. The Actor detects that tag, gets a fresh IP and asks again. If topics still can't be retrieved, the item says so clearly; it never passes empty data off as a real result.
  4. All-or-nothing runs. Every section is fetched separately. If one section fails, you still get the others, with an errors list explaining exactly what failed and why (status: "partial").

Live test, 8 Oct 2026: 30 runs against real Google Trends from a cloud server with no proxy at all (the hardest setup). See Test results below for the real numbers.

  1. Enter one or more search terms (e.g. chatgpt, claude ai).
  2. Pick a location (empty = Worldwide, or US, GB, US-CA...) and a time range.
  3. Click Start. Results appear in the Dataset tab. Download them as JSON, CSV or Excel.

Input example

{
"searchTerms": ["chatgpt", "claude ai", "gemini"],
"compare": true,
"geo": "US",
"timeRange": "today 12-m",
"outputMode": "perSearch"
}

Output example (one item per search term)

{
"type": "searchTerm",
"searchTerm": "chatgpt",
"geo": "Worldwide",
"timeRange": "today 12-m",
"status": "complete",
"averages": { "chatgpt": 82 },
"interestOverTime": [
{ "date": "2026-10-04T00:00:00.000Z", "formattedTime": "Oct 4 – 10, 2026", "values": { "chatgpt": 95 }, "isPartial": true }
],
"interestByRegion": [
{ "geoCode": "RW", "geoName": "Rwanda", "values": { "chatgpt": 100 } }
],
"relatedQueries": {
"top": [{ "query": "ai chatgpt", "value": 100, "formattedValue": "100", "isBreakout": false }],
"rising": [{ "query": "how to use chatgpt effectively", "value": 2550, "formattedValue": "+2,550%", "isBreakout": false }]
},
"relatedTopics": { "top": [], "rising": [] },
"errors": [],
"trendsUrl": "https://trends.google.com/trends/explore?q=chatgpt&hl=en-US&date=today+12-m",
"scrapedAt": "2026-10-08T11:52:50.487Z"
}

Prefer spreadsheets? Set Output format to Flat rows to get one row per data point (rowType: interestOverTime, interestByRegion, relatedQuery, relatedTopic). That's ideal for CSV, Excel, Google Sheets and BI tools.

{ "mode": "trendingNow", "trendingGeos": ["US", "GB", "DE"] }

Returns title, approxTraffic ("200K+"), approxTrafficNumber, startedAt, picture and news (title, url, source) for each trend.

Already calling apify/google-trends-scraper from code, a schedule or Make/Zapier? Change the Actor ID and keep your input JSON: this Actor accepts the same field names.

Their inputHere
searchTermsSame
isMultiple: true + "term a, term b"Compared together (same as compare: true)
timeRange ("", now 7-d, today 5-y, …)Same values; "" means past 12 months
customTimeRange: "2024-01-01 2024-06-30"Same, and it takes precedence
geo, category ("7" or "")Same
startUrls with trends.google.com/trends/explore?... linksTerms, geo, date, category and search type are read from the link
maxRequestRetriesSame as maxRetries
viewedFrom, spreadsheetId, skipDebugScreen, pageLoadTimeoutSecs, maxItemsIgnored (not needed: no browser)

The output is one row per search term (or per comparison) with interestOverTime, interestByRegion, relatedQueries and relatedTopics; set outputMode to rows for flat rows. You pay per search term, not per compute minute.

Pricing

Pay per result: you pay per search term processed, with all four data sections included. You are not charged for search terms that fail. Platform and proxy costs are included in the price. There are no extra compute, proxy or start fees.

Apify planPrice per search term1,000 search terms
Free$0.003$3.00
Starter (Bronze)$0.002$2.00
Scale (Silver)$0.0018$1.80
Business (Gold)$0.0015$1.50

Trending Now: $0.0005 per trend ($0.0004 Scale, $0.0003 Business). Set Max cost per run in Apify and the Actor stops cleanly when it reaches it.

Use cases

  • SEO and content: find rising and Breakout queries before competitors, and plan content around seasonality.
  • Market research: compare brands, products or categories by country and over five years.
  • E-commerce and dropshipping: spot trending products on Google Shopping and YouTube search.
  • Finance and data science: use search interest as an alternative-data signal in models and dashboards.
  • AI agents and automations: give your agent fresh Google Trends data through the Apify API or MCP server.

Integrations and API

Run it from the Apify API, the JavaScript or Python client, n8n, Make, Zapier, Google Sheets, or as a tool for AI agents through the Apify MCP server.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("scrapemole/google-trends-scraper").call(run_input={
"searchTerms": ["bitcoin", "gold"], "compare": True, "timeRange": "today 5-y"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["searchTerms"], item["averages"])

Test results

Live test on 2026-10-08 against real Google Trends, from a cloud server with no proxy (Google rate-limits cloud IPs hardest, so this is a worst case):

MetricResult
Runs (explore, compare, flat rows, Trending Now; 10 countries, 6 time ranges, web + YouTube)30/30 (100.0%) finished with data
Search terms with data28 / 28 (0 failed)
Interest over time23/23 (100.0%)
Interest by region23/23 (100.0%)
Related queries23/23 (100.0%)
Related topics0/17 (0.0%): Google hid topics from this cloud IP (it tags such IPs as automated). On Apify the Actor gets a fresh IP and switches to residential IPs to fetch them.
Rate-limit recoveriesRuns hit up to 14 blocks (HTTP 429) and still completed
Invalid inputFails fast with a precise message, nothing charged
Spending limitStops exactly at the user's max cost per run

FAQ

Is there an official Google Trends API? Google announced a Trends API alpha in July 2025. Access is still by application to a small pilot group, and the alpha doesn't include Trending Now. This Actor gives you the same data as the trends.google.com website today, for any keyword, with no application.

Why are the values 0-100 and not search volumes? Google Trends only publishes relative interest: 100 is the peak for the selected terms, place and time. In compare mode all terms share one scale. Trending Now does include approximate search volume (e.g. "200K+").

Why do I get different numbers than yesterday? Google samples its data, and the newest point is often partial (isPartial: true). For stable series, use complete periods.

What do "partial" and the errors list mean? One section (e.g. related topics) couldn't be fetched, but the rest of the data is real and complete. Each error has a code (BLOCKED, NO_DATA, PARSE_ERROR...) and a plain-English message.

Why are related topics missing in compare mode? Google doesn't return related topics when several terms are compared. Run the terms one by one to get them.

How do I pick a category? Use the number after cat= in a trends.google.com URL, e.g. 7 = Finance, 71 = Food & Drink. 0 = all categories.

Can I get hourly data? Yes: use the Past hour/4 hours/day/7 days ranges, or a custom range like 2024-05-01T00 2024-05-07T23.

Is scraping Google Trends legal? The Actor only collects publicly available, aggregated and anonymous statistics that anyone can see on trends.google.com. It doesn't collect personal data. Check that your own use complies with the laws and terms that apply to you.

Something broke. What now? Open an issue on the Issues tab with the run link. Every run also saves a RUN_SUMMARY record (requests, retries, blocks, errors) in its key-value store, which helps us fix things fast.

More from ScrapeMole

ScrapeMole builds focused, reliable scrapers for public data: pay per result, no start fees, clear error rows that are never charged, and a RUN_SUMMARY on every run.

Building an AI agent with its own wallet? The YouTube and Google Trends data is also sold per call over x402 (USDC on Base, no account): see scrapemole.pages.dev. Questions or a missing field? Open an issue on this Actor. ScrapeMole is the maker of this Actor.