Google Trends Scraper & API - Interest, Regions, Trending avatar

Google Trends Scraper & API - Interest, Regions, Trending

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Google Trends Scraper & API - Interest, Regions, Trending

Google Trends Scraper & API - Interest, Regions, Trending

Reliable Google Trends scraper and API: interest over time, interest by region/city, top related queries, multi-keyword comparison and trending searches for any country. Decoy-filtered rising queries. Auto-retries, 429 handling and proxy rotation built in.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Ivan Petrus

Ivan Petrus

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Google Trends Scraper & API: Interest Over Time, Regions, Top Queries & Trending Now

Google Trends Scraper and unofficial Google Trends API with data you can rely on: interest over time, interest by region/city, top related queries, multi-keyword comparison and live Trending now searches for any country. Rising queries are included too, decoy-filtered (see below). You can export to JSON, CSV or Excel, or call it from the API, Make, n8n, Zapier or AI agents (MCP).

Built for reliability: automatic retries with exponential backoff, HTTP 429 (rate-limit) handling, proxy session rotation, automatic switch to residential proxies when Google blocks, and clear error rows instead of silent gaps. Failed queries are never charged.

Sample output

One keyword result from a real Apify cloud run (Oct 2026), shortened (the full row has 53 weekly points and 72 countries):

{
"searchTerm": "claude",
"geo": "Worldwide",
"timeRange": "today 12-m",
"interestOverTime": [{"date": "2025-10-05", "values": {"claude": 17}}, {"date": "2025-10-12", "values": {"claude": 18}}, …],
"interestByRegion": [{"geoCode": "CN", "geoName": "China", "values": {"claude": 100}}, {"geoCode": "SG", "geoName": "Singapore", "values": {"claude": 45}}, …],
"relatedQueries": {"claude": {"top": [{"query": "claude ai", "value": 100}, {"query": "claude code", "value": 58}, {"query": "anthropic claude", "value": 23}, …]}},
"status": "ok"
}

What you get

DataStatusDetails
📈 Interest over time✅ ReliableFull timeline (0–100) for each term, plus a summary per term: average, peak, peak date, latest value, % change, rising/falling/stable
🌍 Interest by region✅ ReliableCountries (worldwide), or regions/states, cities and US metros (DMA) inside a country. If Google has no city data, it falls back automatically to metros or regions
🔎 Top related queries✅ ReliableThe top 25 related queries per term with relative values
⚖️ Comparison✅ ReliableCompare up to 5 terms in one query (same scale), or analyze hundreds of terms separately
🔥 Trending now✅ ReliableLive trending searches for any country: volume, growth %, start time, active/ended, related queries, categories
🔗 Trends URLs✅Paste any trends.google.com/trends/explore URL; its terms, geo, date, category and search type are used as-is
🧪 Rising queriesFiltered, experimentalRising/"Breakout" queries after our decoy filter. Removed entries stay visible in suspectedDecoys with the reason
🧩 Related topicsUsually unavailableGoogle currently withholds related topics for automated requests. When it does, relatedTopics is null and relatedTopicsStatus says so (off by default)

Filters: geo (country or region, e.g. US, US-CA, GB-ENG), time range (past hour to 2004–present, or a custom YYYY-MM-DD YYYY-MM-DD), category, search type (Web, Images, News, YouTube, Google Shopping), language and timezone.

Use cases

  • SEO and content marketing: find seasonal peaks, regional demand and the top queries around any keyword.
  • E-commerce and product research: compare product demand by region and month.
  • Market and investment research: track interest in brands, tickers, tokens and categories over time, on one comparable scale.
  • Newsrooms and social media: monitor trending searches by country every hour.
  • AI agents and dashboards: feed clean JSON into LLM workflows, Google Sheets or BI tools.

Input examples

Analyze several keywords separately (batch):

{ "searchTerms": ["air fryer", "standing desk", "protein powder"], "geo": "US", "timeRange": "today 12-m" }

