If you pull Google Trends data in Python, you have probably seen this one:

pytrends.exceptions.TooManyRequestsError: The request failed: Google returned a response with code 429 

pytrends is still downloaded more than a million times a month on PyPI, but its repository is archived: nobody fixes it anymore, and Google rate-limits it per IP address. Sleeping between calls, rotating user agents or adding retries= only pushes the problem back.

I wrote pytrends-cloud to keep the pytrends API and swap the transport. Your code stays the same; the requests to Google run in the cloud, where 429s are retried with backoff and rotating proxies instead of crashing your script.

Change one import

# from pytrends.request import TrendReq from pytrends_cloud import TrendReq pytrends = TrendReq(hl="en-US", tz=360) pytrends.build_payload(["python", "javascript", "rust"], timeframe="today 12-m") print(pytrends.interest_over_time().tail(3)) 

Real output, run on 14 November 2026:

 python javascript rust isPartial date 2026-10-25 34 4 15 False 2026-11-01 33 4 16 False 2026-11-08 31 4 15 True 

Same DataFrame as pytrends: one int column per term, isPartial, a date index.

Install

pip install pytrends-cloud export APIFY_TOKEN="apify_api_..." # free account, token under Settings > Integrations 

What works

  • interest_over_time(), including date ranges such as "2024-01-01 2024-03-31"
  • interest_by_region() with COUNTRY, REGION, CITY and DMA, inc_low_vol, inc_geo_code
  • related_queries() and related_topics(), same dict of DataFrames
  • trending_searches(), today_searches()
  • one term compared across countries: build_payload(["pizza"], geo=["US", "IT", "FR"])

suggestions(), categories() and top_charts() raise NotImplementedError for now.

The catch

It is not free and it is not instant:

  • Cost. Each call runs a Google Trends scraper on Apify, billed to your own Apify account: about $0.0085 for interest over time on 3 terms. Apify's free plan includes $5 of usage a month, so roughly 600 calls like that before paying anything. TrendReq(max_charge_usd=0.05) caps any call.
  • Speed. About 5 to 10 seconds per call instead of 1. Results are cached per TrendReq.

If you only make a handful of requests a day from a clean IP, a free library that talks to Google directly (pytrends itself, or trendspy) may be all you need. pytrends-cloud is for the scripts that run on a schedule, from a server or a notebook in the cloud, where a 429 at 3 a.m. means a missing data point.

Links

Written with an AI assistant. Every snippet and number above was run and checked on 14 November 2026.