Google Trends Scraper
Under maintenancePricing
Pay per usage
Google Trends Scraper
Under maintenanceReliable Google Trends data — interest over time and related queries — for any keywords, geo and timeframe. Proxy-rotating with backoff so it does not 429 like the rest.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Scrape Harbor
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Share
Reliable Google Trends data — interest over time and related queries — for any keywords, geo, and timeframe. Returns clean JSON.
The public store's incumbent Trends actors are unreliable (the official one sits at ~3.1★ with ~1-in-5 runs failing) because Google rate-limits the Trends endpoints hard. This actor is built around that: the real widget-token dance, correct headers, exponential backoff, and per-request proxy rotation, so runs don't 429 out.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
keywords | string[] | — (required) | Terms to pull. One result row per term. |
geo | string | US | Country code (US, GB, …), sub-region (US-CA), or "" for Worldwide. |
timeframe | string | today 12-m | Trends window token (now 7-d, today 3-m, today 5-y, all, …). |
dataTypes | string[] | both | Any of timeseries, related_queries. |
proxyConfiguration | object | Apify Proxy on | Strongly recommended — single-IP runs get throttled fast. |
Output (one dataset item per keyword)
{"keyword": "bitcoin","geo": "US","timeframe": "today 12-m","interest_over_time": [{ "time": "Jul 20 - 26, 2025", "value": 20 }, ...],"related_queries": [{ "query": "bitcoin price", "value": 100, "link": "..." }, ...]}
A keyword that fails after retries yields { "keyword": ..., "error": ... }
instead of aborting the whole run.
Local development
python3 tests/test_parsers.py # network-independent parser testspython3 -c 'import sys; sys.path.insert(0,"src"); from trends_core import TrendsClient; \print(TrendsClient().fetch("bitcoin", timeframe="today 3-m", want=("timeseries",)))'
Note: a single residential IP gets throttled on the
relatedsearchesendpoint after a handful of calls. That's the exact problem the actor solves in production via Apify Proxy rotation; expect local bare-IP testing to 429.
Publishing
npm i -g apify-cli && apify login # free accountapify push # builds on Apify, lands in your store profile