Google Trends Scraper: Interest Over Time, Regions, Queries
Pricing
from $1.50 / 1,000 search terms
Google Trends Scraper: Interest Over Time, Regions, Queries
Google Trends scraper at $1.50 per 1,000 search terms: interest over time, interest by region (incl. US metro areas), related queries and Trending Now searches, all in one result per term. HTTP-only, no browser, validated output that fails loudly instead of returning empty data.
Pricing
from $1.50 / 1,000 search terms
Rating
0.0
(0)
Developer
Brindlewave Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Security
Limited permissionsShare
Google Trends Scraper (Reliable, No Browser)
Get Google Trends data for any keyword: interest over time, interest by region, related queries (top and rising, plus optional related topics), plus today's Trending Now searches for any country. Export to JSON, CSV or Excel, call it from the API, or schedule it.
Built to be boring and dependable:
- HTTP only, no headless browser. Small memory (256 MB is plenty) and fast runs.
- Validated output. Every row is checked field by field before it is saved (dates, 0-100 scores, names, links). Bad rows are dropped and counted, never silently saved.
- Fails loudly. If Google refuses all requests, or the output fails validation, the run is marked as failed with a clear reason instead of "succeeding" with an empty dataset.
- Handles rate limits. On HTTP 429 the actor backs off and continues on a fresh proxy session. It never tries to solve CAPTCHAs.
- No start fee.
What you get
One row per search term, with everything Google Trends shows on the explore page:
| Field | Description |
|---|---|
searchTerm | The keyword (or topic ID like /m/0dl567) |
geo, timeRange, category, searchProperty | The settings used |
hasData | false when Google does not have enough search volume for the term |
interestOverTime | Array of { date, formattedTime, value (0-100), hasData, isPartial } |
averageInterest, peakDate, peakValue, pointsWithData | Quick summary of the timeline |
interestByRegion | Array of { geoCode, geoName, value (0-100), formattedValue }, sorted by value |
relatedQueries | { top: [...], rising: [...] } with query, value, formattedValue (e.g. +250% or Breakout), link |
relatedTopics | Optional. { top: [...], rising: [...] } with title, type, mid, value, formattedValue, link |
comparedWith | Other terms in the same comparison (when "Compare terms" is on) |
warnings | Notes such as "not enough search volume" |
trendsUrl | Link to the same view on trends.google.com |
If you add countries under Trending now, you also get one row per trending search (recordType: "trendingSearch") with trendingTitle, approxTraffic (e.g. 2000+), approxTrafficNumber, publishedAt, pictureUrl and newsArticles (title, url, source).
Example row
From a real run on 2026-10-08 (chatgpt, US, past 90 days). Arrays are shortened here; the real row had 93 timeline points, 51 regions and 34 related queries.
{"recordType": "searchTerm","searchTerm": "chatgpt","geo": "US","timeRange": "today 3-m","hasData": true,"interestOverTimeCount": 93,"averageInterest": 65,"peakDate": "2026-09-03T00:00:00.000Z","peakValue": 100,"topRegion": "California","topRelatedQuery": "chatgpt ai","interestOverTime": [{ "date": "2026-10-07T00:00:00.000Z", "formattedTime": "Oct 7, 2026", "value": 79, "hasData": true, "isPartial": false },{ "date": "2026-10-08T00:00:00.000Z", "formattedTime": "Oct 8, 2026", "value": 73, "hasData": true, "isPartial": true }],"interestByRegion": [{ "geoCode": "US-CA", "geoName": "California", "value": 100, "formattedValue": "100" },{ "geoCode": "US-GA", "geoName": "Georgia", "value": 92, "formattedValue": "92" }],"relatedQueries": {"top": [{ "query": "chatgpt ai", "value": 100, "formattedValue": "100", "link": "https://trends.google.com/trends/explore?q=chatgpt+ai&date=today+3-m&geo=US" }],"rising": [{ "query": "sam altman chatgpt water usage", "value": 8750, "formattedValue": "Breakout", "link": "https://trends.google.com/trends/explore?q=sam+altman+chatgpt+water+usage&date=today+3-m&geo=US" }]},"trendsUrl": "https://trends.google.com/trends/explore?q=chatgpt&geo=US&date=today%203-m&hl=en-US","scrapedAt": "2026-10-08T01:33:18.023Z"}
Input
{"searchTerms": ["chatgpt", "gemini"],"compareTerms": false,"geo": "US","timeRange": "today 12-m","dataTypes": ["interestOverTime", "interestByRegion", "relatedQueries"],"trendingGeos": ["US"]}
- searchTerms: keywords or Google topic IDs. Each term is one result row.
- dataTypes: interest over time, interest by region and related queries are on by default. Related topics is optional: in our test runs Google returned an empty related-topics list for every term, so it is off by default to save time. When the list is empty, the row says so in
warnings. - compareTerms: when on, terms are compared in groups of up to 5, exactly like typing them together on Google Trends, so values are relative across the group.
- geo:
US,GB,US-CA, ... or empty for Worldwide. - timeRange / customTimeRange: preset (past hour to 2004-present) or
2025-01-01 2025-06-30. - category, searchProperty: same filters as on the website (Web, Images, News, Shopping, YouTube).
- regionResolution:
AUTO,COUNTRY,REGION,DMA(US metro areas) orCITY. - trendingGeos: countries for the Trending Now feed.
- proxyConfiguration: Apify Proxy is on by default.
Run status
Each run writes a STATUS record to its key-value store: number of rows, terms with data, invalid rows dropped, failed terms with the error, requests made and rate limits met. The run fails if no rows were produced, if more than 20% of rows failed validation, or if more than 20% of requested terms failed after retries. Partial results stay in the dataset either way.
Tips
- Google Trends values are relative (0-100) within one request. Use compareTerms when you need terms on the same scale.
- Terms with very little search volume return
hasData: falseand a warning. This is Google's answer, not an error. - For long keyword lists, schedule the actor and keep the default proxy.
Limits
- Google Trends data is sampled and scaled by Google; it does not give absolute search volumes.
- Google may rate-limit heavy use. The actor retries with backoff and new proxy sessions, then reports the failure clearly.
Is it legal?
The actor reads public Google Trends pages that anyone can open without logging in. It collects aggregated search interest, not personal data. Make sure your use complies with Google's terms and your local laws.
Feedback
Found a bug or need a field? Open an issue on the Issues tab and we will look at it quickly.
Pricing
Pay per result: $1.50 per 1,000 rows (one row per search term, plus one per trending search if you ask for them), plus $0.00005 per run start. No monthly rental.
FAQ
Is there an official Google Trends API?
Google offers only limited alpha access. This Actor is a practical Google Trends API alternative: send keywords, get interest over time, interest by region, related queries and Trending Now as JSON or CSV.
Why does pytrends keep returning 429 errors?
Google Trends rate limits unofficial clients hard. This Actor paces and retries requests and validates every row, so a run fails loudly instead of returning empty data.
Can I compare several keywords?
Yes. Turn on compareTerms to get up to 5 terms on the same 0 to 100 scale, like the Google Trends compare view.
Can I get Google Trends data for a country, state or US metro area?
Yes. Set geo (for example US, US-CA or GB) and interest by region returns sub-regions and US metro areas where Google provides them.