Skip to main content
Thirdwatchthirdwatch
Other

Track Brand Interest with Google Trends Data (2026 Guide)

Monitor brand search interest over time using Google Trends. Compare brands head-to-head with slope, peak dates, and related queries. Python API guide included.

May 26, 2026 · 6 min read · 1,358 words
See the scraper →

Thirdwatch's Google Trends Scraper returns structured brand interest data from Google Trends -- 12-month timeseries, average interest (0-100), directional slope, peak date, and top/rising related queries for any brand name. Built for brand managers, competitive intelligence teams, investors, and marketing analysts who need quantified brand momentum rather than anecdotal signals. No login, no API key, pay-per-result pricing.

Why track brand interest with Google Trends data

Branded search volume is one of the most reliable public signals of brand health. According to research published by the Journal of Marketing Research, branded search query volume predicts revenue changes and can serve as a leading indicator of market share shifts. The advantage over surveys: search data reflects actual consumer behavior at scale, updated weekly, with no response bias. Google Trends normalizes interest on a 0-100 scale relative to the peak within your query window, making cross-brand comparison straightforward.

The job-to-be-done is competitive intelligence. A brand manager at a DTC company wants to know whether their holiday campaign lifted branded search interest relative to last year and relative to the top three competitors. A VC analyst evaluating portfolio companies wants a weekly pulse on each brand's search momentum. A PR agency needs to demonstrate campaign impact with data beyond impressions and reach. All of these reduce to branded keyword pulls from Google Trends with structured slope and comparison data. The manual alternative -- visiting trends.google.com, entering five brand names, screenshotting the chart, and describing the result in a slide deck -- is slow, unstructured, and impossible to automate.

How does this compare to the alternatives?

Three options for systematic brand interest tracking:

Approach Cost Reliability Setup time Maintenance
Manual Google Trends website Free, high labor cost Subjective visual interpretation 0 minutes Weekly manual effort
Brandwatch / Sprinklr / enterprise social listening $1,000-5,000/month Comprehensive but expensive 2-4 weeks Vendor-managed
Thirdwatch Google Trends Scraper Pay per result Structured JSON, quantified slope 5 minutes Thirdwatch maintains

Enterprise social listening platforms provide broader brand-mention data across social channels, but they cost thousands per month and include far more than most teams need. Google Trends branded search data is a focused, cost-effective proxy for brand awareness that complements social listening rather than replacing it. The Google Trends Scraper returns the data in structured JSON with slope and related queries that enterprise tools do not surface from Trends specifically.

How to track brand interest in 4 steps

Step 1: How do I authenticate and set up the API call?

Sign up at apify.com (free tier, no credit card required), copy your API token from Settings, and export it:

export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"

Step 2: How do I compare brand search interest head-to-head?

Pass competing brand names in keywords. Use the same geo and timeRange for an apples-to-apples comparison.

import os, requests, pandas as pd

ACTOR = "thirdwatch~google-trends-scraper"
TOKEN = os.environ["APIFY_TOKEN"]

resp = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={
        "keywords": ["allbirds", "hoka", "on running", "brooks running", "new balance"],
        "geo": "US",
        "timeRange": "today 12-m",
        "includeRelated": True,
    },
    timeout=300,
)
brands = pd.DataFrame(resp.json())
print(brands[["keyword", "avgInterest", "slope", "peakInterest", "peakDate"]]
      .sort_values("avgInterest", ascending=False))

Five brands in one call. Sorting by avgInterest gives you the size ranking; sorting by slope shows which brand is gaining or losing momentum. A brand with moderate average interest but the highest positive slope is the one to watch.

Step 3: How do I measure campaign impact on branded search?

Run the actor before and after a campaign with a shorter time range to isolate the effect. Compare the today 1-m window around the campaign period against the prior month.

# Run during campaign month
resp_during = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={
        "keywords": ["allbirds"],
        "geo": "US",
        "timeRange": "today 1-m",
        "includeRelated": True,
    },
    timeout=300,
)
campaign_data = resp_during.json()[0]

print(f"Campaign month avg interest: {campaign_data['avgInterest']}")
print(f"Peak: {campaign_data['peakInterest']} on {campaign_data['peakDate']}")
print(f"Slope: {campaign_data['slope']:+.2f}")

# Check what people searched alongside the brand
print("\nRising related queries during campaign:")
for q in campaign_data.get("relatedRising", []):
    print(f"  {q['query']}: {q['value']}")

The relatedRising field during a campaign period reveals exactly what messaging resonated. If your campaign was about a new shoe line and "allbirds tree runner go" appears as a breakout related query, that specific product name penetrated search behavior. If generic queries dominate, the campaign generated brand interest but not product-specific demand.

Step 4: How do I build a weekly brand health report?

Schedule the actor to run weekly and accumulate results into a longitudinal dataset. Track slope direction week-over-week to catch momentum shifts early.

