Google Trends Scraper API for Interest Over Time

Niko Ollila · @cleanscrape

Compare Google Trends keywords and export interest over time, regional interest, related queries and trending searches to CSV or JSON.

About

Compare how search interest in a few terms changes over time, and export the results to a spreadsheet. The Actor collects interest over time, related queries, regional interest and the public trending-searches feed. Related topics are also available, but Google often returns them empty.

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.

Start with a small run

The form opens with a ready comparison: iced coffee and cold brew in the United States over the Past 12 months, with Interest over time selected. Start it as it is, or replace the two terms with your own.

  1. Enter up to five Search terms, one per line (a comma also separates terms). Keep terms you want to compare in the same run.
  2. Choose Results to collect. For a comparison, Interest over time is enough.
  3. Choose Country and Time range.
  4. Start the run and open its dataset. Download it as CSV, Excel or JSON.

On 2 October 2026 this comparison returned 106 rows (53 weekly values per term). Google chooses the intervals, so the row count can differ slightly between runs.

Custom dates (optional) is only for an exact period. Category, region detail, language and proxy settings are under Advanced options; you do not need them for a first run.

Choose what to collect

You wantForm settings
Compare terms over timeEnter Search terms; select Interest over time; choose the country and time range.
Related searchesEnter terms; select Related and rising queries.
Geographic interestEnter terms; select Interest by region. Adjust Region detail only if needed.
Current trending searchesSelect only Trending now; choose Country for Trending now. Search terms and Time range are not used by this feed.
Related topicsEnter terms; select Related topics (limited availability). Empty lists are common.

Each selected type adds its own rows, so you can select several in one run. All rows go to the run's dataset, and the dataType column tells the types apart: filter on it to keep one type. The values are listed under Results to collect and availability below.

A small regional-interest request:

{
  "searchTerms": ["cold brew"],
  "dataTypes": ["interest_by_region"],
  "geo": "US",
  "timeframe": "today 3-m",
  "regionResolution": "REGION"
}

Trending searches need no search terms:

{
  "dataTypes": ["trending_now"],
  "trendingGeo": "US"
}

Countries and dates

Choose countries by name. Country applies to interest over time, related data and regional interest; Worldwide is also available. Country for Trending now is a separate setting used only by Trending now.

For Time range, pick a preset such as Past 7 days, Past 3 months or Past 12 months. For an exact period, fill in Start date and, if you like, End date; they override the preset. Without an end date the range runs to today. A reversed or invalid date stops the run with an explanation before any data is requested.

Results to collect and availability

dataTypeOne row representsWhat to expect
interest_over_timeA keyword at one returned time pointRelative interest; Google chooses the intervals
related_queriesA related query for one keyword, in the top or rising listLists can be empty or blocked
related_topicsA related topic for one keyword, in the top or rising listOften empty; not guaranteed
interest_by_regionA keyword in one geographic areaDepends on the term, country and region detail
trending_nowOne item from the country's trending feedA current snapshot, not a full archive

Related topics are requested separately for each keyword, because Google can leave them out of comparison requests. Topic scores rank topics within one keyword; they are not comparable between keywords. In September 2026 tests, Google returned empty topic lists for several ordinary keywords. Empty lists are reported as empty; the Actor never fills them with related queries or invented topics.

Retries and proxy rotation help with temporary failures. They cannot guarantee complete data or uninterrupted access to Google.

Regional results leave out places where Google explicitly reports insufficient data for a term. A zero score that Google marks as available is kept.

Input reference

FieldAPI defaultMeaning
searchTermsNoneUp to five keywords; not needed for trending searches
dataTypesinterest_over_time and trending_nowResult types from the table above
geoEmpty (worldwide)Country code for keyword research, such as US or FI
timeframetoday 12-mFor example today 5-y, now 7-d, or YYYY-MM-DD YYYY-MM-DD
startDateNoneExact start date, YYYY-MM-DD. Without an end date, the range runs to today.
endDateNoneOptional end date, on or after startDate. Custom dates override timeframe.
category0Google Trends category ID; 0 means all categories
languageen-USLanguage of Google's labels; results are not translated
regionResolutionCOUNTRYCOUNTRY (worldwide searches; with a country chosen, its regions are used), REGION, CITY or DMA (United States only; other countries fall back to REGION)
trendingGeoUSCountry of the trending feed. It does not follow geo; set it for any other country.
proxyConfigurationResidential proxyYou can set direct or custom routing, or your own proxy URL

The form opens with example values (iced coffee, cold brew, United States, Interest over time). API requests do not get these values; they use the defaults above. A comma separates terms, so "iced coffee, cold brew" is read as two terms, like on Google Trends itself. Only the first five terms are used, and the run says which. Some valid-looking country and time combinations can still fail at Google.

