Google Trends Scraper
Pricing
from $6.00 / 1,000 results
Google Trends Scraper
Scrape Google Trends: interest over time, interest by region, related queries, keyword comparisons and Trending Now searches with news. Any country, period, category and search type. Fast HTTP scraper, no browser.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
code craker
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Get the data behind Google Trends as clean JSON, CSV or Excel: interest over time, interest by region, related queries, side-by-side keyword comparisons, and the Trending Now list of searches that are spiking right now — with search volume, growth and news articles.
The actor talks to Google Trends over plain HTTP — no browser — so a keyword takes a few seconds and a full Trending Now list for a country about ten.
Features
- 📈 Interest over time — Google's 0–100 scale for any period: the past hour (minute by minute), past 7 days (hourly), past 5 years (weekly), back to 2004, or your own dates.
- 🗺 Interest by region — by country, state or province, metro area or city (cities come with coordinates).
- 🔎 Related queries — the most common related searches and the fastest rising ones, with breakouts flagged.
- ⚖️ Compare up to 5 terms — put them on one line; each term gets its own result plus its share of searches in every region.
- 🔥 Trending Now — what is spiking in a country in the past 4 hours to 7 days: search volume, growth, start and end time, category, related searches and, optionally, news articles.
- 🌍 Any place — 230+ countries, or regions such as
US-CA. Run the same searches for several places at once. - 🏷 Category and search type — narrow a word with several meanings to one category, and choose Web, Image, News, YouTube or Shopping search.
- 🔗 Paste Google Trends links — copy a link from the Explore page and get the same data.
- 🧮 Ready-made summary — average, peak, peak date, latest interest, top region and top rising query for every term, so you can sort and filter without unpacking the series.
- 📄 Nested or flat output — one result per term with everything inside, or one row per date, region and related search for spreadsheets and databases.
Use cases
- Keyword and content research: find rising searches before they peak
- Product and market research: compare brands, track seasonality, find where demand is
- News and social media: follow what is trending in a country right now
- Dashboards and reports that need fresh Google Trends data on a schedule
- Datasets for forecasting and AI
Quick start
- Enter one or more search terms, e.g.
bitcoin. To compare, put terms on one line:bitcoin, ethereum. - Pick a country and time range (or keep Worldwide and the past 12 months).
- Run. You get one result per term.
For Trending Now, pick one or more countries under Trending Now — search terms are not needed.
Input
| Field | Type | Description |
|---|---|---|
searchTerms | array | Terms to analyse, one search per line. Commas on a line compare up to 5 terms. |
geo | string | Country code such as US; empty for Worldwide. |
timeRange | string | 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. |
startDate / endDate | string | A custom period (yyyy-mm-dd), replacing timeRange. |
category | string | Google Trends category number; 0 (default) is all categories. |
searchType | string | web (default), images, news, youtube or shopping. |
outputFormat | string | nested (default): one result per term. rows: one row per data point. |
startUrls | array | Links copied from the Google Trends Explore page. |
geoCodes | array | Several places to run every search for, e.g. US, GB, US-CA. Replaces geo. |
compareTerms | boolean | Treat commas as separators between compared terms. Default true. |
includeInterestOverTime | boolean | Default true. |
includeInterestByRegion | boolean | Default true. |
regionResolution | string | auto (default), country, region, metro or city. |
includeLowVolumeRegions | boolean | Include places with few searches. Default false. |
includeRelatedQueries | boolean | Default true. |
includeRelatedTopics | boolean | Default true. |
trendingCountries | array | Countries to get Trending Now for, e.g. US, GB. |
trendingHours | string | 4, 24 (default), 48 or 168. |
trendingCategories | array | Only trends in these categories, e.g. Sports, Technology. |
trendingStatus | string | all (default), active or ended. |
trendingMaxItems | integer | Trends to return per country; 0 (default) returns all. |
trendingIncludeNews | boolean | Add news articles to each trend. Default false. |
language | string | Language of names and labels, e.g. en-US, fr, de. |
proxyConfiguration | object | Proxy settings. The default is recommended. |
Examples
Compare three terms in the United States over five years:
{"searchTerms": ["coffee, tea, matcha"],"geo": "US","timeRange": "today 5-y"}
The top 50 active trends in the UK and Germany with news:
{"trendingCountries": ["GB", "DE"],"trendingStatus": "active","trendingMaxItems": 50,"trendingIncludeNews": true}
Output
Every item has a type: keyword for an analysed search term, trending for a Trending Now search.
Keyword item
{"type": "keyword","searchTerm": "coffee","comparedWith": ["tea", "matcha"],"hasData": true,"averageInterest": 59,"peakInterest": 100,"peakDate": "2026-04-12T00:00:00.000Z","latestInterest": 71,"dataPoints": 262,"regionCount": 51,"topRegion": "Hawaii","relatedQueryCount": 50,"topQuery": "coffee near me","topRisingQuery": "ryze coffee","topRisingQueryWithTerm": "ryze coffee","interestOverTime": [{ "date": "2021-10-10T00:00:00.000Z", "label": "Oct 10 – 16, 2021", "value": 53, "isPartial": false }],"interestByRegion": [{ "code": "US-HI", "name": "Hawaii", "value": 93, "shareOfComparison": 63 }],"relatedQueries": {"top": [{ "query": "coffee near me", "value": 100, "formattedValue": "100", "link": "https://trends.google.com/trends/explore?q=coffee+near+me&date=today+5-y&geo=US" }],"rising": [{ "query": "ryze coffee", "value": 10400, "formattedValue": "Breakout", "link": "https://trends.google.com/trends/explore?q=ryze+coffee&date=today+5-y&geo=US", "isBreakout": true }]},"relatedTopics": { "top": [], "rising": [] },"geo": "US","timeRange": "today 5-y","timeRangeLabel": "Past 5 years","category": "All categories","searchType": "web","trendsUrl": "https://trends.google.com/trends/explore?date=today+5-y&geo=US&q=coffee%2Ctea%2Cmatcha","scrapedAt": "2026-10-12T18:20:00.000Z"}
In the dataset's table view the lists are summarised by dataPoints, regionCount and relatedQueryCount; switch to All fields or export JSON to get the lists themselves.
Row output
With outputFormat set to rows, each term is spread into flat rows instead — easy to open in a spreadsheet, chart or load into a database. Every row carries the term, place, period and link.
{ "type": "interest_over_time", "searchTerm": "coffee", "date": "2021-10-10T00:00:00.000Z", "label": "Oct 10 – 16, 2021", "value": 53, "isPartial": false, "geo": "US", "timeRange": "today 5-y" }{ "type": "interest_by_region", "searchTerm": "coffee", "code": "US-HI", "name": "Hawaii", "value": 93, "geo": "US", "timeRange": "today 5-y" }{ "type": "related_query", "searchTerm": "coffee", "ranking": "rising", "position": 1, "query": "ryze coffee", "value": 10400, "formattedValue": "Breakout", "isBreakout": true, "geo": "US", "timeRange": "today 5-y" }
A term over the past 12 months gives roughly 53 time rows, up to a few hundred region rows and up to 50 related-search rows. Turn off the parts you do not need under What to collect to get only the rows you want. The dataset has a ready-made table view for each kind of row.
Trending item
{"type": "trending","rank": 1,"term": "columbus day","searchVolume": 500000,"searchVolumeFormatted": "500K+","growthPercent": 500,"isActive": true,"startedAt": "2026-10-11T21:00:00.000Z","endedAt": null,"categories": ["Hobbies and Leisure"],"relatedSearches": ["is today a federal holiday", "indigenous peoples day"],"news": [{"title": "What is open and closed on Columbus Day","url": "https://www.example.com/news/columbus-day","source": "Example News","publishedAt": "2026-10-12T17:04:56.000Z","imageUrl": "https://encrypted-tbn1.gstatic.com/images?q=..."}],"geo": "US","timeframeHours": 24,"trendsUrl": "https://trends.google.com/trends/explore?q=columbus+day&date=now+1-d&geo=US","scrapedAt": "2026-10-12T18:20:00.000Z"}
Good to know
- Values are relative, not counts. Google Trends scores interest from 0 to 100 within the period and place you choose: 100 is the peak, 50 is half as popular. In a comparison all terms share one scale, so
averageInterestshows how they rank against each other. - The latest point can be incomplete. The current hour, week or month is still filling up; such points have
isPartial: true, andlatestInterestskips them. - Rising queries.
valueis the growth in percent;Breakoutmeans growth above 5,000%. Google does not filter this list for relevance — a search for "openai" can be led by "walmart near me" — so each item also hastopRisingQueryWithTerm: the fastest rising search that contains the term itself. - Too little data. For rare terms, small places or narrow periods Google has nothing to show. The item is still returned, with
hasData: false. - Region detail depends on the place. Countries exist only for worldwide searches, metro areas mainly in the United States, and city data is missing for short periods. When Google has nothing at the level you chose, the actor uses the level Google offers by default and says so in the log.
- Related topics are returned when Google provides them; lately it often does not.
- Trending Now is not available for every country, and Google decides how many trends it lists — a few dozen in small countries, several hundred in large ones.
rankis the trend's position in Google's full list, so it keeps its place when you filter. - Proxies. Google limits how many Trends requests one IP address may make. The actor spreads its requests over many addresses, starting on datacenter proxies and switching to residential proxies by itself if Google begins refusing them.
Billing
You pay per result saved to the dataset — one per search term and one per trending search. With row output each row is a result, so a term costs as many results as it has rows; use it when you want the flat format, and the default when you want the most data per result. The run stops on its own when it reaches the maximum charge you set, so you never pay for more than you asked for.
Local development
npm installnpm test # parser, input and scraping-flow unit testsapify run # runs with the input in storage/key_value_stores/default/INPUT.json