Google Trends API — interest over time, region, related queries avatar

Google Trends API — interest over time, region, related queries

Pricing

from $8.00 / 1,000 keyword × widget results

Go to Apify Store
Google Trends API — interest over time, region, related queries

Google Trends API — interest over time, region, related queries

Google Trends data as JSON: interest over time, interest by region, related queries/topics for any keyword, plus trending searches per country. HTTP-only, correct multi-keyword semantics, no infinite retries. Pay per keyword×widget.

Pricing

from $8.00 / 1,000 keyword × widget results

Rating

0.0

(0)

Developer

Alex Lin

Alex Lin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Google Trends as clean JSON — interest over time, interest by region, related queries/topics, and trending-now searches for any keyword and country. HTTP-only (no browser), pay only for data that actually comes back, and built specifically to fix the reliability problems that plague the existing Google Trends scrapers on the Store. Point it at one or more keywords, pick which of the four data types you want, and get structured dataset items back in seconds — ready for the API, a schedule, an integration, or an MCP-connected agent.

Sample output

One dataset item per keyword × widget (plus one item per trending search). Interest-over-time for bitcoin (US, last 12 months):

{
"keyword": "bitcoin",
"widget": "interest_over_time",
"geo": "US",
"timeframe": "today 12-m",
"category": 0,
"gprop": "",
"compare": false,
"compared_with": null,
"scale": "own_0_100",
"average": null,
"data": [
{ "time": "2025-09-07T00:00:00.000Z", "formatted_time": "Sep 7 – 13, 2025", "value": 22, "is_partial": false },
{ "time": "2025-09-14T00:00:00.000Z", "formatted_time": "Sep 14 – 20, 2025", "value": 25, "is_partial": false }
],
"error": null,
"fetched_at": "2026-09-13T19:44:29.364Z",
"source_url": "https://trends.google.com/trends/explore?q=bitcoin&date=today+12-m&geo=US&cat=0&gprop="
}

A trending_now item (no keyword needed — just pick a country):

{
"widget": "trending_now",
"keyword": null,
"geo": "US",
"title": "cardinals vs chargers",
"traffic": "20000+",
"published_at": "2026-09-13T19:30:00.000Z",
"news": [
{ "title": "Where to watch Cardinals vs Chargers", "url": "https://sports.yahoo.com/...", "source": "Yahoo Sports" }
],
"fetched_at": "2026-09-13T19:44:23.709Z",
"source_url": "https://trends.google.com/trending/rss?geo=US"
}

Both examples above are real output from a live run of this Actor (see Why this Actor for the numbers behind that claim). You can download any run's dataset as JSON, CSV, Excel, or HTML from the Storage tab or the API.

Input

FieldTypeDefaultNotes
keywordsarray of stringsSearch terms, e.g. "bitcoin", or a Trends topic id like /m/05p0rrx. Required unless you only want trending_now.
widgetsarrayinterest_over_time, interest_by_region, related_queries, related_topicsWhich data types to fetch. One dataset item (and one charge) per keyword × widget; trending_now charges per trend instead.
geostring"" (worldwide)ISO country code (US, GB, DE) or region (US-CA).
timeframestring"today 12-m"Trends syntax: now 1-H, now 7-d, today 1-m, today 5-y, all, or a custom "2024-01-01 2024-12-31" range.
categoryinteger0Google Trends category id (0 = all).
gpropstring""Search vertical: web, images, news, youtube, froogle (Shopping).
comparebooleanfalseSee Compare vs. separate below — this is the setting the official scraper gets wrong.
resolutionstringautoCOUNTRY / REGION / CITY / DMA for interest_by_region.
hlstring"en-US"UI language for labels and related-query text.
trending_geostring"US"Country for the trending_now widget.
maxAttemptsPerKeywordinteger3How many fresh sessions to retry per keyword before giving up on the widgets still missing (partial results are always kept — see Reliability).
proxyConfigurationobjectApify residential proxyGoogle throttles by IP. Residential proxy with one session per keyword is the reliable setting; without one, the Actor runs direct with pacing and backoff — slower, and it works less often, but it still works.

Compare vs. separate (the bug we fixed)

Turn compare on to fetch up to 5 keywords in a single request, sharing one 0–100 scale — exactly like the "Compare" view on trends.google.com. Numbers become comparable across keywords, and interest_by_region switches to each keyword's share of the combined interest (scale: "share_of_compared_pct").

Leave compare off (default) and every keyword gets its own request, each independently normalised to its own peak = 100 (scale: "own_0_100"). This is the correct default for "how has interest in X changed over time" — mixing it up with compare mode is exactly the open issue on the official actor titled "MCP tool interface isn't passing the isMultiple flag correctly". We expose the distinction explicitly in every item's scale and compare fields so you never have to guess which mode produced a number.

