Google Trends Compare · 5+ Keywords, Regions & Related avatar

Google Trends Compare · 5+ Keywords, Regions & Related

Pricing

from $1.75 / 1,000 time series

Go to Apify Store
Google Trends Compare · 5+ Keywords, Regions & Related

Google Trends Compare · 5+ Keywords, Regions & Related

Google Trends scraper for keyword research and market research: compare more than the five keywords Google allows, on one 0-100 scale through anchor normalization. Interest over time, interest by region and related queries per keyword. Empty runs cost nothing.

Pricing

from $1.75 / 1,000 time series

Rating

0.0

(0)

Developer

TheQuietStack

TheQuietStack

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Compare more than 5 keywords in Google Trends on one common 0-100 scale - across countries, US states or German federal states, with interest by region and related queries. You pay only for results that contain data. An empty run costs nothing.

On trends.google.com you can compare up to 5 terms at a time. Each comparison is scaled to its own maximum, so you cannot simply put two comparisons next to each other. This Actor splits your list into Google requests of 5 terms. It puts the same anchor keyword into every request and rescales all requests through that anchor. The result is one table where chatgpt, gemini, claude, perplexity, copilot, deepseek and grok sit on the same scale.

No login, no Google account, no proxy needed.

What you get

This ActorTypical Google Trends scrapers
More than 5 keywordsone common 0-100 scale through an anchor keyword, with a precision flag per row5 per run, or separate scales that are not comparable
Locationsseveral countries / regions / US metros compared on one scale; splitGeoIntoRegions turns DE into the 16 federal states, US into 51 statesone location per run
Summary per keywordaverage, peak and date, latest value, change in % (last vs first quarter of the range), rankraw timeline only
Interest by regionoptional, per keyword (countries, regions/states, US metros)often
Related queriesoptional: top and rising, rising with growth % or Breakoutoften
Empty resultsfree status row (no_data), never chargedoften charged
Hangshard stop after maxRunMinutes, everything collected so far is delivered"ran 20 minutes, no results"
Start feenoneoften $0.02 per run

Use cases

  • Market and brand comparison: 10-50 brands, products or competitors in one ranked table, instead of stitching 5-term screenshots together.
  • Regional demand: one product across all German federal states or US states over time, e.g. for ad budgets, store openings or sales territories.
  • Content and SEO research: related rising queries (Breakout terms) for your seed keywords, every week on a schedule.
  • Seasonality: 5 years of weekly data for a product category, ready for Sheets, Looker Studio, Make, n8n or Zapier.
  • YouTube, News, Images, Shopping: the same comparison for other Google properties (searchType).

Input example

{
"keywords": ["chatgpt", "gemini", "claude", "perplexity", "copilot", "deepseek", "grok"],
"geos": ["US"],
"timeRange": "today 12-m",
"includeRelatedQueries": true
}
  • keywords - any number of terms. Up to 200 keyword x location pairs per run.
  • geos - empty = worldwide; US, DE, DE-BY, US-CA, US-CA-807 (metro). Several locations compare every keyword in every location.
  • splitGeoIntoRegions - DE becomes the 16 federal states, US the 51 states (up to 60 regions per country).
  • timeRange - 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, or 2024-01-01 2024-12-31.
  • anchorKeyword, anchorGeo - the term that links the requests. By default the first keyword is used. Choose a term that is neither the biggest nor the smallest in your list (see "Honest numbers").
  • includeRegions + regionResolution (auto, COUNTRY, REGION, DMA), includeRelatedQueries.
  • searchType (web, images, news, shopping, youtube), category (Google Trends category ID, 0 = all).
  • includeTimeline (default on), requestDelaySecs (default 1.5), maxRunMinutes (default 20).

Output example

Real row from a test run on 04 Oct 2026 (the input above, timeline shortened). grok was in the second Google request and is scaled through the anchor chatgpt:

{
"type": "timeseries",
"keyword": "grok",
"geo": "US",
"timeRange": "today 12-m",
"searchType": "web",
"status": "ok",
"rankByAverage": 5,
"pairsCompared": 8,
"averageValue": 4.91,
"peakValue": 10,
"peakAt": "2026-03-01T00:00:00.000Z",
"latestValue": 4,
"latestAt": "2026-09-27T00:00:00.000Z",
"lastPointIsPartial": true,
"changePercent": 8,
"resolution": "WEEK",
"points": 54,
"scaling": {
"method": "anchor",
"factor": 0.999759,
"anchorAverageInBatch": 77.09,
"rawAverageInBatch": 4.91,
"precision": "low",
"anchorKeyword": "chatgpt",
"anchorGeo": "US",
"request": 2,
"requests": 2
},
"timeline": [
{ "date": "2025-09-28T00:00:00.000Z", "value": 3, "rawValue": 3, "isPartial": false },
{ "date": "2026-09-27T00:00:00.000Z", "value": 4, "rawValue": 4, "isPartial": false },
{ "date": "2026-10-04T00:00:00.000Z", "value": 4, "rawValue": 4, "isPartial": true }
]
}

