Google Trends Scraper & API avatar

Google Trends Scraper & API

Pricing

from $1.10 / 1,000 term results

Go to Apify Store
Google Trends Scraper & API

Google Trends Scraper & API

Google Trends API alternative for any number of terms: interest over time by country, region, city or metro, related queries and topics, Trending Now, and calibrated comparisons beyond 5 terms. Daily data across years. From $1.50 per 1,000 results; compact JSON for AI agents.

Pricing

from $1.10 / 1,000 term results

Rating

0.0

(0)

Developer

CleanPull

CleanPull

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Get Google Trends data for any number of search terms in one run: interest over time, interest by country, region, city or metro area, related queries, side-by-side comparisons, and Trending Now with search volumes. Rank more than 5 terms on one calibrated scale, and get daily points across multi-year ranges. Clean, typed JSON or flat rows, built for AI agents and data teams, from $1.50 per 1,000 results.

What you can do with it

  • Track a keyword portfolio: "Get Google Trends interest for these 50 keywords in the US over the past 12 months."
  • Rank many terms against each other: "Which of these 30 product names gets the most searches?" Calibrated comparison puts every term on one 0-100 scale with error bounds, beyond Google's 5-term limit.
  • Compare across countries: "How does interest in electric cars compare in the US, UK and Germany?" One run, any number of locations.
  • Find rising topics: "What related searches are breaking out around web scraping?" Rising queries are flagged with isBreakout.
  • Watch what is trending: "What is trending in the UK in sports right now?" Hundreds of trends with search volume, growth and start time, not just the top 10.
  • Monitor on a schedule: monitor mode returns only new trends or new rising queries since the last run.
  • Feed an AI agent or dashboard: choose only the fields you need, or get one flat row per data point.

Why this actor

  • Reliable and fast. Plain HTTP requests with automatic session rotation and proxy escalation; no browser, no hanging runs. A blocked data type is reported in missingDataTypes instead of failing the run.
  • Every data type in one record per term, plus a computed summary: average, peak and date, latest value, change in percent and direction (rising, falling, stable).
  • Calibrated comparison of any number of terms with low and high bounds, so you know how precise each value is.
  • Daily points for long ranges. Google returns weekly or monthly points beyond about 9 months; turn on dailyResolution for one point per day across years.
  • Standard Google Trends field names (interestOverTime_timelineData, interestBySubregion, relatedQueries_rising and so on), so existing pipelines keep working.
  • Built for AI agents: typed inputs with defaults and examples, a declared output schema, fields selection, and a RUN_SUMMARY with the outcome of every lookup. Works through Apify's MCP server.

Modes

ModeWhat you getBilled per
explore (default)One record per term (and per location): interest over time, by region, related queries, optional topic suggestions; with compare, an extra comparison record per group of up to 5 termsTerm record, comparison record
calibrated-comparisonOne record per term with its rank, relativeInterest (largest term = 100), low and high bounds, and its time series on the shared scaleCalibrated term
trendingTrending Now for a country: term, search volume, growth percent, start and end time, active flag, categories, related searchesTrending item

Input

FieldTypeWhat it does
modeexplore, calibrated-comparison, trendingWhat to get (default explore)
searchTermsarray of stringsTerms to look up, any number
startUrlsarray of Google Trends explore URLsTerms, locations, period, category and search type read from each URL
comparebooleanCompare terms on one scale in groups of up to 5, with a comparison record
geostringUS, GB, US-CA, US-CA-807; empty = worldwide
geosarray of stringsRun every term for each location, e.g. ["US", "GB", "DE"]
timeRangepast-hour … all-timePreset period (default past-12-months)
customTimeRangestring"2024-01-01 2024-12-31" or hourly "2026-09-01T00 2026-09-03T12"
categoryintegerGoogle Trends category id (0 = all)
propertyweb, images, news, youtube, shoppingWhich Google search to measure
dataTypesarrayinterestOverTime, interestByRegion, relatedQueries, relatedTopics, suggestions
regionResolutionauto, country, region, city, metroDetail of the region breakdown
includeLowVolumeRegionsbooleanInclude regions Google hides for low volume
dailyResolutionbooleanDaily points across ranges longer than about 9 months
trendingGeo, trendingHours, trendingCategories, trendingActiveOnly, trendingMaxItemsTrending Now: country, window (4, 24, 48 or 168 hours), categories, active only, how many
monitorMode, monitorNameboolean, stringOnly new trends or new rising queries since the last run
outputFormatnested, flatOne record per term, or one row per data point
fieldsarray of stringsReturn only these fields (dotted paths allowed)
maxItemsintegerStop after this many billed results
language, timezonestring, integerLabels language (en-US) and offset in minutes for hourly data

