Google Trends Scraper
Pricing
from $0.90 / 1,000 results
Google Trends Scraper
Interest over time, by region, and related queries from Google Trends. Rotates sessions so large runs do not stall on rate limits.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Drydock Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Pulls Google Trends data as clean, flat rows: interest over time, interest by region, and related queries — for any keyword, location and date range.
Why this one
Google Trends rate-limits hard. A request without a valid session cookie is refused immediately, and the usual response to that is a retry loop that eventually eats the whole run. If you have used a Trends scraper that hangs and then dies without returning anything, that is what happened.
This actor establishes a session before every request and rotates it — new cookie, new proxy address — the moment Google pushes back, with backoff between attempts. A failed keyword is logged and skipped rather than killing the run, so you keep the results for everything else.
Requests go straight to Google's data endpoints rather than driving a browser, so a run finishes in seconds instead of minutes: 395 rows across 3 keywords in 26 seconds, no rate limits hit.
What you get
One row per data point, ready for a spreadsheet or a database. Every row carries keyword, geo, timeframe and type, so results from several panels can share one dataset.
Interest over time — one row per time bucket
{ "keyword": "bitcoin", "geo": "US", "timeframe": "today 12-m", "type": "timeseries","date": "Aug 31 – Sep 6, 2025", "timestamp": 1756598400000, "value": 26, "isPartial": false }
Interest by region — one row per region that has data
{ "keyword": "bitcoin", "geo": "US", "type": "geoMap","regionCode": "US-WY", "regionName": "Wyoming", "value": 100 }
Related queries — top and rising, labelled
{ "keyword": "bitcoin", "geo": "US", "type": "relatedQueries","ranking": "top", "query": "bitcoin price", "value": 100 }
Comparing terms
By default each term is fetched on its own, and Google scales each one from 0 to 100 independently — so a 100 for one term and a 100 for another say nothing about which is searched more.
Turn on Compare terms to send them in one request, the way the Compare view on trends.google.com works. Every row is then on a shared scale and carries "compared": true:
{ "keyword": "bitcoin", "date": "Sep 7 - 13", "value": 84, "compared": true }{ "keyword": "ethereum", "date": "Sep 7 - 13", "value": 11, "compared": true }{ "keyword": "solana", "date": "Sep 7 - 13", "value": 11, "compared": true }
Google allows at most five terms per comparison. Ask for more with the switch on and the run stops with a clear message rather than silently returning numbers that cannot be compared.
Input
| Field | Description |
|---|---|
searchTerms | Keywords to look up. Each is fetched separately, so values are comparable across runs. |
compareTerms | Put all terms on one shared 0-100 scale. Max 5 terms. Off by default. |
outputs | Any of timeseries, geoMap, relatedQueries. Defaults to timeseries. |
geo | US, GB, DE, or a sub-region like US-CA. Empty means worldwide. |
language | Interface language for labels and related queries — en-US, de-DE, es-ES, pt-BR. |
timeframe | Past hour through 2004-to-present, or a custom 2024-01-01 2024-06-30. |
property | Web, Images, News, Shopping or YouTube search. |
category | Google Trends category ID. 0 is everything. |
maxItems | Hard row cap, so a run cannot cost more than you expect. |
proxyConfiguration | Leave proxy on. Google limits by IP, and rotation is what keeps large runs alive. |
{"searchTerms": ["bitcoin", "ethereum"],"outputs": ["timeseries", "geoMap", "relatedQueries"],"geo": "US","timeframe": "today 12-m"}
Notes and limits
Values are relative, not absolute. Google reports interest on a 0–100 scale normalised within each request. A 100 means "the peak of this query in this range", not a search count. Use Compare terms when you need values that are comparable between keywords; without it, compare only within a single term's rows.
Related topics is not available. Google returns that panel empty for automated clients. Rather than ship a switch that always yields nothing, it is left out.
maxItems stops work, not just output. Once the cap is hit the actor stops fetching, so you are not billed for data that gets discarded.
Pricing
Pay per result — you are charged only for rows actually delivered. A keyword that fails returns nothing and costs nothing.