precision: "low" is shown because grok averages below 5 of 100 next to chatgpt. Google rounds to whole numbers, so small values carry a large rounding error (see "Honest numbers").

Region row (includeRegions, Germany, year 2025, list shortened):

{
"type": "regions",
"keyword": "bier",
"geo": "DE",
"resolution": "REGION",
"regionCount": 16,
"topRegion": "Thuringia",
"regions": [
{ "geoCode": "DE-TH", "geoName": "Thuringia", "value": 100 },
{ "geoCode": "DE-SN", "geoName": "Saxony", "value": 99 },
{ "geoCode": "DE-ST", "geoName": "Saxony-Anhalt", "value": 93 }
]
}

Related queries row (includeRelatedQueries, lists shortened):

{
"type": "related-queries",
"keyword": "deepseek",
"geo": "US",
"topCount": 25,
"risingCount": 25,
"top": [{ "query": "ai", "value": 100 }, { "query": "deepseek ai", "value": 92 }],
"rising": [{ "query": "deepseek v4 flash", "growthPercent": null, "breakout": true }]
}

The run summary (key-value store record SUMMARY) has the full ranking, the anchor, every Google request with its status, the HTTP statistics (including waits on rate limits) and the billing.

Honest numbers

  • The anchor method works, and here is the check. In our test on 04 Oct 2026 we compared 7 AI assistants (2 requests through the anchor). Then we compared 5 of them directly in one Google request. Ratios to gemini, anchored vs direct: claude 0.673 vs 0.672 · copilot 0.231 vs 0.229 · grok 0.179 vs 0.178 · deepseek 0.077 vs 0.073.
  • Small terms are imprecise. Google gives whole numbers from 0 to 100. A term that averages 2 next to a giant like chatgpt can be off by 5-10 % (deepseek above). Every row therefore carries scaling.precision:
    • exact - all your terms fit into one Google request, so the numbers are Google's own.
    • good - the anchor and the term both average at least 5 in their request.
    • low - otherwise. For small terms, run them in a separate list with a smaller anchor.
  • The anchor must show up. If the anchor rounds to 0 next to the other terms in a request, those terms cannot be scaled. They come back as free rows with status: "anchor_without_data". A more popular anchorKeyword fixes this.
  • Google samples its data. The same query can move by 1-2 points between two runs. This applies to every Google Trends tool.
  • Comparing locations shows search share, not volume. Google divides by all searches in each location. "bier" scores higher in Saxony than in Bavaria because a larger share of Saxony's searches is about beer, not because there are more searches in total.
  • Region values are per keyword. 100 is the region where that keyword has its highest share. Cities are not offered: in our test for Germany, Google returned 200 towns and none of them had data.

How much does it cost?

Pay per event, no start fee:

EventWhen it is chargedPrice
timeseriesone keyword/location pair with data on the common scale$0.0025
region-breakdownone region row with at least one region with data (includeRegions)$0.002
related-queriesone row with at least one top or rising query (includeRelatedQueries)$0.002

You are never charged for:

  • pairs without search volume (no_data)
  • pairs that cannot be scaled (anchor_without_data)
  • failed, rate-limited or blocked requests
  • the anchor, when it is not one of your keywords
  • status rows
  • empty runs

Example: 7 keywords with related queries = 7 x $0.0025 + 7 x $0.002 = $0.0315.

Apify's "Max cost per run" setting is respected: the Actor stops writing at your limit.

Reliability and Google's limits

  • The Actor makes the same requests the trends.google.com page makes for a visitor who is not signed in. It sends one request at a time, with a pause between requests (requestDelaySecs).
  • Rate limits (HTTP 429): the Actor waits and retries up to 3 times (20 s, 60 s, 120 s, honouring Retry-After). If Google keeps refusing, the run stops cleanly. All finished rows are delivered, and the missing pairs appear as free failed rows.
  • Bot protection is never bypassed. A CAPTCHA, an "unusual traffic" page or a redirect to Google's /sorry/ page stops the run immediately. It is never retried and never worked around. No login, no account cookies, no proxy rotation, no browser disguise. The only cookie sent is the anonymous one Google itself sets on the start page.
  • No silent hangs: the run ends after maxRunMinutes (default 20) at the latest and delivers what it has.
  • A typical run: 7 keywords with related queries = 12 requests in about 30 s.

FAQ

Can I compare 50 keywords? Yes. 50 keywords in one location = 13 Google requests through the anchor. Pick an anchor of medium popularity.

Why does a keyword show no_data? Google reports too little search volume for that term, location and time range. These rows are free.

Is this data official? It is Google Trends' public, relative, sampled index (0-100). It does not give absolute search volumes.

Can I schedule it? Yes. Use Apify Schedules and connect the dataset to Google Sheets, Slack, Make, n8n or Zapier.