Google Trends Scraper
Pricing
from $0.25 / 1,000 results
Google Trends Scraper
Extract Google Trends data — interest over time, interest by region, related queries, and Trending Now — via Google's internal JSON API. No login, no API key, no browser.
Pricing
from $0.25 / 1,000 results
Rating
0.0
(0)
Developer
Aurenic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract Google Trends data — interest over time, interest by region, related queries, and Trending Now — via Google's internal JSON API. No login, no API key, no browser, no personal data.
What does Google Trends Scraper do?
Scrape every public Google Trends dataset in three modes:
- Keyword analysis (Explore) — compare up to 5 keywords in one query, across any country and any time window. Returns interest over time (0–100 timeline), interest by region (sub-national breakdown), and related queries (top + rising).
- Trending Now — the current trending searches for any country, with approximate traffic, publish time, and related news coverage. Uses Google's public RSS feed.
- Both — run keyword analysis and Trending Now in a single run.
Google Trends has no official public API. The announced one is a waitlisted alpha. The actor speaks to the same internal JSON endpoints the Trends website itself uses — /trends/api/explore → /trends/api/widgetdata/* — with the exact session handshake Google expects.
Rising queries are the most useful output in the whole API — they show what people are starting to search around a niche before it peaks.
Output fields
Keyword analysis (trends-query record)
| Field | Description |
|---|---|
| keywords | The keyword set compared in this query |
| geo | Country/region code |
| timeRange | Time window |
| category | Google Trends category ID |
| interestOverTime | Array of { timestamp, formattedTime, values, isPartial } — one entry per timeline point, values maps each keyword to its 0–100 score |
| interestByRegion | Array of { geoCode, geoName, value, hasData } — sub-national breakdown |
| relatedQueries | Object with top[] and rising[] arrays — each entry has query, value, formattedValue, link |
| userConfig | Google's session classification (e.g. USER_TYPE_SCRAPER) |
Trending Now (trending-search record)
| Field | Description |
|---|---|
| geo | Country code |
| rank | Position in the trending list |
| keyword | Trending search term |
| approxTraffic | Approximate search volume (e.g. 20000+) |
| pubDate | When the trend was published |
| pictureUrl / pictureSource | Associated image |
| newsItems | Array of { title, url, source, snippet } — related news coverage |
Who is it for?
- SEO and content teams finding keyword trends before they peak, and planning content around rising queries
- E-commerce and DTC brands reading seasonality over 5 years to plan inventory and ad budget
- Market researchers comparing the same product across countries to decide launch order
- Journalists and content creators pulling today's trending searches with approximate volume
- Brand teams tracking share of search against competitors on a normalised 0–100 scale
- Data scientists and quant analysts feeding search-interest signals into forecasting models
Pricing
$0.40 per 1,000 results. No subscription.
| Results | Cost |
|---|---|
| 100 | $0.04 |
| 1,000 | $0.40 |
| 10,000 | $4.00 |
How to use it
- Pick a Mode.
- Enter Keywords (Explore), pick Trending Now Countries, or both.
- Choose Geography and Time Range.
- Toggle which datasets to include: interest over time, interest by region, related queries.
- Click Start.
Output example
{"recordType": "trends-query","keywords": ["bitcoin", "ethereum"],"geo": "US","timeRange": "today 12-m","category": 0,"interestOverTime": [{ "timestamp": "1705276800", "formattedTime": "Jan 14 – 20, 2024", "values": { "bitcoin": 47, "ethereum": 38 }, "isPartial": false },{ "timestamp": "1705881600", "formattedTime": "Jan 21 – 27, 2024", "values": { "bitcoin": 51, "ethereum": 41 }, "isPartial": false }],"interestByRegion": [{ "geoCode": "US-CA", "geoName": "California", "value": 100, "hasData": true },{ "geoCode": "US-NY", "geoName": "New York", "value": 87, "hasData": true }],"relatedQueries": {"top": [{ "query": "bitcoin price", "value": 100, "formattedValue": "100", "link": "/trends/explore?q=bitcoin+price" },{ "query": "ethereum price", "value": 62, "formattedValue": "62", "link": "" }],"rising": [{ "query": "bitcoin halving 2028", "value": 3200, "formattedValue": "+3,200%", "link": "" },{ "query": "ethereum etf approval", "value": 1500, "formattedValue": "Breakout", "link": "" }]},"userConfig": { "userType": "USER_TYPE_SCRAPER" },"scrapedAt": "2026-09-21T12:00:00.000Z"}
Trending Now output:
{"recordType": "trending-search","geo": "US","rank": 1,"keyword": "hurricane watch","approxTraffic": "200000+","pubDate": "Mon, 21 Sep 2026 09:00:00 GMT","newsItems": [{ "title": "Hurricane watch issued for Gulf Coast", "url": "https://...", "source": "Reuters", "snippet": "..." }],"scrapedAt": "2026-09-21T12:00:00.000Z"}
Technical details
- No browser, no CAPTCHA, no API key. Uses Google's internal Trends JSON endpoints directly.
- Cookie-session handshake. The famous Google Trends 429 is not a rate limit — it's a missing
NIDcookie. The actor warms the session with a request to/trends/explore, captures the cookie even from a 429 response, and retries with it. This is the fix most broken scrapers miss. - Anti-XSSI prefix stripping. Google prefix responses with
)]}'to break naiveJSON.parsecalls. The actor strips it before parsing. - Self-throttled at a configurable
requestDelayMs(default 1500 ms) — Google's limiter cuts sessions at ~800 ms per request. - Datacenter IPs work. With a valid cookie session, Google Trends accepts datacenter requests. Proxy support is available but disabled by default.
- Keyword batching. Google allows up to 5 keywords per Explore query. Larger lists are automatically split.
Known limits
- Related Topics return empty. Google marks keyless sessions as
USER_TYPE_SCRAPER, and the RELATED_TOPICS widget returns[]for such sessions. The token is signed over the request — editinguserTypeyields 401. Related Queries work fine; only Related Topics is affected. - Session-scoped data. Google Trends returns normalised 0–100 values, not absolute search volumes. Values are comparable within a query, not across queries. Run keyword sets together to compare them.
- Google changes endpoints. The internal API is undocumented and can shift. The actor logs the exact failing URL if a call fails, making recovery fast.
- Trending Now geo coverage varies. Some countries return a rich feed, others return few or no items.
- No Google account required, and no personal data is collected — Google Trends publishes only aggregated search interest.
FAQ
Do I need an API key? No. Google Trends has no public API. The actor uses the same endpoints the Trends website uses, keyless.
Do I need a proxy? No. With a valid cookie session, Google Trends accepts datacenter IPs. Enable useProxy only if you see repeated 429s.
Why is interestByRegion empty for some keywords? Not every keyword has sub-national data. Low-volume terms are often aggregated to the country level only.
Why is relatedQueries.topics missing? Google marks keyless sessions USER_TYPE_SCRAPER and returns empty for Related Topics. Related Queries (top + rising) work fine. This is a Google-side restriction, not a bug.
How do I compare two keyword sets? Google normalises each query independently. To compare keywords, put them all in one keywords array — the actor batches them 5 at a time, and each query's 0–100 scale is internally consistent.
How do I export data? After a run, go to Storage → Export as JSON, CSV, Excel.
Support
Open an issue on the Actor's page for bugs or feature requests.