Google Trends Scraper — Reliable
Pricing
from $5.00 / 1,000 results
Google Trends Scraper — Reliable
Scrape Google Trends without 429 failures: interest over time, interest by region, related queries, related topics, and trending searches. HTTP-only (no browser) — fast and cheap.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
William Fordyce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
A Google Trends scraper built for one thing above all: finishing every run. Get interest over time, interest by region, related queries, related topics, and real-time trending searches as clean JSON — without a browser, without an official Google Trends API, and without the rate-limit failures that plague other Trends actors.
Why this scraper succeeds where others fail
Google aggressively rate-limits its internal Trends endpoints (HTTP 429). Most Google Trends scrapers treat a 429 as fatal — that's why they fail a large share of runs. This actor was engineered around that exact failure mode:
- Automatic session refresh — on every 429, the cookie session is discarded and a fresh one is bootstrapped, so Google's per-session throttle resets.
- Proxy session rotation — when running with Apify residential proxies (the default), every retry comes from a brand-new IP session.
- Exponential backoff with jitter — retries start at ~2 s and back off up to 60 s, with randomized pacing between requests so you never trip the limiter in the first place.
- Request batching — up to 5 keywords share a single Google request (5× fewer requests = faster, cheaper, and far below the rate-limit radar).
- Per-term fault isolation — one bad keyword never kills your run. Failures are recorded as
dataType: "error"items and the rest of your keywords still deliver. - HTTP-only, no headless browser — runs in 256–512 MB of memory and finishes in seconds, not minutes.
What data you get
| Data type | Description |
|---|---|
| Interest over time | The 0–100 search-interest timeseries for each keyword — the core Google Trends chart, ideal for keyword research and demand forecasting. |
| Interest by region | Search interest broken down by country, state, or metro for each keyword. |
| Related queries | Top and rising search queries related to each keyword — a goldmine for SEO research and content ideation. |
| Related topics | Top and rising Knowledge-Graph topics related to each keyword. |
| Trending searches (now) | What's trending in any country right now, with approximate traffic and linked news headlines. |
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | array | [] | Keywords to scrape (max 50 per run). |
geo | string | "" (worldwide) | Location, e.g. US, US-TX, GB, DE. |
timeRange | enum | today 12-m | 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. |
category | integer | 0 (all) | Google Trends category ID (the cat URL parameter on trends.google.com). |
includeInterestOverTime | boolean | true | Scrape the interest-over-time timeseries. |
includeInterestByRegion | boolean | false | Scrape the geographic breakdown. |
includeRelatedQueries | boolean | false | Scrape top + rising related queries. |
includeRelatedTopics | boolean | false | Scrape top + rising related topics. |
trendingNow | boolean | false | Fetch current trending searches. |
trendingNowGeo | string | US | Country for trending searches. |
batchTerms | boolean | true | Batch up to 5 terms per Google request (faster + cheaper; values are cross-normalized for direct comparison). Turn off for solo per-term 0–100 normalization. |
proxyConfiguration | object | Apify residential | Proxy settings. Residential strongly recommended. |
Example input:
{"searchTerms": ["coffee", "matcha"],"geo": "US","timeRange": "today 12-m","includeInterestOverTime": true,"includeRelatedQueries": true,"trendingNow": true}
Output
One dataset item per keyword per data type: { term, geo, timeRange, dataType, data, fetchedAt }.
Interest over time (dataType: "interestOverTime"):
{"term": "coffee","geo": "US","timeRange": "today 12-m","dataType": "interestOverTime","data": [{ "time": 1749340800, "formattedTime": "Jun 8 – 14, 2025", "value": 62 },{ "time": 1780790400, "formattedTime": "Jun 7 – 13, 2026", "value": 73, "isPartial": true }],"fetchedAt": "2026-06-10T21:03:51.347Z"}
Related queries (dataType: "relatedQueries"):
{"term": "matcha","dataType": "relatedQueries","data": [{ "query": "matcha latte", "value": 100, "formattedValue": "100", "trend": "top", "link": "https://trends.google.com/trends/explore?q=matcha+latte&date=today+12-m&geo=US" },{ "query": "matcha near me", "value": 130, "formattedValue": "+130%", "trend": "rising", "link": "..." }]}
Interest by region (dataType: "interestByRegion"):
{"term": "bitcoin","dataType": "interestByRegion","data": [{ "geoCode": "US-WY", "geoName": "Wyoming", "value": 100 },{ "geoCode": "US-CA", "geoName": "California", "value": 71 }]}
Trending searches (dataType: "trendingNow"):
{"dataType": "trendingNow","geo": "US","data": [{"title": "tornado warning","approxTraffic": "50000+","pubDate": "Wed, 10 Jun 2026 13:30:00 -0700","newsItems": [{ "title": "EF-1 Tornado Confirmed In Freeland", "url": "https://...", "source": "WNEM" }]}]}
If a keyword fails after all retries, you get an item with dataType: "error" and an error message — the run continues and still succeeds for the other keywords.
Pricing (pay per event)
You only pay for data you actually receive — empty results are never charged:
| Event | Charged when | Suggested price |
|---|---|---|
term-result | One keyword × one data type returns non-empty data | $0.003 |
trending-now-fetch | One trending-searches fetch returns entries | $0.02 |
Example: 10 keywords with interest over time + related queries = 20 term-result events ≈ $0.06.
FAQ
Is it legal to scrape Google Trends? Yes. Google Trends data is public, aggregated, and anonymized — there is no personal data involved. This actor only accesses the same public endpoints your browser uses on trends.google.com. As always, consult your own counsel for your specific use case.
How is this different from other Google Trends actors? Reliability. Other Trends scrapers fail a significant share of runs because they treat Google's 429 rate-limit responses as fatal errors. This actor was engineered around that failure mode from day one: session refresh, residential proxy rotation, exponential backoff, request batching, and per-keyword fault isolation. One bad keyword or one throttled request never costs you the run.
Is there an official Google Trends API? Google has only an invite-limited alpha API. For everyone else, scraping the public website data is the only way to get interest over time, related queries, and trending searches programmatically — this actor does it for you and returns clean JSON.
Why are my related topics sometimes empty? Google gates topic (Knowledge Graph entity) data behind a stricter per-IP quota than the other data types. The actor automatically retries topics through a secondary endpoint with its own quota; if Google still withholds the data, you get an empty list — and you are not charged for it.
Can I monitor keywords on a schedule? Yes — add the actor to an Apify Schedule (e.g. daily) and connect a webhook or one of Apify's integrations (Google Sheets, Slack, Make, Zapier) to deliver fresh keyword-research data automatically.
What are the values in interest over time?
Google's normalized search-interest index: 100 = peak popularity within your selected time range and location, 50 = half as popular. Values are relative, not absolute search volumes. With the default batchTerms: true, terms scraped together share one scale (directly comparable, exactly like comparing terms on trends.google.com). Set batchTerms: false to give every term its own 0–100 scale relative to its own peak — recommended when mixing high- and low-volume keywords.
Tips
- Batch related keywords in a single run — the actor groups up to 5 per Google request, so 50 keywords cost only ~10 explore calls.
- Use
geo+timeRangecombinations that match what you'd select on trends.google.com; sub-regions likeUS-TXwork everywhere. - For SEO research, enable
includeRelatedQueries— rising queries ("trend": "rising") surface breakout searches before they peak.