If you have ever tried to pull Google Trends data with code, you probably know this message:

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

pytrends, the library almost everyone used, was archived on GitHub in April 2025. Nobody ships fixes anymore, and Google rate-limits it quickly: it works for a while, then the 429s start.

Most articles stop at "pytrends is dead, here are some alternatives". This one solves one concrete job instead:

Every morning, put fresh Google Trends numbers for my keywords — plus today's trending searches in my country — into a Google Sheet.

No server, no cron job, no proxy management. Then I'll show the same thing in 10 lines of Python for people who prefer code.

What we will build

A Google Sheet that refreshes itself daily with:

  • Interest over time (0–100) for your keywords, for example chatgpt, claude, gemini
  • Rising related queries — the "Breakout" searches you want to catch early
  • Today's trending searches in a country, with traffic estimates and news links

We'll use the Google Trends Scraper on Apify. Disclosure: I built it, because I needed exactly this and got tired of babysitting 429 errors. It handles retries and rotating IPs, and it only charges for results it actually returns.

Step 1: Run it once

  1. Open the Actor page and click Try for free. The free Apify plan includes $5 of monthly credit, which is enough for this whole tutorial.
  2. In Search terms, add your keywords (up to 5 per comparison group).
  3. Turn on Compare terms on one chart if you want them on the same 0–100 scale, like on the Trends website.
  4. Set Country / region code (e.g. US, GB, DE) and Time range (e.g. Past 30 days).
  5. In Trending now: countries, add US (or any country) to also get today's trending searches.
  6. Click Start.

After a few seconds you get items like this:

{ "type": "search", "searchTerms": ["chatgpt", "claude", "gemini"], "geo": "US", "interestOverTime": [ { "date": "2026-10-19T00:00:00Z", "values": { "chatgpt": 85, "claude": 24, "gemini": 38 } } ], "relatedQueries": { "gemini": { "rising": [{ "query": "gemini argon 4", "value": "Breakout" }] } } } 

You can download this as CSV or Excel straight from the Output tab.

Step 2: Schedule it

  1. Click Actions → Save as a new task, so your keywords and settings are saved.
  2. On the task page, open Schedules and create a schedule, for example every day at 07:00.

From now on it runs every morning by itself.

Step 3: Send results to Google Sheets

On the task, open the Integrations tab and add the Google Sheets integration. Connect your Google account, choose a spreadsheet and map the output. After each scheduled run, the new rows land in your sheet.

That's it: a self-updating trends dashboard, without writing or hosting any code. From there it's easy to add a chart in Sheets, or let Zapier, Make or n8n post the "Breakout" queries to Slack.

The Python version (10 lines)

If you'd rather stay in code, the official apify-client package runs the same scraper and gives you the results. Get your API token from Apify Console → Settings → API & Integrations.

pip install apify-client 
from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("trendcraft/google-trends-scraper").call(run_input={ "searchTerms": ["chatgpt", "claude", "gemini"], "compareTerms": True, "geo": "US", "timeframe": "today 1-m", "trendingNowGeos": ["US"], }) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): if item["type"] == "search": latest = item["interestOverTime"][-1] print(latest["date"], latest["values"]) else: # trendingNow  print(item["rank"], item["title"], item["approxTraffic"]) 

Load it into pandas with pd.DataFrame(...) and you're back to the workflow you had with pytrends, minus the 429s.

When you don't need this

To be honest: if you only check a handful of keywords now and then, a free library may be enough. trendspy and trendspyg are maintained alternatives to pytrends and are worth trying first.

A hosted scraper makes sense when:

  • the job has to run every day without failing (reports, dashboards, alerts),
  • you track hundreds of keywords, so rate limits hit you constantly,
  • you want results in Sheets, Zapier, Make or n8n without running a server.

Cost

You pay per result: one result per keyword (or per comparison group of up to 5 keywords) and one per trending search. Current pricing is on the Actor's Pricing tab. Example: a daily run with 5 compared keywords (1 result) plus one country's trending list (about 20 results) is roughly 630 results a month, which is about $3 at $5 per 1,000 results, so it fits inside the free $5 monthly credit. Skip the trending list and it drops to cents.

If you try it and something breaks, or you need a field that isn't there, open an issue on the Actor's Issues tab. I read them all.

This post was drafted with AI assistance; input names and output fields were checked against the Actor itself.