# Scheduled weekly — append each run to a growing history
import json
from pathlib import Path

HISTORY = Path("brand_health_history.jsonl")

for brand in resp.json():
    record = {
        "brand": brand["keyword"],
        "avg_interest": brand["avgInterest"],
        "slope": brand["slope"],
        "peak_interest": brand["peakInterest"],
        "peak_date": brand["peakDate"],
        "latest_value": brand["timeline"][-1]["value"],
        "top_related": [q["query"] for q in brand.get("relatedTop", [])[:3]],
        "rising_related": [q["query"] for q in brand.get("relatedRising", [])[:3]],
        "report_date": brand["scraped_at"][:10],
    }
    with HISTORY.open("a") as f:
        f.write(json.dumps(record) + "\n")

# Weekly summary
history = pd.read_json(HISTORY, lines=True)
latest = history.groupby("brand").last().reset_index()
print(latest[["brand", "avg_interest", "slope", "latest_value",
              "rising_related"]].to_string(index=False))

After a few weeks of accumulated data, you can plot slope trajectories per brand and detect the exact week a competitor's interest began rising or your own brand's interest began softening.

Sample output

A single record from a brand comparison run:

{
    "keyword": "hoka",
    "geo": "US",
    "timeRange": "today 12-m",
    "avgInterest": 74,
    "slope": 0.22,
    "peakInterest": 100,
    "peakDate": "2025-11-24",
    "timeline": [
        { "time": "2025-05-25", "value": 62 },
        { "time": "2025-06-01", "value": 65 },
        { "time": "2025-11-24", "value": 100 }
    ],
    "relatedTop": [
        { "query": "hoka shoes", "value": 100 },
        { "query": "hoka bondi 9", "value": 78 }
    ],
    "relatedRising": [
        { "query": "hoka skyward x", "value": "Breakout" },
        { "query": "hoka vs on cloud", "value": "+280%" }
    ],
    "scraped_at": "2026-05-26T14:00:00.000Z"
}

avgInterest of 74 with a positive slope of 0.22 shows a brand with strong and growing search demand. peakDate around Black Friday is expected for a consumer shoe brand. The relatedRising entry "hoka vs on cloud" is competitive intelligence gold -- it tells you exactly which competitor consumers are evaluating alongside this brand.

Common pitfalls

Three mistakes in brand interest tracking. Comparing brands across different runs -- Google Trends normalizes each query independently when run in separate calls. Two brands at "50 interest" from different runs are not at the same absolute demand level. Always pass all comparison brands in the same keywords array so they share the same normalization baseline. Missing the geo dimension -- a global brand might show flat interest worldwide while surging in a specific market. Run once with geo empty for the global view, then run again scoped to your key markets (US, UK, IN) to catch regional dynamics. Ignoring related queries for competitive signals -- the relatedRising field often contains head-to-head comparison queries like "brand X vs brand Y." These reveal which competitor your audience considers a substitute, which is more actionable than the interest score alone.

Thirdwatch's actor handles the rate limits and session management so your brand tracking pipeline runs cleanly on a schedule without manual intervention.

A fourth issue specific to brand tracking at scale: search volume versus interest index. Google Trends returns a relative interest score (0-100), not absolute search volume. A brand at "50" interest may receive 500,000 monthly searches or 5,000 — the index does not distinguish. For absolute volume estimates, pair Trends data with Google Ads Keyword Planner or third-party tools like Semrush. The Trends index is most valuable for directional analysis (is interest rising or falling?), competitive comparison (which brand is searched more?), and seasonal pattern detection (when does interest peak?). Treat the slope field as the primary actionable metric for brand health reporting — a positive slope means growing mindshare regardless of absolute volume.

Related use cases

Frequently asked questions

Does Google Trends measure brand awareness?

Google Trends measures branded search interest, which is a strong proxy for brand awareness. When someone types a brand name into Google, they already know the brand exists. Rising branded search interest correlates with successful marketing campaigns, press coverage, and word-of-mouth. It does not capture offline awareness or recognition without recall.

Can I compare my brand against competitors in one run?

Yes. Pass your brand name and competitor brand names together in the keywords array. Each returns its own interest timeseries, slope, and related queries, all scoped to the same geography and time window, making direct comparison straightforward.

How do I separate brand searches from product searches?

Use the exact brand name as a keyword. Google Trends returns data for the literal query string. If you want to exclude product-specific searches, use the brand name alone rather than brand plus product category. The relatedTop field shows what people search alongside your brand.

What geography should I use for brand tracking?

Scope to your primary market. Leave geo empty for worldwide if your brand operates globally. For regional brands, use the ISO country code. Worldwide data dilutes signals from smaller markets where your brand may be growing or declining.

How far back can I track brand interest?

Set timeRange to all to get data from 2004 to present. This is the maximum window Google Trends offers. For brands founded after 2004, you will see the full history of public search interest from the moment people started searching for the name.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.