Pricing

Pay per event, in USD (Bronze/Silver/Gold plans get automatic discounts):

EventPriceWhen it's charged
Actor start$0.005Once per run.
Keyword × widget result$0.01 (primary)Once per keyword × widget that returned data. Widgets with no data (e.g. an empty related_topics list) are not charged.
Trending search$0.001Once per trending item returned by trending_now.

Worked examples:

  • 1 keyword, all 4 widgets (interest over time + by region + related queries + related topics): 4 × $0.01 + $0.005 start ≈ $0.045.
  • 1 keyword, interest_over_time only, plus trending_now for a country (the default input — a ~5-second run): 1 × $0.01 + 10 × $0.001 + $0.005 start ≈ $0.025 for 11 items.
  • 5 keywords compared (compare: true, all widgets): interest_over_time and interest_by_region are shared across the 5 keywords (2 charges total), related_queries is per-keyword (5 charges); related_topics isn't offered in compare mode by Google, so it falls back to one extra request per keyword if you ask for it. Roughly 5–10 charges depending on which widgets you pick, always cheaper per keyword than fetching each one as a separate run.

The minimum spend guard (minimalMaxTotalChargeUsd) is $0.05 — well within reach of an agent calling this tool with a small budget.

The official apify/google-trends-scraper has 12,979 users but a ~28% failure rate over the last 30 days and 68 issue reports, with recurring titles like "Runs with infinite loop and no result", "keep failing", and "MCP tool interface isn't passing the isMultiple flag correctly". This Actor was built specifically to fix those three problems:

  1. No infinite loops. Every keyword's fetch is bounded — a fixed number of session attempts (maxAttemptsPerKeyword), each with its own bounded backoff. If Google keeps throttling a widget, the run gives up on that widget only, keeps every result it already has, and moves on. A run either finishes or fails fast; it never hangs.
  2. Correct multi-keyword semantics. The compare flag (above) is explicit and documented, and every output item states which scale it's on. No silent mixing of "own 0–100" and "shared 0–100" values. Related-topics data (which Google blanks out entirely for logged-out sessions) is reported as an honest empty result with an explanation, not a silent failure.
  3. HTTP-only, cheap, and fast. No headless browser — a warm session, Google's own internal JSON endpoints, and ~800 ms pacing between calls. A typical single-keyword run finishes in seconds, not minutes.

Not affiliated with Google. Google Trends is a Google Inc. trademark; data returned is the same aggregate, non-personal search-interest data shown publicly at trends.google.com.

Use cases

  • SEO & content planning — find rising queries and topics around a subject before you write about it.
  • Market & brand research — track interest in a product, competitor, or industry over time and by region.
  • Trading/crypto signal research — correlate search interest with price action (see the sample output above).
  • News & culture monitoring — pull the daily trending_now feed for any country into a dashboard or bot.
  • Agents & automations — flat input, small default budget, and typed dataset fields make this a natural MCP tool for "what's trending" or "how has interest in X changed" questions.

How to use

  1. Open the Input tab and fill in keywords (or skip them and just turn on trending_now).
  2. Pick which widgets you want, a geo/timeframe, and leave proxyConfiguration on Apify's residential proxy for the most reliable runs (recommended; the Actor also works without a proxy, just less consistently at scale).
  3. Click Start. Dataset items appear as they're fetched — trending-now items first (fastest), then one set per keyword.
  4. Export the dataset as JSON/CSV/Excel, or pull it via the API for automations and schedules.

Output fields

FieldDescription
keywordSearch term (null for trending_now items).
widgetinterest_over_time | interest_by_region | related_queries | related_topics | trending_now.
geo, timeframe, category, gpropThe request parameters that produced this item.
resolutionCOUNTRY/REGION/CITY/DMA (interest by region only).
compare, compared_with, scaleSee Compare vs. separate.
dataThe payload: time series points, region rows, or related-query/topic rows — shape depends on widget.
title, traffic, published_at, newstrending_now only.
errorSet (and not charged) when this widget couldn't be fetched, with a human-readable reason.
fetched_at, source_urlWhen it was fetched, and the matching trends.google.com page.

Google does not offer an official Trends API; this Actor talks to the same internal JSON endpoints the trends.google.com website uses, the same way the official Apify Trends actor and many open-source tools (e.g. the archived pytrends library) do. related_topics is genuinely empty for logged-out sessions — that's Google's behavior, not a bug here. At high volume, use the built-in residential proxy option for consistent results; Google throttles aggressively per IP. Data returned is aggregate, non-personal search-interest data, publicly viewable on trends.google.com for anyone.

Found a bug or want a feature? Use the Issues tab on this Actor's page — we aim to respond within a few days.