Output reference

Rows come in five shapes, identified by dataType:

TypeFields in addition to dataType
Timelinekeyword, geo, timeframe, date, dateUtc, timestamp, value, isPartial
Related querieskeyword, geo, timeframe, relatedQuery, kind, value, formattedValue, link
Related topicskeyword, geo, timeframe, topicTitle, topicType, kind, value, formattedValue, link
Regionskeyword, geo, timeframe, resolution, geoName, geoCode, value, plus latitude and longitude for cities
Trendinggeo, rank, query, approxTraffic, pubDate, relatedNews

A timeline row from the 2 October 2026 run:

{
  "dataType": "interest_over_time",
  "keyword": "cold brew",
  "geo": "US",
  "timeframe": "today 12-m",
  "date": "Jun 21 – 27, 2026",
  "dateUtc": "2026-06-21",
  "timestamp": "1782000000",
  "value": 100,
  "isPartial": false
}

date is Google's own label. Use dateUtc (YYYY-MM-DD, with the time for 24-hour and 7-day data) to sort or chart; timestamp is the same moment in Unix seconds, as text. isPartial is true for an unfinished interval. Unknown values stay null.

For related data, kind tells top and rising lists apart. Rising values describe growth, not 0-100 interest, and formattedValue keeps labels such as Breakout. link opens the same comparison on Google Trends. For trending items, approxTraffic is Google's rounded label, not an exact count, and relatedNews holds up to five headlines, not articles or links.

Reading the numbers

Interest values are relative scores, not search counts. Zero can mean too little data to report, not zero searches. Requesting 90 days does not guarantee 90 time points, because Google chooses the intervals. Separate runs can be scaled differently, so only compare values from the same run.

Run report

RUN_REPORT in the run's key-value store gives the status of each requested result type, for people and for automation. Each type is marked ok (rows returned), empty (no rows and no detected error), failed (a request or parsing error) or skipped (search terms missing).

A run can succeed while one type is empty or failed, so check the report when completeness matters. If every requested type fails, the run fails.

Pricing

$29 a month to rent it, after a one-day free trial. Cancel at any time; access runs to the end of the month you paid for.

Runs use compute and residential proxy traffic, paid from your Bytewells credit at Bytewells' rates, separately from the rental. Most runs are small: in tests on Bytewells, two terms over 12 months used $0.0015 of credit, and all five result types for two terms used $0.0061.

There is no charge per row, so large comparisons and frequent schedules cost the same rental.

Common questions

Is there an official Google Trends API?

Google offers a separate Trends API alpha through an application process. This Actor reads Google Trends website endpoints and the public trending-searches feed; it does not require access to that alpha.

Is this a pytrends alternative?

Yes. The pytrends repository was archived in April 2025. This Actor handles bounded retries and proxy connections and returns the same kinds of data as rows.

Why does the interest only go up to 100?

Google Trends shows relative interest. 100 is the peak for the terms and period you compared, not 100 searches. Keep terms you want to compare in the same run.

How many terms can I compare?

This Actor supports up to five terms per comparison. If you enter more, only the first five are used.

How much does it cost?

$29 a month, plus the compute and proxy traffic your runs use. See Pricing above.

Support

CleanScrape maintains this Actor for one-off research and recurring workflows. We investigate reported errors, update the Actor when Google changes, and test changes against existing inputs and output formats.

What you seeWhat to try
No related topicsExpected for many terms; check RUN_REPORT.
Keyword results skippedAdd Search terms. Only Trending now works without them.
HTTP 429 or blocked requestsKeep the residential proxy on and try a smaller run later.
More credit used than expectedEach selected result type makes its own requests: keep only the types you need.
Fewer time points than expectedGoogle chose a longer interval for the time range.

If something still looks wrong, email [email protected] with the run ID, a short input example and the result type affected. Never include API tokens or private data.

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.

FAQ

Is this the official Google Trends API?
No. It reads Google Trends website endpoints and the public trending-searches feed. Google offers a separate Trends API alpha through an application process; this Actor does not need access to it.
Why does interest only go up to 100?
Google Trends shows relative interest. 100 is the peak for the terms and period you compared, not 100 searches. Keep terms you want to compare in the same run.
How many terms can I compare?
Up to five per run. If you enter more, only the first five are used, and the run says which.
What does a run cost on top of the rental?
Only the compute and residential proxy traffic it uses, from your Bytewells credit. In tests, two terms over 12 months used $0.0015 and all five result types for two terms used $0.0061.
Is this a pytrends alternative?
Yes. The pytrends repository was archived in April 2025. This Actor handles retries and proxy connections and returns the same kinds of data as rows.