Google Trends Scraper: Interest Over Time & Related Queries avatar

Google Trends Scraper: Interest Over Time & Related Queries

Pricing

from $2.10 / 1,000 result scrapeds

Go to Apify Store
Google Trends Scraper: Interest Over Time & Related Queries

Google Trends Scraper: Interest Over Time & Related Queries

Google Trends API alternative: interest over time, interest by country/region/city, related & rising queries and topics, keyword comparisons and Trending Now with news. Any country, time range, category or property (Web, YouTube, News, Shopping, Images). Pay per result.

Pricing

from $2.10 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Torix

Torix

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Trends Scraper — Interest Over Time, Regions, Related Queries & Trending Now

Get Google Trends data in bulk, without the (non-existent) public API. For every search term or comparison you get the full Explore page as structured JSON: interest over time, interest by country/region/city, top & rising related queries (incl. Breakout) — plus Google's daily Trending Now topics with traffic estimates and news articles.

Export to JSON, CSV or Excel, or plug it into Google Sheets, Make, Zapier, n8n or your AI agent.

How to run it in 3 steps

  1. Add your input. In Search terms paste keywords (comma-separate up to 5 to compare them) — e.g. coffee, tea. The form is already filled with a working example, so you can skip this step for a first try.
  2. Press Start. Set Max results in total to cap the cost of bigger runs; you only pay for results actually delivered.
  3. Get the data. Open the Output tab and export JSON, CSV or Excel — or run it from the API, Make, Zapier, n8n or an AI agent (see below).

What you get

SectionDescription
Interest over timeTimeline of values 0–100 per term, with averages for comparisons. Hourly, daily, weekly or monthly points depending on the time range.
Interest by regionBreakdown by country, sub-region (state), city or US metro (DMA).
Related queriesTop and rising searches for each term, including Breakout queries (+5000%).
Related topicsTop and rising topics, when Google provides them.
Trending NowDaily trending searches per country with approximate traffic, start time, picture and related news articles.

Features

  • Compare up to 5 terms on one chart — just separate them with commas: coffee, tea, matcha.
  • Any country or region (US, GB, US-CA…) or worldwide.
  • Any time range: past hour, 4 hours, day, 7 days, 30 days, 90 days, 12 months, 5 years, since 2004, or a custom YYYY-MM-DD YYYY-MM-DD range.
  • Categories (e.g. 71 = Food & Drink) and search types: Web, Image, News, Google Shopping and YouTube search.
  • Built for Google's rate limits: cookie-warmed sessions, IP rotation through Apify Proxy, exponential backoff, and partial-progress caching so retries never redo work that already succeeded.
  • Fair billing: you pay only for rows with data (status: "ok"). If the interest-over-time chart comes back empty, the search is retried on new IPs; if Google still has no data for that term/geo/time/search type, the row is returned with status: "no_data" and a log message, free of charge. Searches Google keeps blocking come back with whatever was collected, status: "incomplete" + incompleteSections, also free.

Pricing

$3.00 per 1,000 results ($0.003 per result). One result = one search term or comparison with all selected sections (status: "ok"), or one Trending Now topic. Rows with status: "no_data" or "incomplete" are never charged.

ExampleResultsCost
100 keywords, full report each100$0.30
Daily Trending Now for 10 countries (~20 topics each)200$0.60

Use Max results in total to cap any run.

Input example

{
"searchTerms": ["pickleball", "coffee, tea, matcha"],
"geo": "US",
"timeRange": "today 3-m",
"property": "web",
"includeInterestOverTime": true,
"includeInterestByRegion": true,
"includeRelatedQueries": true,
"trendingNowGeos": ["US", "GB"],
"maxTrendingPerGeo": 10
}

Output examples

Explore result (arrays shortened to one element):

{
"type": "explore",
"status": "ok",
"searchTerms": [
"coffee",
"tea",
"matcha"
],
"geo": "US",
"timeRange": "today 3-m",
"category": 0,
"property": "web",
"exploreUrl": "https://trends.google.com/trends/explore?q=coffee%2Ctea%2Cmatcha&geo=US&date=today+3-m",
"interestOverTime": [
{
"date": "2026-07-13T00:00:00.000Z",
"formattedTime": "Jul 13, 2026",
"values": {
"coffee": 58,
"tea": 28,
"matcha": 4
}
}
],
"averages": {
"coffee": 54,
"tea": 24,
"matcha": 4
},
"interestByRegion": [
{
"geoCode": "US-HI",
"geoName": "Hawaii",
"values": {
"coffee": 66,
"tea": 26,
"matcha": 8
}
}
],
"relatedQueries": {
"matcha": {
"top": [
{
"query": "matcha me",
"value": 100,
"formattedValue": "100",
"link": "https://trends.google.com/trends/explore?q=matcha+me&date=today+3-m&geo=US"
}
],
"rising": [
{
"query": "matcha flavored minecraft",
"value": 45550,
"formattedValue": "Breakout",
"link": "https://trends.google.com/trends/explore?q=matcha+flavored+minecraft&date=today+3-m&geo=US",
"isBreakout": true
}
]
}
},
"relatedTopics": {},
"scrapedAt": "2026-10-13T14:12:17.152Z"
}

Trending Now result:

{
"type": "trending",
"rank": 1,
"title": "guilfoyle",
"approxTraffic": "5000+",
"approxTrafficNumber": 5000,
"publishedAt": "2026-10-13T13:50:00.000Z",
"picture": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT6Uuw3CKVaYneeLM9ihQ0Oiv6wr_nazjZMtwuKmbGmGi8Z2EvHFH0VGQEAk1E",
"pictureSource": "The New York Times",
"news": [
{
"title": "Trump Says He Is ‘Looking at’ Firing Kimberly Guilfoyle",
"url": "https://www.nytimes.com/2026/10/12/us/politics/trump-kimberly-guilfoyle-greece.html",
"source": "The New York Times",
"picture": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT6Uuw3CKVaYneeLM9ihQ0Oiv6wr_nazjZMtwuKmbGmGi8Z2EvHFH0VGQEAk1E"
}
],
"geo": "US",
"exploreUrl": "https://trends.google.com/trends/explore?q=guilfoyle&geo=US&date=now+1-d",
"scrapedAt": "2026-10-13T14:12:26.991Z"
}

Ask in plain English

Using Apify AI, Claude, ChatGPT or another MCP client? Just describe what you need, the agent fills the input for you:

You askInput the agent sends
"How has interest in 'chatgpt' changed in the US over the past year?"{"searchTerms": ["chatgpt"], "geo": "US", "timeRange": "today 12-m"}
"What is trending on Google in the UK and Germany right now?"{"trendingNowGeos": ["GB", "DE"]}
"Show related and rising queries for 'electric bike'"{"searchTerms": ["electric bike"]}

Use with AI agents (MCP), LangChain, RAG & the API

This actor is a ready-made tool for AI agents: an LLM can call it, wait for the run and read clean JSON back.

MCP server (Claude Desktop, Claude Code, Cursor, VS Code, any MCP client) — add Apify's hosted MCP server with this actor enabled as a tool:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=torix33/google-trends-scraper",
"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
}
}
}

LangChain / LangGraph (pip install langchain-apify, set APIFY_API_TOKEN):

import json
from langchain_apify import ApifyActorsTool, ApifyWrapper
from langchain_core.documents import Document
# 1) give the actor to an agent as a tool
tool = ApifyActorsTool("torix33/google-trends-scraper")
# 2) or load results as Documents for a RAG index
loader = ApifyWrapper().call_actor(
actor_id="torix33/google-trends-scraper",
run_input={"searchTerms": ["pickleball", "coffee, tea, matcha"], "geo": "US", "timeRange": "today 3-m", "property": "web", "includeInterestOverTime": True, "includeInterestByRegion": True, "includeRelatedQueries": True, "trendingNowGeos": ["US", "GB"], "maxTrendingPerGeo": 10},
dataset_mapping_function=lambda item: Document(page_content=json.dumps(item, ensure_ascii=False), metadata={"url": item.get("url")}),
)
docs = loader.load()

REST API — one synchronous call, dataset items in the response:

curl -X POST "https://api.apify.com/v2/acts/torix33~google-trends-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["pickleball", "coffee, tea, matcha"], "geo": "US", "timeRange": "today 3-m", "property": "web", "includeInterestOverTime": true, "includeInterestByRegion": true, "includeRelatedQueries": true, "trendingNowGeos": ["US", "GB"], "maxTrendingPerGeo": 10}'

Also works with the Apify Python/JS clients, Make, Zapier, n8n, Google Sheets, webhooks and schedules. Export as JSON, CSV, Excel, XML or RSS.

RAG tip: Agents work best with the relatedQueries and Trending Now rows — pass them as a compact table so the model can spot rising topics without parsing charts.

How to read the numbers

Google Trends values are relative (0–100), not absolute search volumes. 100 is the peak popularity for the chosen terms, location and time range. Values are only comparable within the same request — that's why comparisons (comma-separated terms) are the best way to benchmark keywords against each other.

Use cases

  • SEO & content: find rising and breakout queries before competitors do.
  • E-commerce & product research: validate demand and seasonality before you stock or launch.
  • Market research & investing: track brands, tickers and products over time and across regions.
  • Media & social: daily Trending Now topics with the news behind them.
  • AI agents & dashboards: feed fresh trend data into LLM workflows, Looker Studio or Google Sheets on a schedule.

Tips

  • Google Trends rate-limits heavily. Keep Max concurrency at 2–5; for thousands of terms use the RESIDENTIAL proxy group.
  • Related topics are often empty in Google's own UI too; they're never returned for comparisons.
  • Single-term results have averages: null — Google only returns averages for comparisons.

FAQ

Is there an official Google Trends API? Not a public one for general use. This actor reads the same data the Google Trends website displays.

Why do I get a row with status: "no_data"? Google has not enough search volume for that term in the selected country, period and search type (common for YouTube / News / Shopping searches over short periods in smaller markets). The actor retries on fresh IPs first; the row is free. Try a longer time range, the Web search type or worldwide.

Why does a run report incompleteSections? Google refused a section even after several IP rotations. You get the rest of the data for free; re-run those terms later or with residential proxy.

Limitations

  • Relative values only. Google Trends gives 0–100 popularity, not absolute search volumes; numbers are comparable only within one request.
  • Up to 5 terms per comparison (Google's own limit). Put more terms on separate lines to get separate requests.
  • Low-volume terms (small countries, short periods, YouTube/News/Shopping search) often have no data at all: you get a status: "no_data" row, free of charge.
  • Rate limits. Google throttles heavy use; very large batches are slower, and a section Google keeps refusing is reported in incompleteSections (not charged).
  • Related topics are often empty for single terms and never returned for comparisons — the same as on the Google Trends website.

Support

Missing a feature (e.g. category browser, CSV-style flat output)? Open an issue on the Issues tab.