Google Trends Scraper avatar

Google Trends Scraper

Pricing

from $6.00 / 1,000 results

Go to Apify Store
Google Trends Scraper

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

code craker

Maintained by Community

Actor 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

  1. Enter one or more search terms, e.g. bitcoin. To compare, put terms on one line: bitcoin, ethereum.
  2. Pick a country and time range (or keep Worldwide and the past 12 months).
  3. Run. You get one result per term.

For Trending Now, pick one or more countries under Trending Now — search terms are not needed.

Input

FieldTypeDescription
searchTermsarrayTerms to analyse, one search per line. Commas on a line compare up to 5 terms.
geostringCountry code such as US; empty for Worldwide.
timeRangestringnow 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 / endDatestringA custom period (yyyy-mm-dd), replacing timeRange.
categorystringGoogle Trends category number; 0 (default) is all categories.
searchTypestringweb (default), images, news, youtube or shopping.
outputFormatstringnested (default): one result per term. rows: one row per data point.
startUrlsarrayLinks copied from the Google Trends Explore page.
geoCodesarraySeveral places to run every search for, e.g. US, GB, US-CA. Replaces geo.
compareTermsbooleanTreat commas as separators between compared terms. Default true.
includeInterestOverTimebooleanDefault true.
includeInterestByRegionbooleanDefault true.
regionResolutionstringauto (default), country, region, metro or city.
includeLowVolumeRegionsbooleanInclude places with few searches. Default false.
includeRelatedQueriesbooleanDefault true.
includeRelatedTopicsbooleanDefault true.
trendingCountriesarrayCountries to get Trending Now for, e.g. US, GB.
trendingHoursstring4, 24 (default), 48 or 168.
trendingCategoriesarrayOnly trends in these categories, e.g. Sports, Technology.
trendingStatusstringall (default), active or ended.
trendingMaxItemsintegerTrends to return per country; 0 (default) returns all.
trendingIncludeNewsbooleanAdd news articles to each trend. Default false.
languagestringLanguage of names and labels, e.g. en-US, fr, de.
proxyConfigurationobjectProxy 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.

{
"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 averageInterest shows 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, and latestInterest skips them.
  • Rising queries. value is the growth in percent; Breakout means 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 has topRisingQueryWithTerm: 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. rank is 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 install
npm test # parser, input and scraping-flow unit tests
apify run # runs with the input in storage/key_value_stores/default/INPUT.json