Tony Wang4 min readHow to Scrape Google Trends in 2026 (API & Python)
Get Google Trends data in 2026 — interest over time, rising and top queries, and trending searches — as structured JSON via API, with the legal basics.
The fastest way to get Google Trends data in 2026 is to call a structured Trends API that returns normalized JSON — interest-over-time series, rising and top related queries, interest by region, and trending searches — instead of automating the Trends site yourself. There is no official public Google Trends API, so the practical choice is a maintained endpoint that handles the request shape and parsing for you.
One thing to know up front: Google Trends values are relative and normalized to 0–100, not absolute search counts. That is true however you collect them, so build your analysis around relative movement, not raw volume.
Is it legal to scrape Google Trends?
Google Trends is public data, and collecting public data is generally treated differently from accessing private accounts — but it is not unconditional:
- Collect only the public Trends surfaces; no login-gated data.
- Respect rate limits and avoid hammering the service.
- Review Google's terms and your local law before commercial redistribution.
- Remember the values are normalized indices, so represent them honestly in any product.
This is not legal advice — see Is web scraping legal in 2026? for the detail.
Option 1: DIY in Python (and why it breaks)
The common DIY route is an unofficial library such as pytrends that mimics the Trends frontend:
from pytrends.request import TrendReq
pytrends = TrendReq()
pytrends.build_payload(["ai agents"], timeframe="today 12-m", geo="US")
df = pytrends.interest_over_time()
It works until it doesn't. The recurring pain:
- Rate limiting and 429s — Google throttles the internal endpoints aggressively, so you need proxies and backoff.
- Unofficial and unstable — these libraries track an undocumented internal API that changes without notice.
- Payload quirks — timeframes, geos, and category codes are fiddly and easy to get subtly wrong.
- Normalization across requests — comparing keywords pulled in separate calls is unreliable because each batch is renormalized.
Option 2: No-code and ready-made tools
Dashboards and browser tools can show you a chart, but they rarely give you the underlying series in a form you can store, join, or schedule. For anything that feeds a pipeline or a product, you want the JSON.
Option 3: A structured Google Trends API
Crawlora's Google Trends API exposes documented endpoints for interest over time, rising and top queries, related topics, interest by region, and trending searches — all returning normalized JSON.
curl -X POST "https://api.crawlora.net/api/v1/google/trends/explore/interest-over-time" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keywords": ["ai agents"], "geo": "US", "timeframe": "today 12-m"}'
import requests
resp = requests.post(
"https://api.crawlora.net/api/v1/google/trends/explore/interest-over-time",
headers={"x-api-key": "YOUR_API_KEY"},
json={"keywords": ["ai agents"], "geo": "US", "timeframe": "today 12-m"},
)
for point in resp.json()["data"]["timeline"]:
print(point["date"], point["values"])
A response is normalized JSON (fields are illustrative — confirm the exact request body and schema in the docs):
{
"code": 200,
"msg": "OK",
"data": {
"timeline": [
{ "date": "2026-05-01", "values": [{ "keyword": "ai agents", "value": 72 }] }
]
}
}
For discovery rather than tracking, surface what is gaining momentum with the rising/top-queries and trending endpoints:
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/google/trends"
rising = requests.post(f"{base}/explore/rising-queries", headers=h,
json={"keywords": ["ai agents"], "geo": "US"}).json()["data"]
trending = requests.get(f"{base}/trending", headers=h, params={"geo": "US"}).json()["data"]
Pass up to 5 keywords in one interest-over-time call so they're normalized together — the comparison that breaks when you batch them in separate requests.
What you can collect
- Interest over time as a normalized 0–100 series per keyword
- Rising and top related queries for a term
- Related topics and interest by region
- Trending searches and trending detail for what is spiking now
Limitations and common challenges
- No official API. Google never shipped a public Trends API; unofficial libraries (pytrends) hit the internal endpoint, which rate-limits (429) and changes without notice.
- Values are relative, not absolute. Every series is normalized 0–100 within its request — these are indices, not search counts; represent them honestly and don't read them as volume.
- Normalize in one call. Pass up to 5 keywords together so they share one scale; batching them in separate requests renormalizes each and makes them incomparable.
- Geo, timeframe, and category quirks. Location codes, timeframes, and category ids are fiddly; use the enums and locations endpoints to get them right.
Sources
Where this fits
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Trends data is most powerful next to search rankings. Pair demand with visibility: when a query is rising, check whether you rank for it using the Google Search API or the cross-engine SERP monitoring workflow, and prioritize content where demand is climbing. For SEO and content planning, that demand-plus-rankings loop is the whole point — see the best SERP APIs in 2026 for the ranking side, how to scrape Brave Search for an alternative engine, and how to choose a web scraping API for the broader toolkit.
Get started by testing the endpoint in the Playground, reading the request and response schema in the API docs, and reviewing credit costs on the pricing page.
Frequently asked questions
Is there an official Google Trends API?
No. Google has never shipped a public Google Trends API, and unofficial libraries like pytrends track an undocumented internal endpoint that rate-limits (HTTP 429) and changes without notice. Crawlora's Google Trends endpoints provide a maintained, documented alternative that returns normalized JSON.
Are Google Trends values real search volumes?
No. Trends values are relative and normalized to a 0–100 scale within each query, not absolute search counts. Analyze relative movement rather than raw volume, and represent them as an index.
What can I collect?
Interest over time, rising and top related queries, related topics, interest by region, trending searches, and per-term trending detail.
How do I get rising or trending searches?
Use the rising-queries and top-queries endpoints (up to 5 keywords) for a term's momentum, and the trending endpoint (by geo) for what's spiking now, with trending/detail for a single term's full widget set.
Can I compare multiple keywords?
Yes. Pass up to 5 keywords to the interest-over-time endpoint in one call so they are normalized together and directly comparable. Comparing values pulled in separate calls is unreliable because each batch is renormalized.
Do I need a Google account or key?
No. One Crawlora API key (sent as the x-api-key header) calls every Trends endpoint, with no Google login or quota to manage.