Google Trends Scraper – Reliable Interest Over Time API
Pricing
from $1.50 / 1,000 successful search terms
Google Trends Scraper – Reliable Interest Over Time API
Reliable Google Trends API: interest over time, related queries and interest by region for many keywords, countries and search types (web, YouTube, news, images, shopping). Compare up to 5 terms. Pay only for successful results.
Pricing
from $1.50 / 1,000 successful search terms
Rating
5.0
(1)
Developer
Brightleaf Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Works reliably, and you pay only for successful results. Get Google Trends interest over time, related queries (top + rising) and interest by region for hundreds of keywords in one run, across any country and across Web, YouTube, News, Images and Shopping search.
- ✅ Built for reliability. Datacenter proxies first, with automatic residential fallback when Google rate-limits. Every retry uses a fresh session and IP, with exponential backoff.
- 💸 Pay only for results. Failed terms are returned with a clear reason and are never charged.
- ⚡ Lightweight and fast. No browser, just 256 MB of memory and about 3 seconds per term.
- 🧾 Clean output. One row per term, with clear field names and a
statusfield. Ready for spreadsheets, BI tools and automations. - 🔀 Compare mode. Compare up to 5 terms on the same 0–100 scale, just like on trends.google.com.
What can you use it for?
| Use case | How |
|---|---|
| 🔎 SEO and keyword research | Check whether a keyword is growing or dying before you target it, and mine rising related queries for new long-tail ideas. |
| 🗓️ Content planning | Find seasonal peaks (e.g. "sunscreen", "diwali gifts") and publish ahead of the demand curve. |
| 📊 Market research | Compare brands, products or categories (nike, adidas, puma) across countries and on YouTube or Shopping search. |
| 📈 Trend monitoring | Schedule daily or weekly runs and send the results to Sheets, Slack or your database to catch breakout topics early. |
How to use it
- Enter your search terms, one per line. Add
| COUNTRYto set a country for one term, e.g.cricket | IN. - Optionally set the default location, time range, search type and category.
- Choose what to fetch: interest over time (on by default), related queries (on by default) and interest by region.
- Click Start, then download the results as JSON, CSV, Excel or HTML, or fetch them through the API.
Input examples
Keyword research across countries
{"searchTerms": ["coffee", "cricket | IN", "premier league | GB", "tesla | US"],"timeRange": "today 12-m","includeRelatedQueries": true}
Compare brands on YouTube over 5 years, with regional breakdown
{"searchTerms": ["nike, adidas, puma | US", "iphone, samsung, pixel"],"isMultiple": true,"timeRange": "today 5-y","property": "youtube","includeInterestByRegion": true}
Exact date range in one category (Food & Drink)
{"searchTerms": ["matcha", "cold brew"],"geo": "GB","customTimeRange": "2024-01-01 2024-12-31","category": 71}
The input field names (searchTerms, isMultiple, timeRange, customTimeRange, geo, category, maxItems) match the most popular Google Trends Actor, so you can switch by pasting your existing input.
Output
Each search term (or comparison group) produces one dataset item:
| Field | Description |
|---|---|
searchTerm / searchTerms | The term, or the list of compared terms |
geo, timeRange, category, property | What was requested (geo: "" means worldwide) |
status | success, failed or skipped (max charge limit reached) |
errorReason | Why a term failed, e.g. Rate-limited by Google (HTTP 429) after 5 attempt(s) |
interestOverTime | [{date, timestamp, formattedTime, value, isPartial}]. In compare mode, values is keyed by term |
relatedQueriesTop / relatedQueriesRising | [{query, value, formattedValue, link}]. In compare mode, relatedQueriesByTerm |
interestByRegion | [{geoCode, geoName, value}] (when enabled) |
scrapedAt | ISO timestamp |
meta | Attempts, proxy used, whether residential fallback was needed, duration |
input | The exact input line, for easy joining |
Sample (term coffee, US, past 12 months):
| date | value |
|---|---|
| 2025-09-21 | 62 |
| 2025-09-28 | 63 |
| … | … |
{"searchTerm": "coffee","searchTerms": ["coffee"],"isCompare": false,"geo": "US","timeRange": "today 12-m","category": 0,"property": "web","status": "success","errorReason": null,"interestOverTime": [{ "date": "2025-09-21", "timestamp": 1758412800, "formattedTime": "Sep 21 – 27, 2025", "value": 62, "isPartial": false }],"relatedQueriesTop": [{ "query": "coffee near me", "value": 100, "formattedValue": "100", "link": "https://trends.google.com/trends/explore?q=coffee+near+me&date=today+12-m&geo=US" }],"relatedQueriesRising": [{ "query": "how to remove coffee stain from carpet", "value": 5150, "formattedValue": "Breakout", "link": "https://trends.google.com/trends/explore?q=how+to+remove+coffee+stain+from+carpet&date=today+12-m&geo=US" }],"scrapedAt": "2026-09-27T09:00:00+00:00","meta": { "attempts": 1, "proxy": "datacenter", "usedResidentialFallback": false, "durationSecs": 2.4, "retriedErrors": [] },"input": { "searchTermsEntry": "coffee | US", "index": 0 }}
A run summary (successes, failures, residential fallbacks, error counts, duration) is saved as SUMMARY in the run's key-value store.
Integrations
Works with n8n, Make, Zapier, Google Sheets, Slack, Airbyte, webhooks and anything that can call the Apify API. Use the Run Actor module or node, then read the dataset items. Because every item has a status field, you can filter out failures in one step.
FAQ
Do I need my own proxies? No. Proxies are included. The default Auto strategy uses fast datacenter IPs and automatically retries rate-limited terms through residential IPs. You can force Datacenter only or Residential only in the input.
What does it cost? This Actor uses pay-per-event pricing with two charges (current prices are on the Pricing tab):
| Event | When it is charged | Price |
|---|---|---|
| Actor start | Once when a run starts (per GB of memory; the default 256 MB counts as one) | $0.005 |
| Term result | Once per successful search term or comparison group | $0.0015 ($1.50 per 1,000) |
Example: 1,000 terms in one run cost $0.005 + $1.50 = $1.505. Platform and proxy costs are included, with no usage fees on top. Failed terms are returned with a reason and are not charged. If you set a maximum cost for a run, the Actor takes the start fee into account and stops cleanly before going over it. Remaining terms are listed as skipped and are not charged.
What is compare mode?
Enable Compare terms and put up to 5 comma-separated terms on one line (coffee, tea, matcha | US). They are fetched in a single Google Trends comparison, so the values share one 0–100 scale. Each line counts as one result.
Are there limits? Google allows at most 5 terms per comparison. Values are relative (0–100), as on trends.google.com, and very low-volume terms may return no data. Concurrency is capped at 5 to stay under Google's rate limits. The default of 2 is the tested sweet spot. For very large batches (thousands of terms), split them across a few runs or schedule them.
Why are "rising" values sometimes "Breakout"?
Google labels queries that grew by more than 5,000% as Breakout. The numeric value is still included.
Can I get related topics? Not currently. Google no longer serves related-topics data through its public Trends endpoints (it returns empty lists), so we don't charge you for a field that would always be empty.
Is scraping Google Trends legal? This Actor collects publicly available, aggregated and anonymized statistics. It does not collect personal data. Check your own use case against applicable laws and Google's terms.