Compare brands on one scale:

{ "searchTerms": ["iphone", "samsung galaxy", "google pixel"], "comparisonMode": "compareAll", "geo": "US", "timeRange": "today 5-y" }

Custom dates, city level, YouTube search:

{ "searchTerms": ["pickleball"], "geo": "US", "customTimeRange": "2024-01-01 2024-12-31", "regionResolution": "CITY", "property": "youtube" }

Trending now in several countries, sports and tech only:

{ "mode": "trending", "trendingGeos": ["US", "GB", "DE"], "trendingHours": "24", "trendingCategories": ["17", "18"], "trendingMaxItems": 50 }

Output example (real Apify cloud run, Oct 2026, shortened)

{
"searchTerm": "iphone",
"geo": "US",
"timeRange": "today 12-m",
"googleUserType": "USER_TYPE_SCRAPER",
"dataQualityWarning": "Google flagged this request as automated (USER_TYPE_SCRAPER). Interest over time, regions and top queries are reliable. Rising queries are decoy-filtered (removed entries are listed in suspectedDecoys) and should be treated as experimental.",
"interestOverTime": [
{
"date": "2025-10-05",
"timestamp": 1759622400,
"formattedTime": "Oct 5 – 11, 2025",
"values": {
"iphone": 55
}
}
],
"interestOverTimeSummary": {
"iphone": {
"average": 60.96,
"max": 100,
"min": 46,
"latest": 51,
"peakDate": "2026-01-18",
"changePercent": -2.6,
"direction": "stable"
}
},
"interestByRegion": [
{
"geoCode": "US-WY",
"geoName": "Wyoming",
"values": {
"iphone": 100
}
},
{
"geoCode": "US-LA",
"geoName": "Louisiana",
"values": {
"iphone": 62
}
}
],
"relatedQueries": {
"iphone": {
"top": [
{
"query": "iphone 17",
"value": 100
},
{
"query": "apple iphone",
"value": 83
},
{
"query": "apple",
"value": 79
}
],
"rising": [
{
"query": "iphone 17e",
"value": 11050,
"formattedValue": "Breakout"
},
{
"query": "iphone 18 colors",
"value": 5350,
"formattedValue": "Breakout"
},
{
"query": "how to stop app tracking on iphone",
"value": 4300,
"formattedValue": "+4,300%"
}
],
"suspectedDecoys": [
{
"query": "iphone 6s to buy",
"formattedValue": "Breakout",
"reasons": [
"knownDecoy"
]
},
{
"query": "iphone 3gs to buy",
"formattedValue": "Breakout",
"reasons": [
"knownDecoy"
]
}
]
}
},
"risingFilter": "strict",
"relatedTopics": null,
"relatedTopicsStatus": "unavailable: Google withheld related topics for this request",
"trendsUrl": "https://trends.google.com/trends/explore?q=iphone&date=today%2012-m&hl=en-US&geo=US",
"status": "ok"
}

Trending row: { "rank": 1, "term": "brewers vs padres", "geo": "US", "searchVolume": 500000, "searchVolumeFormatted": "500K+", "growthPercent": 1000, "isActive": true, "categories": ["Sports"], "relatedQueries": ["..."] }

Failed queries appear as { "status": "failed", "error": "...", "hint": "..." } and are not charged. A RUN_SUMMARY record in the key-value store lists successes, failures, retries and rate-limit counts.

Pricing (pay per event)

  • $0.01 per run start
  • $1.50 per 1,000 results. One result is one keyword (or one comparison of up to 5 keywords) with its timeline, regions and related queries, or one trending search.
  • No proxy or compute costs on top. Failed queries are free.
  • Example: 100 keywords with all data = $0.15 + $0.01.

Set Max results or a maximum cost per run to cap spending. The actor stops gracefully when the limit is reached.

