Google Trends Scraper & API - 100 Keywords
Pricing
from $1.40 / 1,000 keywords
Google Trends Scraper & API - 100 Keywords
Scrape Google Trends data: interest over time, interest by region, related and rising queries, related topics and today's trending searches. Compare up to 100 keywords on one 0-100 scale (Google allows 5), within 0.2% of Google's own figures. Rate limits handled.
What does Google Trends Scraper do?
Google Trends Scraper extracts Google search interest for your keywords: interest over time, interest by region, related and rising queries, related topics, and today's trending searches. You get one row per keyword, with a summary you can sort (average, peak, change) and the full series. It works like a Google Trends API, with no Google account and no code needed.
- Compare 100 keywords, not 5. Google Trends compares only 5 terms at a time, and each request has its own 0–100 scale, so two batches can't be compared. This actor repeats an anchor term in every batch and rescales, which puts every keyword on one scale. Measured against Google's own single-request figures, the error is 0.2 % at most (DeepSeek 2.13 vs 2.13, Grok 4.87 vs 4.87).
- Rate limits handled. Google Trends answers with HTTP 429 quickly. Each batch runs in its own proxy session and is retried in a new one after a refusal, never silently dropped. From Apify's servers, 9 keywords with 51 US states each and 10 trending searches came back in 21 seconds with no refusal.
- The endpoints that still work. The old
dailytrendsendpoint returns 404. Trending searches come from Google's live "Trending now" feed.
What data can you extract from Google Trends?
| Data | Fields |
|---|---|
| Interest over time | interestOverTime (date, value, isPartial), averageInterest, peakInterest, peakDate, trendChangePct |
| Interest by region | interestByRegion: countries, states, cities or US metro areas |
| Related queries | relatedQueries.top, relatedQueries.rising (with breakout values) |
| Related topics | relatedTopics.top, relatedTopics.rising |
| Trending now | rank, search term, approximate traffic, start time, news articles |
| Scale | anchorTerm, comparableAcrossBatches, scaleConfidence |
How to scrape Google Trends
- Enter your search terms, up to 100.
- Pick a country or region (empty for worldwide) and a time range, from the past hour to 2004 onwards, or custom dates.
- Choose the search type (web, YouTube, news, images, shopping) and the extras: related queries, topics, regions, trending now.
- Click Start, then download JSON, CSV or Excel, or call it through the API.
How much does it cost to scrape Google Trends?
You pay per keyword returned, and per trending search if you ask for them.
| Job | Cost |
|---|---|
| 10 keywords, 12 months, related queries | about $0.02 |
| 100 keywords on one scale | about $0.20 |
| Today's 10 trending searches | about $0.01 |
Subscription plans pay less per keyword.
Input example
{"searchTerms": ["chatgpt", "claude", "gemini", "perplexity", "copilot", "deepseek", "grok", "mistral", "llama"],"geo": "US","timeRange": "past-12-months","includeRelatedQueries": true,"includeInterestByRegion": true,"regionResolution": "REGION"}
Output example
{"type": "interest","searchTerm": "claude","geo": "US","timeRange": "today 12-m","averageInterest": 17.12,"peakInterest": 32,"trendChangePct": 149,"interestOverTime": [{"date": "2025-09-14T00:00:00+00:00", "value": 5, "isPartial": false}, "..."],"relatedQueries": {"top": [{"query": "claude ai", "value": 100}, {"query": "claude code", "value": 78}],"rising": [{"query": "claude cowork", "value": 73050, "formattedValue": "Breakout"}]},"anchorTerm": "chatgpt","comparableAcrossBatches": true,"scaleConfidence": "anchored"}
scaleConfidence is exact when Google compared everything in one request,
anchored when batches were rescaled, and weak when the anchor was too rare
in a batch to rescale precisely. If you see weak, choose a more-searched
anchor.
Use the Google Trends API in Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("DataIO/google-trends-scraper").call(run_input={"searchTerms": ["chatgpt", "claude", "gemini"], "geo": "US",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["searchTerm"], row["averageInterest"], row["trendChangePct"])
No pytrends quotas to fight. It also works from JavaScript, Make, Zapier, n8n, or AI agents through the Apify MCP server.
Other actors you might like
- Google Hotels Scraper: hotel prices and ratings for any city and dates.
- Wikipedia Pageviews by Language: another view of public attention, per language.
- npm Download Trends: adoption trends for JavaScript packages.
FAQ
Is it legal to scrape Google Trends?
Google Trends data is public and aggregated. It contains no personal data. How you use it is your responsibility.
Are the values search volumes?
No. Google Trends gives relative interest from 0 to 100, not counts of searches. With this actor, the 100 is shared by all your keywords.
Why are related topics sometimes empty?
Google provides topics only when a request has a single keyword. That is Google's rule.
Can I track trends over time?
Yes. Schedule the actor daily or weekly with the same keywords, or with
includeTrendingNow to log what is trending.
Source
Public Google Trends pages. This actor is not affiliated with or endorsed by Google.