Google Trends Scraper: Queries, Regions & Trending Now
Pricing
from $1.25 / 1,000 results
Google Trends Scraper: Queries, Regions & Trending Now
Scrape Google Trends: interest over time, interest by region, related and rising queries, and real-time Trending Now searches. Batch up to 100 keywords, any country, any timeframe. Charged per row of real data, so a keyword that returns nothing costs nothing.
Pricing
from $1.25 / 1,000 results
Rating
0.0
(0)
Developer
Daniel Meshulam
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Extract Google Trends data at scale: search interest over time, interest by country and region, related queries (top + rising), and real-time Trending Now searches, up to 100 keywords per run, any country, any timeframe.
If it returns nothing, you pay nothing
The usual way a Google Trends scraper wastes your money is that it runs for twenty minutes, hits Google's rate limits, and hands you an empty dataset, after billing you the whole time.
This one is built so that can't happen:
- You are charged per row of real data. Billing on dataset writes is switched off entirely, so a failed keyword produces an
errorrow that costs $0.00. No data, no charge. - Memory is capped at 512 MB (most Actors default to 4 GB). Compute is billed as memory × time, so a slow run here costs a fraction of what the same run costs elsewhere.
- No headless browser. Plain HTTP against Google's own endpoints, runs finish in about a minute, not twenty.
- One bad keyword never kills the run. Each keyword is isolated; the other 99 still return.
- Your run charge limit is honored. Set a maximum charge and the Actor stops cleanly at it instead of burning compute for revenue it can't collect.
Rotating proxies and staged backoff handle Google's rate limiting, which is what causes most empty results in the first place.
When to run it (measured, 2026-07-29)
Google gates trends.google.com/trends/api/* behind a session cookie, and it
gates it harder during US and European working hours. This is not a claim about
this Actor, it is what the endpoint does to everyone, which is why
pytrends 429, pytrends 404 and gtrendsR: status code was not 200 are
perennial Stack Overflow questions.
What was measured, on the same keyword, the same day:
| 03:17 UTC | full results in 41 seconds |
| 12:22-13:37 UTC | 429 on every attempt |
| Waiting 30s, 60s, 120s between tries | still 429 |
| Datacenter proxy, residential proxy, and no proxy at all | identical: all blocked |
| The same request from an ordinary home connection, same minute | 200 |
Two things follow, and they are worth knowing before you build on any Google Trends tool:
- Backoff does not buy you through it. Two full minutes of waiting changed nothing. An Actor that "retries harder" is just billing you for the wait.
- Switching proxy tier does not help. Datacenter, residential and Apify's own egress all fail identically, while an ordinary home connection succeeds in the same minute. Google is judging the address, and every address a cloud platform can offer for this endpoint is already spent - the residential pool included, because it is shared by thousands of scrapers. Paying for residential bandwidth here buys nothing.
If you need it during the day: bring your own proxy
The Proxy input accepts Custom proxy URLs. That is the one setting here
that changes the outcome, because the block is on the address and every address
a cloud platform can offer is already spent. A proxy on IPs that are not shared
with thousands of other scrapers gets the same 200 an ordinary home connection
gets.
{"keywords": ["matcha"],"proxyConfiguration": { "useApifyProxy": false, "proxyUrls": ["http://user:pass@your-proxy:8000"] }}
Nothing else in the input moves the needle. Turning Apify Proxy on or off, or switching it between datacenter and residential, was measured to make no difference at all.
The practical answer is to schedule it outside those hours. Apify Schedules
can run this nightly; roughly 00:00-06:00 UTC has been reliable. For ad-hoc
research during the day, expect error rows, which, as below, cost you
nothing.
What you get
| Data type | What it returns |
|---|---|
| Keyword comparison | Up to 5 keywords on one shared 0-100 scale, with each one's average, peak, and rank |
| Interest over time | 0-100 search-interest score per week/day/hour for your timeframe |
| Interest by region | Score per country, state, or US metro area |
| Related queries | Top related searches + rising searches (with growth %, including "Breakout") |
| Trending Now | Real-time trending searches for any country, with approximate traffic and linked news |
What this Actor deliberately does not return
Two Google Trends data types are widely advertised by scrapers and do not actually work, because Google itself stopped returning them:
| Not included | Why |
|---|---|
| Related topics | Google's endpoint returns an empty ranked list on both of its backends. Every result would be blank. |
| City-level interest | Google returns 200 cities with hasData: false on every one. Region (51) and US metro (210) do return real data, and both are supported. |
Shipping an option that silently returns nothing is the fastest way to waste your money, so these were removed rather than left in the input schema to look impressive. Everything the schema offers returns data.
Use cases
- SEO & content research: find rising queries before they peak; catch "Breakout" terms early
- E-commerce & dropshipping: validate product demand by country before you spend on ads
- Market research: compare seasonality and regional demand across markets
- Trading & finance signals: track search interest for tickers, brands, and events
- AI agents & LLM pipelines: clean JSON via API, ready for automated workflows
- News & social monitoring: Trending Now with attached news stories, refreshed in real time
Compare keywords head-to-head
Set compareKeywords: true and every keyword is scored against the same ceiling, so the numbers are directly comparable, the question Google Trends is most often asked:
{ "keywords": ["nike", "adidas", "new balance", "hoka"], "compareKeywords": true, "geo": "US" }
#1 nike avg 53.6 peak 100#2 adidas avg 23.0 peak 52#3 new balance avg 16.3 peak 34#4 hoka avg 6.6 peak 14
Each row carries the full timeline plus averageInterest, peakInterest, and rank, so you can chart it or sort it without post-processing.
Input example
{"keywords": ["matcha", "protein powder", "creatine gummies"],"dataTypes": ["interestOverTime", "relatedQueries", "interestByRegion"],"geo": "US","timeframe": "today 12-m","trendingNowGeo": "US"}
Output example (one row per keyword × data type)
{"keyword": "matcha","dataType": "relatedQueries","geo": "US","timeframe": "today 12-m","top": [{ "query": "matcha latte", "value": 100 }],"rising": [{ "query": "matcha shortage", "formattedValue": "Breakout" }]}
Export as JSON, CSV, Excel, or feed it straight into Google Sheets, Make, Zapier, LangChain, or your own code via the Apify API.
Pricing
Pay per result: you are charged a small fee per successfully returned data row (keyword × data type). Failed lookups cost nothing. A run with 10 keywords × 2 data types = 20 results.
There is no official Google Trends API
Google has never shipped one. There is no key to request, no quota page, and no endpoint in the Cloud console. What exists is the set of internal endpoints the trends.google.com page calls to render itself, and every tool in this space including this one is a typed wrapper over those.
That is worth knowing before you pick anything here, because it sets what is actually true of all of them:
- No API key exists to obtain. Any product offering you a "Google Trends API key" is issuing its own key for its own proxy.
- Values are relative, 0 to 100, never absolute search volume. Google does not publish volume through this surface at all.
- The endpoints rate-limit hard by IP, which is the single thing that decides whether a run works. See the proxy note below; it is not optional for keyword analysis.
Timeframes: now 1-H, now 4-H, now 1-d, now 7-d, today 1-m,
today 3-m, today 12-m, today 5-y, and all for 2004 to present.
Data types: interest over time, interest by region (country, region or DMA resolution), related queries, rising queries, and Trending Now, which is the real-time surface and is the one path that needs no proxy of your own.
Any country, via geo, plus category and property filters (web, images,
news, YouTube, Shopping).
Trending Now across markets
Pass several countries and each one runs in the same job:
{ "trendingNowGeo": "US, GB, DE, IL" }
Every row carries its own geo and its rank within that country, so a
row ranked 1 in Israel and a row ranked 1 in Germany are both firsts rather than
being renumbered into one list. That is the comparison people actually want, and
it used to take one run per market.
approxTrafficMin is the numeric form of Google's approxTraffic, which it
publishes as 500+, 20K+ or 2M+. Those sort alphabetically and cannot be
filtered, so the number is there for "anything above 50,000".
Each trend also carries the news stories Google attached to it, with title, source, URL, snippet and image, which is usually enough to see why something is trending without following the link.
This path needs no proxy of your own. It reads Google's trending RSS feed, which is not rate-limited on Apify, unlike the keyword endpoints below.
Notes & fair use
- Google Trends values are relative (0-100 within your query), not absolute search volumes.
- By default each keyword is normalized independently. Set
compareKeywords: trueto put up to 5 on one shared 0-100 scale (see above). - Regions with no search data are omitted rather than returned as zeros, so every row you get is a real signal.
- This Actor collects publicly available, aggregated, anonymous data only, no personal data is touched.
FAQ
Why do I sometimes see a keyword with an error field?
Google aggressively rate-limits. The Actor retries with rotating proxies and exponential backoff; in the rare case a keyword still fails, it's reported transparently and not charged.
Does it support any country?
Yes. Worldwide by default, or any ISO country/region code (US, GB, DE, IL, US-CA).
Can I schedule it? Yes. Use Apify Schedules to run it hourly or daily and deliver fresh trend data to your stack automatically.