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()withCOUNTRY,REGION,CITYandDMA,inc_low_vol,inc_geo_code -
related_queries()andrelated_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
- Code and issues: https://github.com/morvanvivien/pytrends-cloud
- The scraper behind it, usable without Python: https://apify.com/bibian/google-trends-scraper
Written with an AI assistant. Every snippet and number above was run and checked on 14 November 2026.