Google Trends lets you compare at most 5 search terms. And if you run two separate comparisons, the numbers can't be combined: each chart is normalized to its own peak (0–100), so a "50" in one chart has nothing to do with a "50" in the other.
If you need to rank 20 brands, 50 product names or 200 keywords by search interest, that's a real problem. Here's the technique analysts use, and a way to automate it.
The trick: an anchor term
- Pick one anchor keyword with medium, steady popularity.
- Split your other keywords into groups of 4 and query each group together with the anchor (anchor + 4 = 5 terms, the Google limit).
- In every group the anchor appears with a different value, because each chart has its own peak. Compute a scale factor per group so the anchor's line matches the first group:
factor_group = sum(anchor in group 1) / sum(anchor in this group) - Multiply every value in the group by its factor. Now all groups are on the anchor's scale.
- Re-normalize everything to 0–100 using the overall maximum.
Example: true interest is anchor = 10, X = 40, Y = 20.
- Group 1 (anchor, X): Google shows anchor = 25, X = 100.
- Group 2 (anchor, Y): Google shows anchor = 50, Y = 100.
- Factor for group 2 = 25 / 50 = 0.5, so Y becomes 50.
- Final: X = 100, Y = 50, anchor = 25, which is exactly the true 40 : 20 : 10.
Precision tip: Google rounds values to whole numbers. If your anchor is tiny in a group (say 1–2), that group's rescaled values get noisy. Choose an anchor that's neither dominant nor negligible.
Doing it without code
I packaged this into a cloud tool on Apify, Google Trends API & Scraper. Enable Compare terms, paste any number of keywords, choose one or more countries, and it returns every keyword on a single comparable 0–100 scale (plus a CSV table for Excel or Sheets). It also retries through residential proxies when Google rate-limits (the classic HTTP 429 you get with pytrends).
{
"searchTerms": ["nike", "adidas", "puma", "new balance", "asics", "reebok", "under armour", "skechers"],
"compareTerms": true,
"geos": ["US", "GB", "MX"],
"timeRange": "today 5-y"
}
Doing it in Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("whosandrw/google-trends-api").call(run_input={
"searchTerms": ["nike", "adidas", "puma", "new balance", "asics", "reebok"],
"compareTerms": True, "geo": "US", "timeRange": "today 12-m",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["type"] == "interestOverTimeComparable":
avg = sum(p["value"] for p in item["data"]) / len(item["data"])
print(f'{item["term"]:<14} {avg:5.1f}')
That's it: one scale, any number of keywords, any countries.
Top comments (0)