Google Trends Scraper API
Pricing
from $2.55 / 1,000 results
Google Trends Scraper API
Compare Google Trends search interest over time and by region, with related queries and current trending searches. Export structured JSON or CSV for research and reporting. Start with a ready-to-run example; no Google account required.
Pricing
from $2.55 / 1,000 results
Rating
0.0
(0)
Developer
CleanScrape
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Export Google Trends observations as structured rows for spreadsheets, research pipelines and recurring exports. CleanScrape supports interest over time, related queries, regional interest and the public trending-searches feed. Related topics are an optional, availability-limited feature.
This Actor uses Google Trends website endpoints and its public RSS feed. It is not Google's official API and is not affiliated with Google. Google also offers a separate Trends API alpha, with its own access requirements and capabilities.
Try it: compare search interest in ChatGPT and Claude
For a step-by-step walkthrough with inputs and a guide to interpreting the results, read Compare Google Trends terms in a spreadsheet.
Use one request to compare two search terms in the same country and time window. The output is ready to turn into a line chart in your spreadsheet.
| 1. Choose the comparison | 2. Collect the timeline | 3. Make your chart |
|---|---|---|
| ChatGPT and Claude, United States | Interest over the past three months | Use date for the horizontal axis and keyword for each series |
Run the example
- Open Tasks on the Store page (Example tasks in Console) and choose Compare ChatGPT vs Claude on Google Trends.
- Keep
ChatGPTandClaude,US, andtoday 3-m. The preset selects onlyinterest_over_time, so other result types will not add rows. - Review the Pricing tab and spending limit, then select Start. Open Output and check
RUN_REPORTfor errors or empty sections. - Download CSV or Excel. Pivot the rows by date and keyword, using
valueas the measure, then insert a line chart in your spreadsheet. The Actor exports the data; it does not create the chart itself.
A look at the output
Selected columns from our demonstration run on 14 September 2026, using the three-month preset.
| Date | Keyword | Country | Relative interest | Partial interval? |
|---|---|---|---|---|
| Jun 14, 2026 | ChatGPT | US | 48 | false |
| Jun 14, 2026 | Claude | US | 19 | false |
| Jun 15, 2026 | ChatGPT | US | 68 | false |
These are relative interest values, not search counts. Keep both terms in the same request for the comparison. The run returned 186 rows; Google controls the time intervals, so future counts can differ. Each keyword at each timestamp is a separate billable row.
Make it yours: replace the terms with products, topics or competitors relevant to your research. If you want current trending searches instead, choose Export Current US Google Trends Searches under Tasks on the Store page (Example tasks in Console); it does not require keywords.
Quick start
Start with an explicit, bounded request. This example compares two keywords in the US and returns timeline rows only:
{"searchTerms": ["bitcoin", "ethereum"],"dataTypes": ["interest_over_time"],"geo": "US","timeframe": "2026-09-01 2026-09-07","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Trending searches need no keywords:
{"dataTypes": ["trending_now"],"trendingGeo": "US"}
Run the Actor, inspect its dataset and RUN_REPORT, then export JSON, CSV or Excel. If dataTypes is omitted, the defaults are timeline and trending. Console keyword prefills are not raw API defaults.
Data types and availability
dataType | One row represents | Qualification |
|---|---|---|
interest_over_time | A keyword at one returned timestamp | Relative interest; Google determines intervals |
related_queries | A related query for one keyword and ranking group | Top/rising lists can be empty or blocked |
related_topics | A related topic for one keyword and ranking group | Limited availability; nonempty results are not guaranteed |
interest_by_region | A keyword in one geographic area | Availability depends on query, geography and resolution |
trending_now | One item from the country RSS feed | Not a comprehensive historical or real-time archive |
Related topics, 14 September 2026: direct Google requests returned empty topic lists for multiple ordinary keywords/timeframes, including Bitcoin, pizza and artificial intelligence. These are reported as empty, not turned into invented topic rows. Use the optional feature only if your workflow tolerates absent data. Related queries are a separate feature, not topics under another name.
Bounded retries and proxy rotation help with some transient failures. They do not guarantee completeness, uninterrupted upstream access or distinct exit IPs.
Input reference
| Field | Default | Meaning |
|---|---|---|
searchTerms | None | Up to five keywords; not needed for trending |
dataTypes | Timeline and trending | Supported feature names above |
geo | Empty | Country such as US or FI; empty requests worldwide data |
timeframe | today 12-m | Examples: today 5-y, now 7-d, or YYYY-MM-DD YYYY-MM-DD |
category | 0 | Google Trends category; zero means all |
language | en-US | Interface language for source labels |
regionResolution | COUNTRY | COUNTRY, REGION, CITY or DMA, where supported |
trendingGeo | US in Console | Omitted raw input falls back to geo, then US |
proxyConfiguration | Residential Apify Proxy | Direct/custom routing can be supplied explicitly |
For compatibility, the runtime accepts comma-separated keyword strings, although the form uses an array. Only the first five nonempty terms are used; additional terms produce a warning. Unsupported requests fail with an actionable error. Some structurally valid geo/time combinations can still fail upstream.
Output reference
The dataset has five possible row shapes, identified by dataType. Filter by type before plotting or interpreting value.
| Type | Fields in addition to dataType |
|---|---|
| Timeline | keyword, geo, timeframe, date, timestamp, value, isPartial |
| Related queries | keyword, geo, timeframe, relatedQuery, kind, value, formattedValue, link |
| Related topics | keyword, geo, timeframe, topicTitle, topicType, kind, value, formattedValue, link |
| Regions | keyword, geo, timeframe, resolution, geoName, geoCode, value |
| Trending | geo, rank, query, approxTraffic, pubDate, relatedNews |
Illustrative timeline row:
{"dataType": "interest_over_time","keyword": "bitcoin","geo": "US","timeframe": "2026-09-01 2026-09-07","date": "Sep 1, 2026","timestamp": "1788220800","value": 91,"isPartial": false}
Timeline date is a source-formatted label, not a promised ISO date. timestamp is a Unix-seconds string. isPartial preserves the source's partial-interval flag. Unknown values remain null.
For related data, kind distinguishes top/rising groups. Rising values can represent growth rather than 0-100 interest; formattedValue preserves labels such as Breakout. link may be a source-relative path. Trending approxTraffic is an approximate label, not an exact count; relatedNews contains up to five headline strings, not articles or URLs. pubDate retains the feed's format.
Interpretation
Timeline and regional interest are normalized measures, not absolute search volumes. Zero may reflect insufficient data rather than literally no searches. Google chooses the interval: requesting 90 days does not guarantee 90 timestamps. Separately normalized pulls should not be joined into one absolute-volume series without an appropriate method.
Pricing
The prices and calculations below use the base rate before Store discounts. Eligible subscription tiers receive lower rates; the Pricing tab shows the current tier prices.
$3 per 1,000 dataset rows ($0.003 each), plus $0.05 per allocated GB at startup, minimum one event. Startup charges apply even with no rows. Every selected data type contributes to the total row count. Check the Pricing tab for current rates.
| One run | At up to 1 GB | At the current 4 GB default |
|---|---|---|
| 24 delivered rows | $0.122 | $0.272 |
| 180 delivered rows | $0.59 | $0.74 |
| 1,000 delivered rows | $3.05 | $3.20 |
Two keywords with 90 returned timestamps create 180 timeline rows; other selected features add rows. These calculations do not guarantee output volume. Some competitors bill a nested keyword history as one result, so compare total charges for equivalent observations. Existing event prices are unchanged.
Run report and failure handling
Read RUN_REPORT in the default key-value store, separate from the billed dataset. Each requested section has a count and status: ok (rows returned), empty (no rows without a detected request error), failed (request/parsing error), or skipped (missing keywords).
The report includes hasErrors, hasEmptyResults, hasSkippedUnits and routing/input warnings. ok does not certify exhaustive source coverage. A run may succeed while one section is empty, failed or skipped, so check the report when completeness matters. If every attempted feature fails, the run fails. A timeout, forced abort or dataset-write failure may interrupt execution before the final report is saved.
API and recurring workflows
Use the API tab for current authenticated examples. Save a task and schedule repeated exports, then retrieve the dataset through the API or an automation tool. Keep tokens secure and use explicit inputs and bounded run settings.
Cross-run history, alerts and forecasting models are downstream responsibilities. Preserve keyword, geography, timeframe and row type alongside observations. Never interpret a failed or empty section as proof of absent demand.
Troubleshooting and support
For support, email contact.cleanscrape@gmail.com. Include the Actor name, a public source URL and your run ID where relevant. Never send API tokens, passwords or private customer data.
No topics: check the availability note and report. Missing keyword features: supply searchTerms. HTTP 429: inspect routing and try a smaller request later. Unexpected cost: check all row types and the startup memory multiplier. Fewer timestamps: check Google's interval and data availability.
Open an issue with a minimal input, expected feature and an optionally shared debug run. Never include proxy credentials or API tokens. Maintained by CleanScrape.
Release notes: 0.2
Added per-feature reports, explicit empty/failure distinctions and residential defaults for raw API requests. Cookie initialization repeats after proxy rotation; related widgets are associated with their source keywords. Field names, default data types and prices are unchanged. Entirely failed requests and unusable inputs now fail explicitly instead of appearing as successful empty runs.
Related topics with multiple keywords
Related topics are requested independently for each distinct keyword because Google can omit topic widgets from comparison requests. Each row retains its original keyword; topic scores are rankings within that keyword's result, not cross-keyword volume comparisons. Other data types keep their existing comparison behavior.
Google may return an empty topic list even for a popular keyword. The Actor does not substitute related queries or generate topic names. Check RUN_REPORT for an empty or failed feature before treating a run as complete. Missing or malformed topic widgets are reported as failures, while data from other successful features is retained. This change fixes multi-keyword request handling, not Google's underlying topic-data availability.
Thanks for using CleanScrape
What worked well, and what could be better? Share your experience in Reviews to help other users decide whether this tool fits their workflow. Honest feedback is welcome, including anything that fell short.
For a question, bug or feature request, open an issue. Include your expected result and a non-sensitive input example. Never include API tokens or credentials. Leaving feedback is optional and does not affect access, pricing or support.
Disclaimer
This Actor is an independent tool developed by CleanScrape. It is not affiliated with, endorsed by, or sponsored by Google. It is not an official Google Trends API. Google, Google Trends and all other trademarks are the property of their respective owners. Brand names are used only to identify supported sources and illustrate usage.