Google Trends Scraper
Pricing
from $1.00 / 1,000 results
Google Trends Scraper
FAST & CHEAP — $1 / 1,000 results. Scrape Google Trends by keyword or URL: trends over time, subregions, related queries/topics, locations, time ranges and categories. Export data, run via API, schedule and monitor runs.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Alexandre Manguis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract Google Trends data for any search term — interest over time, interest by region, and related queries. Supports single terms, comparison groups, Google Trends URLs, and public Google Sheets.
No API key required.
What you get
For each term or URL, the actor returns one item in the dataset:
| Field | Description |
|---|---|
interestOverTime_timelineData | Weekly or daily interest scores (0–100) over the selected period |
interestOverTime_averages | Average interest score per compared term |
interestBy | Interest by country (when geo = Worldwide) |
interestBySubregion | Interest by region within a country |
interestByCity | Interest by city |
interestByMetro | Interest by metro area |
relatedQueries_top | Top related search queries |
relatedQueries_rising | Breakout related search queries |
relatedTopics_top | Top related topics |
relatedTopics_rising | Rising related topics |
widgetErrors | List of widgets that returned no data (empty = everything worked) |
Input
Single term
{"searchTerms": ["web scraping"]}
Compare terms
Separate terms with a comma inside the same item and enable isMultiple. Google Trends compares up to 5 terms.
{"searchTerms": ["ChatGPT, Claude, Gemini"],"isMultiple": true}
Specific country + time range
{"searchTerms": ["intelligence artificielle"],"geo": "FR","timeRange": "today 12-m","viewedFrom": "fr"}
From a Google Trends URL
Paste any Google Trends explore URL directly. All parameters (term, geo, date, category) are read from the URL.
{"startUrls": [{ "url": "https://trends.google.com/trends/explore?date=today%2012-m&geo=US&q=web+scraping" }]}
From a public Google Sheet
Provide the spreadsheet ID. The actor reads the first column, skipping the first row (treated as a header).
{"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms"}
All input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | string[] | — | Search terms to scrape |
isMultiple | boolean | false | Treat commas as comparison groups |
startUrls | object[] | — | Google Trends explore URLs |
spreadsheetId | string | — | Public Google Sheet ID (one term per row) |
timeRange | string | "" | See options below |
customTimeRange | string | — | Custom date range, e.g. 2024-01-01 2024-12-31 |
geo | string | "" | Country code (US, FR, DE…). Empty = Worldwide |
viewedFrom | string | — | Proxy country for geo-accurate results (us, fr…) |
category | string | "" | Google Trends category ID. Empty = All categories |
maxItems | number | 0 | Max tasks to process. 0 = unlimited |
maxConcurrency | number | 10 | Number of parallel requests |
maxRequestRetries | number | 7 | Retries per failed request |
pageLoadTimeoutSecs | number | 180 | Timeout in seconds per task |
Time range options
| Value | Period |
|---|---|
"" | Past 12 months (default) |
now 1-H | Past hour |
now 4-H | Past 4 hours |
now 1-d | Past day |
now 7-d | Past 7 days |
today 1-m | Past 30 days |
today 3-m | Past 90 days |
today 5-y | Past 5 years |
all | 2004–present |
Output example
{"searchTerm": "web scraping","searchTerms": ["web scraping"],"geo": "","timeRange": "today 12-m","exploreUrl": "https://trends.google.com/trends/explore?date=today+12-m&q=web+scraping&hl=en-US","interestOverTime_timelineData": [{"time": "1747526400","formattedTime": "May 18 – 24, 2025","value": [33],"formattedValue": ["33"],"hasData": [true]}],"interestOverTime_averages": [72],"interestBy": [{"geoCode": "US","geoName": "United States","value": [100],"formattedValue": ["100"],"hasData": [true]},{"geoCode": "IN","geoName": "India","value": [87],"formattedValue": ["87"],"hasData": [true]}],"interestBySubregion": [],"interestByCity": [],"interestByMetro": [],"relatedQueries_top": [{"query": "web data scraping","value": 100,"formattedValue": "100","hasData": true,"link": "/trends/explore?q=web+data+scraping&date=today+12-m"},{"query": "python web scraping","value": 78,"formattedValue": "78","hasData": true,"link": "/trends/explore?q=python+web+scraping&date=today+12-m"}],"relatedQueries_rising": [{"query": "ai web scraping","value": 5000,"formattedValue": "Breakout","hasData": true,"link": "/trends/explore?q=ai+web+scraping&date=today+12-m"}],"relatedTopics_top": [],"relatedTopics_rising": [],"widgetErrors": [],"scrapedAt": "2026-05-20T07:44:57.000Z"}
interestBySubregion,interestByCity, andinterestByMetroare only populated when a specificgeocountry is set.interestBy(countries) is returned for Worldwide searches. Some fields may be empty for low-volume terms or short time ranges.
Tips
- For country-specific results, set both
geo(e.g."US") andviewedFrom(e.g."us").viewedFromroutes requests through a residential proxy in that country, which gives the most accurate local data. - For comparisons, enable
isMultipleand separate terms with a comma:"ChatGPT, Claude". Each result item will include asearchTermfield identifying which term the data belongs to. - For large lists, use
spreadsheetIdwith a public Google Sheet and setmaxConcurrencybetween 3 and 5 to stay within rate limits. - Empty
widgetErrorsmeans all data was retrieved successfully.
Keywords
google trends, search trends, keyword trends, trending topics, interest over time, related queries, related topics, geographic interest, search volume, trend analysis, keyword research, SEO trends, topic popularity, google search data, search interest, trend scraper, google data, market research, trend monitoring, google trends api, trending keywords, search popularity, breakout queries, rising queries, trend data export, google trends csv, competitor comparison, brand tracking, search demand