Google Trends Scraper — related queries, by region, CSV/JSON
Pricing
from $0.25 / 1,000 results
Google Trends Scraper — related queries, by region, CSV/JSON
Google Trends interest over time, interest by region and related queries as flat CSV/JSON rows, one row per data point with a stable id. $0.25 per 1,000 rows; session rotation on rate limits.
Pricing
from $0.25 / 1,000 results
Rating
0.0
(0)
Developer
Tallyrake Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Google Trends as Excel-ready rows: interest over time, interest by region, related queries. One flat row per data point, each with a stable id. $0.25 per 1,000 rows.
| This actor | Official Google Trends actor | |
|---|---|---|
| Price | $0.25 per 1,000 rows | $0.30 per 1,000 rows |
| Output shape | Flat rows, one per data point, stable id | Nested timeline arrays |
| On a Google 429 | Session rotates and the run continues (observed in our soak runs, see Reliability) | Not documented |
| Failed or timed-out runs, last 30 days (public store stats, 2026-09-09) | Not enough public runs yet; listing is new | 27% (5,996 of 21,833) |
| Empty related topics | Zero rows, zero charge, run succeeds | Not documented |
Try it for free
{"searchTerms": ["coffee"],"outputs": ["interestOverTime", "relatedQueries"],"geo": "US","timeRange": "today 12-m"}
Measured on 2026-09-09 (run ef6NeMf4qBi5flDSI): 53 interest-over-time rows and 50 related-query rows, 103 rows, $0.026 at $0.25 per 1,000. Row counts vary by term and range.
Example output rows
{"type": "interestOverTime","term": "coffee","geo": "US","timeRange": "today 12-m","time": "2025-09-07T00:00:00.000Z","formattedTime": "Sep 7 – 13, 2025","value": 58,"isPartial": false,"fetchedAt": "2026-09-09T06:39:34.060Z","id": "b3790555d1acb5d3"}
{"type": "relatedQueries","term": "coffee","list": "top","rank": 1,"query": "coffee shop","value": 88,"formattedValue": "88","link": "/trends/explore?q=coffee+shop&date=today+12-m&geo=US","fetchedAt": "2026-09-09T06:39:34.060Z","id": "172b002ab25dde86"}
What you get
Every dataset row carries type, term, fetchedAt (ISO timestamp), and a stable id (a hash of the row's type, term, and time/location/query key, so the same logical data point always gets the same id across runs).
interestOverTime
| Field | Description |
|---|---|
term | The search term this row belongs to |
geo | Geo filter used for the request ("" = worldwide) |
timeRange | The time range or custom range used for the request |
time | ISO 8601 timestamp of the data point |
formattedTime | Google's human-readable label for the point (e.g. "Sep 7 – 13, 2025") |
value | Relative search interest, 0-100 |
isPartial | True when Google flags this point as incomplete (usually the most recent point) |
interestByRegion
| Field | Description |
|---|---|
term | The search term this row belongs to |
geo | Geo filter used for the request |
resolution | COUNTRY, REGION, CITY, or DMA |
geoCode | Google's code for the region (e.g. US, US-CA) |
geoName | Human-readable region name |
value | Relative search interest in that region, 0-100 |
relatedQueries
| Field | Description |
|---|---|
term | The search term this row belongs to |
list | top or rising |
rank | 0-based position within its list |
query | The related search query |
value | For top: 0-100 relative popularity. For rising: percentage growth, capped at 5000 to represent "Breakout" |
formattedValue | Google's display string (e.g. "100" or "Breakout") |
link | Relative Google Trends explore URL for that query |
relatedTopics (opt-in, best effort)
Same row shape as relatedQueries, with topicTitle, topicType, and topicMid (Google's topic identifier) in place of query.
As of September 2026, Google returns an empty related-topics list to most automated sessions even for mainstream terms, while related queries keep working. The actor requests topics only when you select this output in outputs, reports zero rows without failing the run when Google returns none, and does not charge for rows it did not return.
Time ranges and geo codes
timeRange accepts Google Trends' own presets: now 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m, today 12-m (default), today 5-y, or all (2004-present). Set customTimeRange to a specific window instead, formatted "YYYY-MM-DD YYYY-MM-DD" — this overrides timeRange when set.
geo takes a two-letter country code (US, GB, DE, ...), a country-region code (US-CA, US-NY, ...), or an empty string for worldwide. Region codes follow Google's own Trends explorer, which follows ISO 3166.
How results are counted for pricing
Every pushed dataset row (one interest-over-time point, one region, one related query, one related topic) is one result. A single run over N terms and M output types produces roughly N × (points-per-timeseries + regions-per-geo-map + related-queries-found + related-topics-found), which varies by term and how much data Google has for it. Related queries/topics commonly return 0-50 rows per list; interest-by-region at COUNTRY resolution returns around 250 rows (one per country), and narrower resolutions return more.
Recipes
Compare three terms on one scale
Put three products or brands on the same 0-100 axis instead of three separate scales.
{"searchTerms": ["coffee", "tea", "matcha"],"compareTerms": true,"outputs": ["interestOverTime"],"geo": "US","timeRange": "today 12-m"}
Row count and cost: estimate, roughly 150-160 rows (about 52 weekly points per term over 12 months), well under $0.05. No real run at this exact input yet.
US interest plus rising queries as CSV
Pull one term's trend line and what people are searching alongside it, then hand the dataset straight to a spreadsheet.
{"searchTerms": ["coffee"],"outputs": ["interestOverTime", "relatedQueries"],"geo": "US","timeRange": "today 12-m"}
Measured on 2026-09-09 (run ef6NeMf4qBi5flDSI): 53 interest-over-time rows and 50 related-query rows, 103 rows, $0.026. On the run's Dataset tab, use the Export button and choose CSV. To pull it by URL instead: https://api.apify.com/v2/datasets/<datasetId>/items?format=csv, where <datasetId> is the run's dataset ID from the Console or the API response.
My last Trends tool returned 429 — try this input
A shorter window, one term, and paced requests so a rate limit does not end the run.
{"searchTerms": ["coffee"],"outputs": ["interestOverTime", "relatedQueries"],"geo": "US","timeRange": "today 3-m","pacingMs": 500}
Row count and cost: estimate, in the range of the 103-row run above, under $0.05. This works because each search term gets its own session that rotates on a real 429: in our own test runs, a fresh session per term saw 0 real 429s in 30 requests across two runs, down from 7 real 429s in 28 requests on the prior version.
No Apify Console feature prefills an actor's input from a URL for a stranger to click through (checked docs.apify.com, September 2026); copy the input above into the Input editor by hand.
Advanced options
searchTermsaccepts 1 to 5 terms per Google Trends comparison; more than 5 are automatically batched into separate comparison calls of up to 5.compareTerms(default off): when enabled, all search terms in a comparison are sent together so their values are relative to each other (one term is the 0-100 anchor). Off by default, each term is scored independently on its own 0-100 scale.maxConcurrency(default 2, max 3): how many search terms are processed in parallel. Higher values finish faster but raise the chance of Google 429s.requestsPerSession(default 8): reuse a Trends session for this many successful requests, then rotate. A session still rotates immediately on a real 429, regardless of this setting.proxyConfiguration(default: Apify Proxy on): Google Trends rate-limits by IP. Using Apify Proxy is strongly recommended for any run beyond a couple of terms.category,searchType, andregionResolutionnarrow the request to a Google Trends category, search vertical (web/images/news/YouTube/Shopping), and region granularity.
Coming from pytrends or google-trends-api?
Two symptoms bring people here.
Related queries come back empty. google-trends-api's own issue tracker reports an empty rankedList for related queries (pat310/google-trends-api#174, open since 2025-02-19), and pytrends has been archived since August 2024, so neither library will be fixed upstream. The current widget protocol (an explore call, then a per-widget token, then the relatedsearches call) still returns data. This actor uses the current protocol; the relatedQueries rows in the example above came from a real run on 2026-09-09. Related topics are different: Google returns an empty list to automated sessions for that widget, so it is opt-in and never charged when empty.
HTTP 429 (too many requests). Two 429s get mixed up. The first request to trends.google.com/trends/explore always answers 429 while it sets the NID cookie; that one is harmless if the cookie is kept. The real rate limit hits the /trends/api/ calls when one IP or session makes too many requests in a short window. This actor keeps a session, rotates it on a real 429, retries with backoff, and continues with the other terms; a run fails only if every term fails. In our test runs on 2026-09-09 every term completed from both a home IP and Apify datacenter proxies. On datacenter, version 0.1.2 saw 7 real 429s in 28 requests, all recovered by session rotation; version 0.1.11 (fresh session per term, paced requests) saw 0 real 429s in 30 requests across two runs of 15 on the same input. Expect occasional retries rather than failures.
Reliability
Sessions rotate automatically on a Google 429 response and retry with exponential backoff (1s, 2s, 4s, capped, up to 5 attempts). If a search term still fails after all retries, that term's failure is logged and the run continues with the remaining terms; the run fails outright only if every term fails.
Limitations
- Google Trends values are relative, not absolute: 100 marks the peak popularity for the selected term, time range, and geo — not a fixed volume of searches.
- With
compareTermsenabled, all terms in that comparison share one 0-100 scale relative to whichever term peaks highest; with it disabled (default), each term is scored independently and values are not comparable across terms. - Google does not guarantee availability or consistency of historical data, and can change or withdraw related queries/topics for a given term with no notice.
- Very low-volume terms may return empty or partial results, particularly for
interestByRegion. relatedTopicsis frequently empty for automated sessions (see above); rely onrelatedQueriesfor keyword expansion.
Support
Questions or issues: ops@tallyrake.com