Google Trends Scraper — Compare Unlimited Keywords avatar

Google Trends Scraper — Compare Unlimited Keywords

Pricing

from $0.40 / 1,000 row delivereds

Go to Apify Store
Google Trends Scraper — Compare Unlimited Keywords

Google Trends Scraper — Compare Unlimited Keywords

Google Trends as spreadsheet-ready rows: interest over time, regions, related queries, trending now. Compare more than 5 keywords on one scale. $0.50/1K rows.

Pricing

from $0.40 / 1,000 row delivereds

Rating

0.0

(0)

Developer

Bruno Aguilera Silva

Bruno Aguilera Silva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Get Google Trends data as clean, spreadsheet-ready rows: interest over time, interest by region, related queries, related topics and today's trending searches, for Web, YouTube, News, Images and Shopping searches.

One thing the Google Trends website can't do:

  • Compare more than 5 keywords on one scale. Google limits comparisons to 5 terms. This actor links batches through a shared anchor keyword, so 50 keywords come back on the same 0–100 scale.

$0.50 per 1,000 rows ($0.40 on paid Apify plans). Failed and rate-limited requests are never charged.

Why this scraper

  • All five data types in one run, for any country, region or worldwide.
  • Unlimited keyword comparisons on a single scale (anchor-based normalization).
  • One flat row per data point. Exports straight to Excel, Google Sheets or BI tools without nested JSON.
  • Built for Google's rate limits. Requests that hit a 429 are retried on a new connection and never charged.
  • Daily history for long ranges (opt-in with dailyHistory): consistent daily values beyond Google's ~9-month limit.
  • Every row links back to the exact view on Google Trends.

Use cases

  • SEO and content: find rising queries and plan around seasonality.
  • Market research: compare demand for brands, products or categories across countries.
  • E-commerce: spot seasonal spikes in Google Shopping searches before stocking up.
  • Newsrooms and social media: see what is trending right now in any country.
  • Finance and data science: consistent attention series for models.
  • AI agents: live trend data through the Apify MCP server.

Quick start

Compare keywords over the last year in the US:

{
"keywords": ["ChatGPT", "Gemini", "Claude", "Copilot", "Perplexity", "Grok", "DeepSeek"],
"geo": "US",
"timeframe": "today 12-m",
"dataTypes": ["interest_over_time", "related_queries"]
}

Seven keywords: more than Google allows in one comparison, all returned on the same scale.

Today's trending searches in Mexico:

{
"dataTypes": ["trending_now"],
"trendingGeo": "MX"
}

Ready-made examples

Open any example to run it with one click, or copy its input.

ExampleWhat you get
Compare AI chatbots (US, 12 months)ChatGPT, Gemini, Claude, Copilot, Perplexity, Grok and DeepSeek on one scale
Black Friday & holiday shoppingGoogle Shopping interest for Black Friday, Cyber Monday and Christmas gifts, 5 years
iPhone vs Samsung vs PixelBrand interest over time and by US state
Nvidia vs Tesla vs Apple stockDaily attention series for retail-investor sentiment
Bitcoin vs Ethereum vs SolanaWorldwide interest over time and by country, 5 years
SEO keyword ideasTop and rising related queries and topics
YouTube search trendsMinecraft vs Fortnite vs Roblox on YouTube search
Trending now: US, UK, IndiaToday's trending searches with volume and news

More inputs you can paste into the Input tab:

{ "dataTypes": ["trending_now"], "trendingGeo": "DE", "trendingHours": "24" }
{ "dataTypes": ["trending_now"], "trendingGeo": "BR", "trendingHours": "24" }
{
"keywords": ["air fryer", "solar panels", "heat pump"],
"geo": "US",
"timeframe": "today 12-m",
"regionResolution": "REGION",
"dataTypes": ["interest_by_region", "related_queries"]
}

Input

FieldTypeDefaultDescription
keywordsstring[]["chatgpt"]Search terms or topic IDs (e.g. /m/0dl567). Any number; more than 5 are linked through an anchor keyword.
anchorKeywordstringautoKeyword used to link batches when comparing more than 5. Auto picks the strongest keyword of the first batch.
dataTypesenum[]["interest_over_time"]interest_over_time, interest_by_region, related_queries, related_topics, trending_now.
geostring"" (worldwide)Country (US) or region (US-CA).
timeframeenumtoday 12-mnow 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all.
customTimeRangestring—Exact range such as 2024-01-01 2025-06-30. Overrides timeframe.
propertyenumwebweb, youtube, news, images, froogle (Google Shopping).
categoryinteger0Google Trends category ID. 0 = all categories.
regionResolutionenumautoCOUNTRY, REGION, CITY, DMA (US metros) or auto.
trendingGeostringUSCountry for trending_now.
trendingHoursenum244, 24, 48 or 168 hours.
dailyHistorybooleanfalseDaily values for ranges longer than ~260 days (see Daily history). Only applies to interest_over_time.
maxRowsinteger5000Maximum billable rows for the whole run. The run stops cleanly when it is reached.
skipEmptyRowsbooleantrueLeave rows without data (value: null) out of the dataset. They are never charged either way.