Example input

{
"searchTerms": ["web scraping", "data extraction"],
"compare": true,
"geos": ["US", "GB"],
"timeRange": "past-12-months",
"dataTypes": ["interestOverTime", "interestByRegion", "relatedQueries"]
}

Output

Term record (explore mode, shortened)

{
"type": "term",
"searchTerm": "web scraping",
"geo": "US",
"timeRange": "past-12-months",
"summary": {
"average": 67.8,
"peak": 100,
"peakDate": "2026-06-07T00:00:00.000Z",
"latest": 24,
"latestDate": "2026-09-27T00:00:00.000Z",
"changePercent": -44,
"direction": "falling"
},
"interestOverTime_timelineData": [
{
"date": "2026-09-27T00:00:00.000Z",
"formattedTime": "Sep 27 – Oct 3, 2026",
"value": [24],
"hasData": [true],
"isPartial": false
}
],
"interestOverTime_averages": [68],
"interestBySubregion": [{ "geoCode": "US-MD", "geoName": "Maryland", "value": [100] }],
"relatedQueries_top": [{ "query": "ai web scraping", "value": 100, "isBreakout": false }],
"relatedQueries_rising": [
{
"query": "best noise cancelling headphones",
"value": 12150,
"formattedValue": "Breakout",
"isBreakout": true
}
],
"missingDataTypes": [],
"trendsUrl": "https://trends.google.com/trends/explore?q=web%20scraping&geo=US&date=today%2012-m"
}

Calibrated term

Each calibrated record also carries timeline: the term's series rescaled onto the shared scale.

{
"type": "calibrated-term",
"rank": 4,
"searchTerm": "selenium",
"relativeInterest": 0.2263,
"low": 0.1683,
"high": 0.2937,
"belowRange": false,
"bridge": "python",
"comparedTerms": 12
}
{
"type": "trending",
"rank": 1,
"term": "bahrain grand prix",
"geo": "GB",
"searchVolume": 100000,
"growthPercent": 300,
"startedAt": "2026-10-04T06:40:00.000Z",
"isActive": true,
"categories": [{ "id": 17, "name": "Sports" }],
"trendBreakdown": ["bahrain grand prix"]
}

Every run also writes RUN_SUMMARY to the key-value store: the outcome (COMPLETE, PARTIAL, NO_NEW_DATA, EMPTY or FAILED), counts, and the reason for any failed lookup.

Pricing

Pay only for results delivered. Blocked or failed lookups are never charged.

ResultFree and BronzeSilverGold
Term record (all requested data types for one term and location)$1.50$1.30$1.10
Comparison record$1.50$1.30$1.10
Calibrated term$10.00$9.00$8.00
Trending item$1.00$0.90$0.80

Prices are per 1,000 results; your tier depends on your Apify plan. Each run also has a $0.00005 start fee.

Flat mode is billed per term record, not per row.

How calibrated comparison works

Google compares at most 5 terms at a time, each group on its own 0-100 scale rounded to whole numbers. The actor first sizes every term against one anchor, then chains groups from the most popular term down, each group sharing a "bridge" term with the previous one and holding only terms of similar size, so no value is lost to rounding. Bounds carry Google's rounding through the chain: a niche term 30,000 times smaller than the top one still comes back with a value and a range.

Limits

  • Related topics are returned only when Google provides them to logged-out visitors, which is often not the case. When they are missing, the record says so in missingDataTypes.
  • Google Trends values are relative (0-100), not absolute search counts. Trending Now volumes are Google's own approximate figures.
  • Calibrated values are only as precise as their bounds; terms far apart in popularity have wider bounds.
  • Memory: explore runs fit in 512 MB at any size tested (2,000 terms); calibrated comparisons of up to about 500 terms fit in 512 MB (5 years of daily points), larger ones need the default 4,096 MB.
  • Nothing found: terms with no interest data, or input naming nothing to look up, are not a failure: the run still succeeds, with one free recordType: "unreadable" row giving the reason; nothing is charged. A run near its time limit stops starting lookups, delivers what it read and lists the rest in RUN_SUMMARY.

Changelog

  • 0.1.x, reliability (2026-10-24): runs that find nothing (terms without data, input naming nothing to look up) end SUCCEEDED with a free unreadable row saying why, instead of FAILED; custom time ranges and Trends URLs are checked in the input form; a run stops starting lookups before its time limit, never TIMED-OUT. A run whose every lookup Google blocked still fails. Prices and events unchanged.
  • 0.1 (October 2026): explore, comparison, multiple locations, calibrated comparison of any number of terms, daily points for long ranges, Trending Now, monitor mode, flat output and field selection.