Google Trends Scraper - Interest, Regions, Related, Trending
Pricing
from $1.26 / 1,000 results
Google Trends Scraper - Interest, Regions, Related, Trending
Scrape Google Trends via its JSON API, no browser. Input: search terms (or up to 5 compared), geo, time range, category, property; or countries for Trending Now. Output: one item per term or comparison with interest over time, by region, related queries and topics; or one per trending search.
Pricing
from $1.26 / 1,000 results
Rating
0.0
(0)
Developer
Artificially
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Google Trends Scraper – Interest Over Time, Regions, Related Queries & Trending Now
Get Google Trends data as clean JSON without a browser: interest over time, interest by region, related queries and related topics for any keyword (or up to 5 keywords compared on one chart), plus the Trending Now list of daily trending searches for any country. Every run is quick because the actor talks to the same JSON endpoints the Google Trends website uses, not a headless browser that loads the full page.
Built by Artificially | Follow us on X @artificially_io
Use with AI agents (MCP)
This actor works as a tool for Claude, ChatGPT, Cursor and other AI agents through Apify's MCP server. Ask something like "is interest in electric bikes growing in Germany, and what are people searching for with it?" and the agent calls it for you. Set compactOutput: true so each result is a small summary (averages, a date+value timeline, top regions, top and rising queries) that fits easily in the agent's context.
Quick setup (sign in with your Apify account when asked):
- Claude (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste
https://mcp.apify.com?tools=artificially/google-trends-scraper - Claude Code or Cursor via the Apify CLI (latest version,
apify upgrade):apify mcp install claude-code --tools artificially/google-trends-scraper(usecursorinstead ofclaude-codefor Cursor) - Any MCP client (Cursor, VS Code, Windsurf):
{"mcpServers": {"apify": { "url": "https://mcp.apify.com?tools=artificially/google-trends-scraper" }}}
Try asking:
- "Compare Google Trends interest for ChatGPT, Gemini and Claude over the last 12 months."
- "What is trending on Google in the US right now?"
Why this actor
- No browser, no timeouts – direct JSON requests, so a keyword takes seconds, not minutes. No page screenshots, no 3-minute page loads.
- Everything in one item – one item per keyword with the full timeline, the region table, and top + rising related queries and topics. No need to join four datasets.
- Real comparisons – turn on
compareTermsand up to 5 terms share the same 0-100 scale, exactly like comparing terms in the Google Trends UI. - Trending Now – daily trending searches for any country with search volume, % increase, start time, category, related searches and news articles.
- All the filters – location (country, state, US metro), time range (past hour to 2004-present, or custom dates), category, and search property (web, images, news, YouTube, Shopping).
- You only pay for results – keywords that fail or have too little search volume are listed for free in
FAILED_QUERIESand never charged. - Built for rate limits – every request is paced, and when Google answers "too many requests" the actor moves to a fresh proxy session and retries instead of failing the run.
Use cases
- SEO and content – find rising queries and breakout topics before they peak, and plan content around seasonal demand.
- Market research – compare brands, products or categories on the same scale, by country or state.
- Product and e-commerce – spot seasonality, validate demand for a new product, and pick the regions to launch in.
- News and social monitoring – schedule Trending Now every hour and pipe new trends into Slack, Sheets or your own app.
- Finance and data science – feed search-interest time series into models and dashboards.
Input
| Field | Type | Description | Default |
|---|---|---|---|
mode | string | explore (search terms) or trendingNow (trending searches by country) | explore |
searchTerms | array | Keywords (or topic IDs like /m/0dr90d) | – |
compareTerms | boolean | Compare terms in groups of up to 5 on one shared scale | false |
geo | string | Country (US), subregion (US-CA), US metro (US-NY-501) or empty for worldwide | worldwide |
timeRange | string | now 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all, custom | today 12-m |
customTimeRange | string | With timeRange: custom: "YYYY-MM-DD YYYY-MM-DD" | – |
category | integer | Google Trends category ID (0 = all) | 0 |
property | string | web, images, news, youtube, froogle (Shopping) | web |
includeInterestOverTime | boolean | Time series + averages | true |
includeInterestByRegion | boolean | Interest per country / subregion | true |
includeRelatedQueries | boolean | Top and rising related queries | true |
includeRelatedTopics | boolean | Top and rising related topics | true |
regionResolution | string | auto, COUNTRY, REGION, CITY, DMA | auto |
includeLowVolumeRegions | boolean | Also list regions with low search volume | false |
maxRelatedPerList | integer | Cap each top/rising list | all (up to 25) |
trendingNowCountries | array | Countries for Trending Now mode, e.g. ["US", "GB"] | ["US"] |
trendingNowHours | string | 4, 24, 48 or 168 hours | 24 |
trendingNowCategory | string | Trending category ID (17 Sports, 18 Technology, …) | all |
trendingNowActiveOnly | boolean | Only trends that are still rising | false |
trendingNowIncludeNews | boolean | Add picture and news articles for the top trends | true |
maxItems | integer | Stop after this many items | no limit |
compactOutput | boolean | Slim items for AI agents | false |
maxConcurrency | integer | Parallel proxy sessions (1–10) | 3 |
proxyConfiguration | object | Apify datacenter proxy by default; RESIDENTIAL optional | datacenter |
Example: compare terms in the US over 12 months
{"searchTerms": ["chatgpt", "gemini", "claude"],"compareTerms": true,"geo": "US","timeRange": "today 12-m"}
Example: one item per keyword, custom dates, news search
{"searchTerms": ["world cup", "olympics"],"timeRange": "custom","customTimeRange": "2024-01-01 2024-12-31","property": "news","maxRelatedPerList": 10}
Example: Trending Now in the US and UK
{"mode": "trendingNow","trendingNowCountries": ["US", "GB"],"trendingNowHours": "24"}
Output
Explore item (one per term, or one per comparison group)
{"type": "explore","searchTerm": "bitcoin","searchTerms": ["bitcoin"],"isComparison": false,"geo": "US","timeRange": "today 12-m","resolvedTime": "2025-09-23 2026-09-23","category": 0,"property": "web","trendsUrl": "https://trends.google.com/trends/explore?date=today+12-m&geo=US&q=bitcoin&hl=en-US","interestOverTime": {"resolution": "WEEK","averages": [{ "term": "bitcoin", "value": 31 }],"timeline": [{"date": "2025-09-21T00:00:00.000Z","timestamp": 1758412800,"formattedTime": "Sep 21 – 27, 2025","values": [26],"hasData": [true],"isPartial": false}]},"interestByRegion": {"resolution": "REGION","regions": [{ "geoCode": "US-WY", "geoName": "Wyoming", "values": [100], "hasData": [true], "coordinates": null }]},"relatedQueries": [{"term": "bitcoin","top": [{ "query": "bitcoin price", "value": 100, "formattedValue": "100", "isBreakout": false, "trendsUrl": "https://trends.google.com/trends/explore?q=bitcoin+price&date=today+12-m&geo=US" }],"rising": [{ "query": "bitcoin etf news", "value": 350, "formattedValue": "+350%", "isBreakout": false, "trendsUrl": "https://trends.google.com/trends/explore?q=bitcoin+etf+news&date=today+12-m&geo=US" }]}],"relatedTopics": [{ "term": "bitcoin", "top": [], "rising": [] }],"warnings": null,"scrapedAt": "2026-09-23T11:20:00.000Z"}
In a comparison, values and hasData arrays follow the order of searchTerms, all on the same 0-100 scale, and relatedQueries / relatedTopics contain one block per term.
| Field | Description |
|---|---|
searchTerm | The term, or the compared terms joined with ", " |
resolvedTime | The exact date range Google used |
interestOverTime | resolution (MINUTE, HOUR, DAY, WEEK, MONTH), averages per term and the timeline (0-100 relative interest; isPartial marks the unfinished last period) |
interestByRegion | resolution and regions with geoCode, geoName, values (and coordinates for cities) |
relatedQueries | Per term: top (relative 0-100) and rising (growth %, isBreakout for +5000% and more) |
relatedTopics | Same as related queries, with the topic title, type and Knowledge Graph mid |
warnings | Blocks Google could not return for this query (the rest of the item is still valid) |
Trending Now item (one per trending search)
{"type": "trendingNow","searchTerm": "lynx vs fever","geo": "US","rank": 3,"searchVolume": 200000,"increasePercentage": 1000,"startedAt": "2026-09-22T23:00:00.000Z","endedAt": null,"isActive": true,"categories": ["Sports"],"relatedQueries": ["fever vs lynx", "caitlin clark", "wnba playoffs"],"articleCount": 12,"picture": "https://encrypted-tbn0.gstatic.com/images?q=...","pictureSource": "ESPN","news": [{ "title": "Fever beat Lynx in Game 3", "url": "https://www.espn.com/...", "source": "ESPN", "picture": "https://encrypted-tbn0.gstatic.com/images?q=..." }],"trendsUrl": "https://trends.google.com/trends/explore?q=lynx%20vs%20fever&date=now%201-d&geo=US&hl=en-US","hours": 24,"scrapedAt": "2026-09-23T11:33:45.451Z"}
searchVolume is Google's lower bound ("200K+" becomes 200000). news is filled for the trends that appear in Google's Trending Now feed (usually the top ~20) and null for the rest.
The key-value store also contains:
SUMMARY– counts, limits reached, and request / rate-limit statistics.FAILED_QUERIES– terms or countries that failed or had no data, with a reason (no_data,rate_limited,invalid_input,http_error). These are never charged.
Pricing
This actor uses pay-per-event pricing: a tiny fee per run plus a fee per item saved. One item = one search term with every data block you asked for (timeline, regions, related queries and topics), or a whole comparison of up to 5 terms, or one Trending Now search. Terms with no data and failed queries are never charged. Set a maximum cost per run in Apify Console and the actor stops cleanly when it is reached. See the Pricing tab for current prices.
FAQ
Why are the numbers 0-100 and not search counts?
That is how Google Trends works: values are relative interest, where 100 is the peak for the chosen terms, place and time. Compare terms with compareTerms: true to put them on the same scale. Trending Now gives approximate absolute volumes (searchVolume).
Why did a term return no data?
Google shows nothing for terms with very low search volume in the chosen place and time. These are listed in FAILED_QUERIES with reason no_data and are not charged. Try a longer time range, a bigger region or a broader term.
Why is relatedTopics empty?
Google leaves the related topics list empty for many queries, also in its own UI. Related queries are usually available.
Do I need a residential proxy?
Usually not. Google limits Trends requests per IP; the actor paces requests and rotates to a new Apify datacenter proxy session whenever it is rate-limited. If SUMMARY shows many rate-limited requests or some queries fail with rate_limited, run again with the RESIDENTIAL proxy group.
Can I use a Google Trends URL?
Copy the q, geo, date, cat and gprop values from the URL into searchTerms, geo, timeRange (or customTimeRange), category and property.
Is this legal? The actor reads the same public, aggregated and anonymized data that anyone can see on trends.google.com. It does not log in and collects no personal data. You are responsible for using the data in line with applicable laws and Google's terms.
Support
Missing a feature or found a query that does not work? Open an issue on the actor's Issues tab – we usually respond within a day.
Related actors
- Google Jobs Scraper: job listings from Google Jobs search, with salaries and apply links.
- Product Hunt Scraper: new product launches, upvotes and makers, to pair trend spikes with new products.