Reliability notes

  • Proxy: Apify Proxy is on by default (datacenter first). If Google keeps returning HTTP 429, the run switches to RESIDENTIAL automatically (residentialFallback).
  • Retries: each request is retried up to maxRetries times with exponential backoff and a new proxy session.
  • Data quality, honestly: Google marks automated sessions as USER_TYPE_SCRAPER. In our cloud tests (Oct 2026) this happened on datacenter IPs, residential IPs and even a real headless Chrome. It doesn't affect timelines, regions, top queries or Trending now; those matched what a browser shows. Rising queries, however, get decoys mixed in (e.g. "hotel booking", "coffee grinder", "laptop stand" for "air fryer"), and related topics are withheld. Every keyword result carries googleUserType and a dataQualityWarning.
  • Decoy filter for rising queries (risingFilter):
    • strict (default) moves an entry to suspectedDecoys if it is a known decoy (built-in list and spam patterns), if it repeats across unrelated keywords in the same run, or if it is unrelated to the keyword (shares no word with the keyword or its top queries).
    • balanced drops only known decoys and repeats; unrelated entries stay in rising marked "unverified": true. Use it for celebrity or tech keywords, where real rising terms often share no words with the keyword (e.g. "antigravity" for "claude").
    • off returns Google's raw list.
    • Add your own blocklist with extraDecoyTerms. The run summary reports how many entries were kept and removed.
  • Schedules: run it daily or hourly with Apify Schedules. Use the tests/selftest_input.json input with a run-failure email alert to monitor health.

Daily alerts to Slack or email

  1. Fill in the input and click Save as a new task (one task per client or competitor set is a good pattern).
  2. In Schedules, create a schedule (for example every day at 08:00 in your time zone) and add the task.
  3. In the task's Integrations tab, add the Slack or Gmail integration to get a message when a run finishes, or a webhook on "Run succeeded" that passes the run to Zapier, Make, n8n or your own endpoint. Those tools can read the rows from https://api.apify.com/v2/datasets/{defaultDatasetId}/items and format them however you like.

Schedule a task weekly (or daily for Trending now) and send the results to Slack, Gmail, Google Sheets or a webhook. This Actor has no "only changes" mode: each run returns the full current data, which is what you usually want for a trend report. Turn on Apify's run-failure notifications too, so you hear about a failed run instead of silence.

Part of a small competitor-intelligence suite by the same developer. Same conventions everywhere: pay per event, failed items are never charged, and the monitors return only what changed since the last run.

FAQ

Is there an official Google Trends API? Google has no general-public Trends API. This actor uses the same JSON endpoints the Google Trends website uses and returns structured data.

How many keywords can I run? Hundreds per run. Keywords are processed in parallel (maxConcurrency), each worker on its own proxy session.

Why do values differ between separate and comparison mode? Google scales values 0–100 within each query. Use compareAll to put terms on the same scale.

Which category IDs can I use? Any Google Trends category ID, for example 7 Finance, 18 Shopping, 45 Health, 47 Autos, 71 Food & Drink, 958 Jobs. 0 means all categories.

Are rising queries accurate? Treat them as experimental. Google injects unrelated items into rising lists for automated traffic. The decoy filter removes the known ones and anything unrelated to your keyword, and shows what it removed in suspectedDecoys. Top queries, timelines and regions are not affected.

Why are related topics empty? Google currently withholds them for automated requests, regardless of proxy type. The actor marks this explicitly (relatedTopicsStatus) instead of returning empty lists.

Can I use it from Python, n8n, Make or Zapier? Yes, through the Apify API, the official integrations, or the Apify MCP server for AI agents.

Is it legal? The actor collects publicly available, aggregated data and no personal data. You are responsible for complying with Google's Terms of Service and local law.

Keywords: google trends api, google trends scraper, google trends data, interest over time, interest by region, top related queries, trending searches, keyword demand, keyword research, search trends, pytrends alternative.