Google Trends Scraper: interest over time, related queries avatar

Google Trends Scraper: interest over time, related queries

Pricing

from $1.95 / 1,000 search term delivereds

Go to Apify Store
Google Trends Scraper: interest over time, related queries

Google Trends Scraper: interest over time, related queries

Google Trends per search term with a transparent success rate: interest over time, the average value over the period and the related queries, with geo, timeframe and language control. Strict output schema for AI agents and pipelines; terms without data are never charged.

Pricing

from $1.95 / 1,000 search term delivereds

Rating

0.0

(0)

Developer

Steadydata Team

Steadydata Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Trends Scraper (reliable, batch)

Fetch Google Trends data for up to 200 search terms in one run: interest-over-time plus top and rising related queries, with geo, timeframe and language control. Built for SEO pipelines, market research and AI agents — strict output schema, explicit error codes, and you only pay for terms that are actually delivered.

Why this scraper

  • Only successful results are charged. A term that Google returns no data for, or that gets temporarily blocked, shows up as a clear error record at no cost.
  • Anti-blocking built in. Warm session management with automatic cookie refresh, paced requests and retries on fresh connections — the failure modes that plague Trends scrapers are handled inside the actor, not left to you.
  • Honest partial results. When the interest data succeeds but related queries are briefly unavailable, you get the interest data plus a note saying exactly why the related part is missing — never a silently incomplete record.
  • Batch and agent-ready. Up to 200 terms per run, stable machine-readable schema.

Who this is for

SEO and content teams sizing up topics before they commit, market researchers tracking interest over time, and AI agents that need a demand signal rather than a guess.

If you check one keyword occasionally, the Google Trends website is free and fine. This actor is for pulling dozens or hundreds of terms on a schedule, in a stable format.

Who this is not for

Read this before you buy. Every term is fetched on its own, so its values are scaled to that term alone (its own peak is 100). That is what you want for tracking one topic over time, and exactly wrong for comparing two terms with each other: for that, use the Google Trends Compare Scraper from the same publisher, which puts up to five terms on one scale. Values are Google's relative index, never search volumes. For what is trending right now per country, use the Trending Now Scraper; for one term's map by country or region, the Interest by Region Scraper.

Input fields

FieldTypeRequired or defaultWhat it does
querieslist of textrequiredSearch terms to fetch trends for. Max 200 per run.
geotextGeo code such as US, NL, DE, or empty for worldwide. Region codes like US-CA also work.
timeframetexttoday 12-mTrends timeframe: 'now 1-d', 'now 7-d', 'today 1-m', 'today 3-m', 'today 12-m', 'today 5-y', or 'all'.
includeRelatedQueriestrue/falsetrueAdds top and rising related queries per term.
languagetexten-UShl parameter, e.g. en-US or nl-NL. Affects formatted labels only.

Input example

{
"queries": ["chatgpt", "bitcoin"],
"geo": "NL",
"timeframe": "today 3-m",
"includeRelatedQueries": true,
"language": "en-US"
}

Timeframes: now 1-d, now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all. Geo: country (US, NL, DE), region (US-CA), or empty for worldwide.

Output example

FieldTypeWhat it holdsExample
querytextThe input this row was found with, so rows from several inputs can be told apart.electric bike
geotextThe region the interest was measured in; empty means worldwide.worldwide
timeframetextThe period that was measured, in Google's own notation, for example "today 3-m".today 12-m
averageValuenumberThe average interest over the period, on Google's scale of 0 to 100.39.5
interestOverTimelistThe graph as data: one entry per point with its date, its value and whether the period is still partial.[{"date": "2025-09-28", "period": "Sep 28 – Oct 4, 2025",...
relatedQueriesobjectGoogle's related searches in two lists: top (the biggest) and rising (the fastest growing, with their growth).{"top": [{"query": "electric dirt bike", "value": 100, "f...
relatedQueriesNotetextFilled when Google returned no related searches, with the reason.
{
"query": "bitcoin",
"status": "ok",
"geo": "NL",
"timeframe": "today 3-m",
"averageValue": 56.2,
"interestOverTime": [
{"time": "Jun 10, 2026", "timestamp": 1781049600, "value": 90, "isPartial": false}
],
"relatedQueries": {
"top": [{"query": "koers bitcoin", "value": 100, "formattedValue": "100"}],
"rising": [{"query": "spacex koers", "value": 950, "formattedValue": "+950%"}]
}
}

A failed term produces an error record instead (and is not charged):

{"input": "someterm", "status": "error", "errorCode": "NO_DATA", "error": "Empty timeline"}

Error codes: BAD_QUERY, NO_DATA, BLOCKED. INPUT_TRUNCATED appears once when your input is longer than this actor accepts.

Pricing

Pay per event: one trend-fetched event per delivered term - a flat price that includes the full interest-over-time series and related queries. No charge for failed terms, no separate platform-usage surcharge, and no per-row billing surprises: one term is one price, whatever the timeframe.

Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.

Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.

FAQ

Are values absolute search volumes? No — Google Trends values are relative (0-100) within your query's timeframe and region, exactly as Google reports them.

Can I compare terms? Not with this actor: each term is scaled to its own peak, so two series from this actor are not on one scale. The Google Trends Compare Scraper from the same publisher does the comparison the way the Trends Compare page does, up to five terms on one scale.

Is personal data collected? No. Trends data is aggregated by Google and contains no personal data.

Why is your price flat per term instead of per row? Because per-row billing punishes you for asking a sensible question. A twelve-month series has far more rows than a one-week series but is not worth more to you, so it costs the same here: one term, one price.

What if Google blocks a request? The actor retries on a fresh connection before giving up. If a term still fails you get a clear BLOCKED record and are not charged for it.

Can I call it from my own code, like an API? Yes. Every run is available through the Apify API: start it with one HTTP request, then read the results as JSON, CSV or Excel from the dataset endpoint, or use the official Python and JavaScript clients. The input is the same JSON as in the input example above, so a scheduled script, a Make or Zapier step or an AI agent can call it without any changes.