Google Trends Scraper – Interest, Regions & Queries
Pricing
from $1.00 / 1,000 result rows
Google Trends Scraper – Interest, Regions & Queries
Google Trends Scraper – Interest, Regions & Queries: 1 row per keyword, no compute fees. Input: up to 5 keywords to compare, country, time range. Output: interest over time, by region, related queries, trending searches. $3.00/1k rows.
Pricing
from $1.00 / 1,000 result rows
Rating
0.0
(0)
Developer
Glidepath
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Google Trends scraper with one row per keyword and no compute fees: interest over time, interest by region and related queries for up to 5 compared keywords per search (and more with a shared anchor), plus today's trending searches for any country, as clean JSON without a browser.
One result row per keyword, with every section you asked for inside it, so a 3-keyword comparison is 3 rows. The same 0-100 scale as trends.google.com.
Who uses it
- SEO and content teams: find rising queries before they peak, and compare topic ideas.
- Marketers and product managers: seasonality, launch timing, and which regions care most about a product.
- Analysts and data scientists: weekly or monthly interest series as a feature in forecasting models.
- Newsrooms and social teams: what a country is searching for right now, with the related headlines.
How to use it
- Enter one search per line in Search terms. Separate up to 5 terms with commas to compare them (
python, javascript). - Pick a country or region (empty = worldwide), a time range, and optionally the search type (web, images, news, Shopping, YouTube).
- Run it, and download the results as JSON, CSV or Excel, or call it from the API, Make, Zapier, n8n or an AI agent (MCP).
Add country codes to Trending searches: countries to also get today's trending searches for those countries (RSS feed, 10-25 each), or pick a Trending Now window (4 h, 24 h, 48 h or 7 days) for the full Trending Now list, often hundreds of trends per country.
Input example
{"searchTerms": ["python, javascript", "coffee"],"geo": "US","timeRange": "today 12-m","include": ["interestOverTime", "interestByRegion", "relatedQueries", "relatedTopics"],"trendingCountries": ["US"],"maxTrendingPerCountry": 10}
Output example
A keyword row (arrays shortened):
{"type": "keyword","keyword": "python","comparedWith": ["javascript"],"geo": "US","timeRange": "today 12-m","category": 0,"searchType": "web","averageInterest": 63,"interestOverTime": [{"date": "2025-09-21T00:00:00Z", "formattedTime": "Sep 21 – 27, 2025", "value": 68, "hasData": true, "isPartial": false}],"interestByRegion": [{"geoCode": "US-WY", "geoName": "Wyoming", "value": 100}],"relatedQueries": {"top": [{"query": "what is python", "value": 100, "formattedValue": "100"}],"rising": [{"query": "python 3.14", "value": 13000, "formattedValue": "Breakout"}]},"relatedTopics": {"top": [], "rising": []},"trendsUrl": "https://trends.google.com/trends/explore?q=python%2Cjavascript&date=today+12-m&geo=US","scrapedAt": "2026-09-26T08:00:00Z"}
A trending-search row (RSS; Trending Now rows also carry endedAt, active, relatedSearches and categoryIds, and have no news):
{"type": "trendingSearch","keyword": "hotel","approxTraffic": "200+","approxTrafficMin": 200,"startedAt": "2026-09-26T07:20:00Z","newsItems": [{"title": "…", "url": "https://…", "source": "USA Today"}],"geo": "US","trendsUrl": "https://trends.google.com/trending?geo=US","scrapedAt": "2026-09-26T08:00:00Z"}
| Field | Type | Description |
|---|---|---|
type | string | keyword or trendingSearch |
keyword | string | The search term, or the trending search |
comparedWith | array | Other terms in the same comparison (same 0-100 scale) |
geo | string | Country/region code, or WORLDWIDE |
timeRange | string | Period analysed |
category | integer | Google Trends category id (0 = all) |
searchType | string | web, images, news, shopping or youtube |
averageInterest | integer | Average interest for the period (0-100): Google's own average, or the mean of the points when Google gives none |
interestOverTime | array | date (ISO UTC), formattedTime, value 0-100, hasData, isPartial |
interestByRegion | array | geoCode, geoName, value 0-100 |
relatedQueries | object | top and rising: query, value, formattedValue ("Breakout" = +5000% or more) |
relatedTopics | object | top and rising: title, type, mid, value, formattedValue |
approxTraffic | string | Trending searches: approximate searches, e.g. 200K+ |
approxTrafficMin | integer | approxTraffic as a number (lower bound) |
startedAt | string | Trending searches: when the trend started (ISO UTC) |
newsItems | array | Trending searches: related news title, url, source (RSS rows only) |
endedAt, active | string, boolean | Trending Now rows: when the trend ended (null while active) |
relatedSearches | array | Trending Now rows: searches grouped into the trend |
categoryIds | array | Trending Now rows: Google Trends category ids |
trendsUrl | string | The same view on trends.google.com |
scrapedAt | string | ISO 8601 UTC |
A run summary (per search: rows saved, notes, errors) is saved as SUMMARY in the run's key-value store.
Keywords from a Google Sheet
Keep your keyword list in a spreadsheet: put the Sheet's ID or link in Search terms from a Google Sheet (spreadsheetId), shared as "Anyone with the link can view" (a published sheet or any public CSV URL works too). The first column is read, one search per row; a header such as keyword is skipped, and a cell like tea, coffee is compared on one scale. Up to 500 searches per sheet, run after any Search terms.
Compare more than 5 keywords
Google Trends compares at most 5 terms at once. Turn on Compare more than 5 keywords (normalizeAcrossBatches) and put up to 50 terms in one line: the Actor fetches them in batches of 4 plus one shared anchor term (anchorKeyword, default the first term), multiplies each batch so its anchor matches the first batch's anchor, then rescales everything so the highest point is 100. Every row says which anchor and batch it came from (normalizedWithAnchor, anchorBatch, anchorScaleFactor).
How exact is it? Google rounds each batch to whole numbers, so terms far below the anchor lose precision, and Google samples its data, so repeated runs differ by a few points. Choose an anchor with steady, medium interest. Rows where the anchor averaged below 5 in a batch are flagged anchorLowSignal: true; treat them as rough.
Switching from another Google Trends Actor
The input accepts the same field names as apify/google-trends-scraper: searchTerms, isMultiple, timeRange, customTimeRange, geo, category, maxItems, startUrls and spreadsheetId. So you can move a saved input or Task over without changes. Trends URLs in startUrls are read locally (keywords, geo, date, cat, gprop); the page itself is never opened. You pay one row per keyword with no extra compute fees.
Use it with
- Schedules: save your input as a Task and run it hourly, daily or weekly.
- Integrations: Slack, e-mail, Google Sheets and Google Drive, webhooks, Make, Zapier and n8n (the Integrations tab of the Actor or Task).
- API and code: the Apify API, the JavaScript and Python clients, or CSV/JSON/Excel downloads.
- AI agents: the Apify MCP server exposes this Actor as a tool; the input is plain text and short lists.
Pricing
Pay per result: $3.00 per 1,000 result rows on the Apify Free plan; on paid plans $2.50 (Starter), $1.75 (Scale) and $1.00 (Business and higher) (the price for your plan is shown on the Pricing tab). The examples below use the Free-plan price. A row is one keyword of one search (with every section you selected) or one trending search. Keywords for which Google has no data are not saved and not charged.
- Weekly check of 250 keywords in one country → about 1,000 rows/month → $3.00/month.
- One-off research on 2,000 keywords → $6.00.
- 10,000 keyword rows → $30.00.
A small start fee of $0.00005 per run applies. Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached.
Limits and notes
- Values are relative (0-100), exactly as Google Trends shows them, not absolute search volumes. Terms are only comparable within the same search.
- Up to 5 terms per comparison (a Google limit). Put unrelated terms on separate lines.
- Related topics: Google currently often returns no related topics for automated requests. The field is then empty (
top: []); it is never filled with made-up data. - Trending searches come from Google Trends' public RSS feed (usually 10-25 per country) or, with a Trending Now window, from the data the trends.google.com/trending page loads (no login, no cookies). Traffic is Google's own bucket (e.g.
10K+); the Trending Now increase percentage is not included. - Google occasionally rate-limits requests. The Actor waits and retries politely (no proxies, no IP rotation). If Google still refuses, the search is reported in
SUMMARYand not charged; try again later. If only one extra section (region or related queries) is rate-limited, the row is still saved with that section empty and a note inSUMMARY. - Only Google Trends' public JSON and RSS endpoints are read. No login, no cookies from any account, no CAPTCHA solving.
FAQ
Is it legal to use? The Actor reads public, aggregated and anonymised Google Trends statistics through the same public endpoints trends.google.com uses, and it respects Google's robots.txt. It collects no personal data. You are responsible for how you use the data; if in doubt, ask a lawyer.
Why do my numbers differ slightly from the website? Google samples Trends data, so repeated requests can differ by a few points, especially for small regions or short periods.
Can I get absolute search volumes? No. Google Trends only publishes relative interest (0-100).
How do I monitor keywords every week? Save the input as a Task in Apify and add a schedule. Each run returns fresh rows.
Can an AI agent use it? Yes. The Actor works as an MCP tool, and the input is plain keywords, a country code and a time range.
Changelog
See CHANGELOG.md.
Support
Found a problem or need a field? Open an issue on the Actor's Issues tab. We read every one and usually reply within 2 business days.