Output

Every row has a type, the request context and a sourceUrl to the same view on Google Trends.

Interest over time:

{
"type": "interest_over_time",
"keyword": "Claude",
"geo": "US",
"timeframe": "today 12-m",
"property": "web",
"date": "2026-10-05",
"dateEnd": "2026-10-11",
"granularity": "week",
"value": 34,
"isPartial": false,
"comparisonGroup": "a1f3c9",
"isRescaled": true,
"sourceUrl": "https://trends.google.com/trends/explore?date=today%2012-m&geo=US&q=Claude",
"scrapedAt": "2026-10-18T04:10:00Z"
}

Related query:

{
"type": "related_query",
"keyword": "Claude",
"geo": "US",
"timeframe": "today 12-m",
"list": "rising",
"query": "claude code",
"value": 4250,
"formattedValue": "+4,250%",
"isBreakout": false,
"rank": 1
}

Trending now:

{
"type": "trending_now",
"geo": "MX",
"title": "liga mx",
"approxTraffic": 200000,
"growthPct": 1000,
"startedAt": "2026-10-18T01:00:00Z",
"endedAt": null,
"isActive": true,
"hours": 24,
"categoryId": 17,
"category": "Sports",
"relatedQueries": ["liga mx resultados", "tabla liga mx"],
"articles": [{ "title": "…", "source": "…", "url": "https://…" }]
}

How to read the numbers

Google Trends never shows search counts. Values are relative, 0–100, where 100 is the peak within one request. Rows with the same comparisonGroup share one scale and can be compared directly. isRescaled: true means the value was adjusted by the anchor keyword to keep that shared scale. Google itself samples its data: two identical queries made minutes apart can differ by a few points (up to ~8 at the peak in our tests, 0.7 on average), so expect small differences between runs.

Daily history

Google returns daily values only for ranges up to about 260 days; longer ranges come back weekly or monthly. With dailyHistory: true the actor requests overlapping 250-day windows (50 days of overlap), rescales each window using the days it shares with the previous one and stitches them into one daily series, for example 20 years with timeframe: "all".

  • Rows have granularity: "day", isRescaled: true and one comparisonGroup: values are on a shared 0–100 scale for the whole range, with 100 at the highest day.
  • Accuracy against Google's own weekly series for the same range: about 0.5 points on average and under 5 at the worst week for multi-year ranges. Over 20 years the error accumulates (about 0.9 on average, up to ~7 at the peak of a very large keyword). Very small keywords (under ~1% of the peak) are rounded to whole numbers by Google and can look noisy.
  • It uses about one request per 200 days per keyword batch (roughly 40 for all) and returns one row per keyword per day: one keyword over all is about 8,300 rows. Raise maxRows for long ranges; rows are delivered keyword by keyword.
  • If a window cannot be fetched, history is delivered from the most recent window back to the failed one and the final message says so. Failed requests are not charged.

Rows without data

Google sometimes has no data for a point, for example small cities in interest_by_region (a CITY query for Texas returns about 200 cities, most of them empty). Those rows have value: null. They are never charged. With skipEmptyRows: true (default) they are not added to the dataset; with false they are included with value: null.

Every run ends with one run_summary row (also never charged) and a status message that tells you how many rows were billed and how many had no data, for example: Delivered 3 billable rows. 206 rows had no data from Google and were skipped (not charged).

{
"type": "run_summary",
"queries": 3,
"queriesOk": 3,
"queriesEmpty": 0,
"queriesFailed": 0,
"rows": 3,
"rowsWithoutData": 206,
"retried429": 0,
"lost429": 0,
"residentialMB": 0.04,
"message": "Delivered 3 billable rows. 206 rows had no data from Google and were skipped (not charged)."
}

Pricing

EventFree planPaid plans
Row delivered$0.0005$0.0004
ExampleRowsCost (free plan)
1 keyword, 12 months weekly~54$0.03
10 keywords, 12 months weekly + related queries~1,000$0.50
Trending now, one country~50$0.03

Not charged: failed requests, rate-limited requests (429), retries, empty results, rows without data (value: null) and the run_summary row.

For AI agents

https://mcp.apify.com?tools=sondalabs/google-trends-scraper

FAQ

Why are related topics always empty? At the time of writing, Google returns an empty list for the related-topics endpoint. Nothing is charged when that happens. Related queries are not affected.

Why are related queries missing for my keyword? Google only publishes them when there is enough search volume for that keyword, country and period. Broader keywords and longer periods return them more often.

Can I compare values from two different runs? Only if both runs share the same anchor keyword setup. Within one run, rows with the same comparisonGroup are comparable.

Is this the official Google Trends API? No. Google's official Trends API is in a closed alpha. This is an independent tool, not affiliated with Google, that collects the data Google Trends shows publicly.

Support

Open an issue in the Issues tab. Issues are answered within 48 hours. Changes to output fields are announced in the changelog and never break existing fields.

Roadmap

  • Region detail DMA (US metro areas) and category filters.
  • Related topics: Google currently returns an empty list; we will re-check periodically.
  • Public example tasks.