Google Trends Scraper
Pricing
from $0.09 / 1,000 results
Google Trends Scraper
Google Trends scraper and API, no browser. Interest over time, interest by region and city, related queries and topics. Compare unlimited keywords on one scale (Google caps at 5). Same fields as the official scraper, faster and cheaper. $1.49 per 1,000.
Pricing
from $0.09 / 1,000 results
Rating
0.0
(0)
Developer
Quiet Harvest
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Get Google Trends data without a browser: interest over time, interest by country, region or US metro area, and top and rising related searches, for any keyword, region, time range, category and search type (web, news, images, YouTube, Shopping). It also does something Google Trends itself can't: compare any number of keywords on one scale.
$1.49 per 1,000 results. Paid plans pay less, down to $0.09 per 1,000 (see Pricing).
Why this one
It doesn't time out. There is no browser. Each keyword takes a few HTTP requests, so 60 keywords finish in about a minute on 256 MB of memory.
It gets past Google's rate limit. Google Trends answers 429 to anyone without a Google cookie, and it blocks an IP after about a hundred requests. Each keyword here gets its own IP and a fresh cookie. If Google pushes back, the Actor switches both and tries again.
Unlimited keywords on one scale (no other scraper does this). Google compares at most 5 terms per chart and rescales every chart so its own peak is 100, so a "40" in one chart and a "40" in another mean different things. Turn on Compare ALL terms on one scale and give it 12, 50 or 200 keywords. The Actor chains the charts through a shared anchor term and returns every keyword on one 0–100 scale, ranked by average interest. Use it for brand share of search, product research or picking content topics.
Drop-in field names. Output uses the same field names as the official Apify Google Trends Scraper (interestOverTime_timelineData, relatedQueries_top, relatedQueries_rising...). There are also simpler fields: interestOverTime as a list of {date, value} points, plus averageInterest, peakInterest, peakDate and latestInterest.
Quick start
{"searchTerms": ["bitcoin", "ethereum"],"geo": "US","timeRange": "today 12-m"}
Several terms on the same chart (up to 5, like on the website):
{ "searchTerms": ["nike, adidas, puma"], "isMultiple": true }
Rank 12 brands on one scale:
{"searchTerms": ["nike", "adidas", "puma", "new balance", "asics", "reebok", "under armour", "skechers", "vans", "converse", "fila", "hoka"],"compareAllTerms": true,"anchorTerm": "puma"}
Or paste links from the website:
{ "startUrls": ["https://trends.google.com/trends/explore?date=now%207-d&geo=US&q=earthquake"] }
Output
One item per keyword:
| Field | Notes |
|---|---|
searchTerm, inputUrlOrTerm | |
geo, timeRange, category, searchType | What was searched |
interestOverTime | [{date, formattedTime, value, isPartial}]. date is ISO 8601 UTC. isPartial marks the period still in progress |
averageInterest, peakInterest, peakDate, latestInterest | Calculated from complete periods only |
hasData | false when Google has too little search volume to show anything |
interestOverTime_timelineData, interestOverTime_averages | Google's raw format, same as the official scraper |
interestBy | [{geoCode, geoName, value}], highest first. Countries for worldwide searches, regions or states for a country, metro areas with DMA |
relatedQueries_top, relatedQueries_rising | [{query, value, formattedValue, link}]. Rising values like +4,750% or Breakout |
comparedWith | The other terms on the same chart |
trendsUrl | Open the same view on Google Trends |
With Compare ALL terms on one scale, you also get rank, anchorTerm, normalizedAcrossAllTerms: true, and lowPrecision. lowPrecision is true when a term is so much smaller than the anchor that most of its points round to 0; if you see it, pick a smaller anchor.
Example (shortened):
{"searchTerm": "bitcoin","geo": "Worldwide","timeRange": "today 12-m","averageInterest": 44.92,"peakInterest": 100,"peakDate": "2026-02-01T00:00:00Z","interestOverTime": [{"date": "2025-09-21T00:00:00Z", "value": 43, "isPartial": false}],"interestBy": [{"geoCode": "CH", "geoName": "Switzerland", "value": 100}, {"geoCode": "AT", "geoName": "Austria", "value": 88}],"relatedQueries_rising": [{"query": "how to buy bitcoin safely", "formattedValue": "Breakout"}]}
Input
| Field | Default | |
|---|---|---|
searchTerms | One keyword per line | |
isMultiple | false | Split a line on commas and compare those terms on one chart (5 max per chart) |
compareAllTerms | false | Put every keyword on one scale, no limit |
anchorTerm | first term | Shared term for Compare ALL. Pick one of medium popularity |
startUrls | Google Trends explore links | |
timeRange | Past 12 months | Past hour, 4 hours, day, 7 days, 30 days, 90 days, 12 months, 5 years, or since 2004 |
customTimeRange | 2024-01-01 2024-06-30; overrides Time range | |
geo | worldwide | US, GB, JP, TW, or a region such as US-CA |
category | 0 | The number from cat= in a Trends URL |
searchType | web | web, images, news, youtube, shopping |
includeInterestByRegion, includeRelatedQueries | true | Turn these off for a faster run |
regionResolution | Automatic | Country, Region / state, or Metro (US DMA) |
language | en-US | Language of dates and region names |
Pricing
Pay per result (one keyword = one result):
| Plan | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per 1,000 results | $1.49 | $0.79 | $0.39 | $0.09 | $0.09 | $0.09 |
That's less than the official Google Trends Scraper on every plan.
Good to know
- Related topics and city-level data are not included. Google now serves these only to its own website, behind a bot check. Related queries and country, region and metro data work normally.
- Google Trends numbers are sampled. The same search run twice can differ by a few points, on the website too. Peaks and rankings stay the same.
- Values are relative (0–100), not search counts. 100 is the peak within the chart, or within all terms when you use Compare ALL.
Questions
Found a bug or want a field added? Open an issue on the Issues tab.